feat(admin): Angel(Agnes) provider 凭据 DB 化 + 安全 key_set 字段
- llm_settings.agnes_api_key TEXT (DB key 优先,.env 兜底) - llm_settings.agnes_base_url_override VARCHAR (留空 = 用 .env) - alembic 0005_agnes_key 迁移 - LlmSettingOut.agnes_api_key_set (bool) 替代直接回传 key - LlmSettingUpdate 加 agnes_api_key / agnes_base_url_override(可空可清空) - providers.get_angel_client 改用 DB key 优先 - enrichment.py 改为 get_angel_client() 工厂调用(热改 key 不需重启) - /admin/llm/settings/test 走 get_angel_client(测的是 DB 里的 key) - 前端 AdminLlmSettings 在'总开关 + 模型'卡里加 Angel api_key 输入框 + base_url 覆盖 + 已配置/未配置指示灯 + 清空按钮 - 顶部'测连接'按钮复用(测的就是 Angel)
This commit is contained in:
@@ -27,11 +27,29 @@ PROVIDER_MEITUAN = "meituan" # 美团大模型(LongCat,OpenAI 兼容)
|
||||
|
||||
|
||||
def get_angel_client(setting: LlmSetting) -> LlmClient:
|
||||
"""Agnes 客户端 — 与 LlmClient 单例行为完全一致。"""
|
||||
"""Agnes(Angel)客户端。
|
||||
|
||||
凭据优先级(高 → 低):
|
||||
1. llm_settings.agnes_api_key(DB 里存的 key,UI 可改)
|
||||
2. .env AGNES_API_KEY
|
||||
3. .env 任意一个都不配 = LlmClient.is_configured() = False
|
||||
|
||||
base_url 优先级:
|
||||
1. llm_settings.agnes_base_url_override(DB 里存的)
|
||||
2. .env AGNES_BASE_URL
|
||||
"""
|
||||
from app.config import settings as app_settings
|
||||
|
||||
api_key = (getattr(setting, "agnes_api_key", "") or app_settings.agnes_api_key) or ""
|
||||
base_url = (
|
||||
getattr(setting, "agnes_base_url_override", "") or app_settings.agnes_base_url
|
||||
).rstrip("/")
|
||||
return LlmClient(
|
||||
chat_model=setting.chat_model,
|
||||
image_model=setting.image_model,
|
||||
interval_sec=setting.interval_sec,
|
||||
base_url=base_url or "https://apihub.agnes-ai.com/v1",
|
||||
api_key=api_key,
|
||||
chat_model=setting.chat_model or "agnes-2.0-flash",
|
||||
image_model=setting.image_model or "agnes-image-2.1-flash",
|
||||
interval_sec=setting.interval_sec or 2.0,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user