gengx
This commit is contained in:
+26
-1
@@ -66,11 +66,25 @@ AI_TIMEOUT = 120 # 请求超时秒数(本地模型推理较慢,给
|
||||
|
||||
# ── MCP 工具增强(自动回复时调用外部 MCP Server)──
|
||||
# True → 回复前连接 AI_MCP_SERVERS,把它们的 tools 交给模型按需调用,再生成最终回复
|
||||
# ── 多模型编排 ────────────────────────────────────────────────────────────────
|
||||
# 裁判模型:对生成出来的回复打一个绝对质量分和风险等级。
|
||||
# shadow 照常发主模型的回复,评分只记录,不改变任何行为(默认)
|
||||
# score_only 用评分和风险做路由(低分/高风险转审核),不做二选一
|
||||
# arbitrate 完整的 best-of-N,按裁判选出的赢家发送
|
||||
# 默认 shadow:先量出现有回复的真实水平,再决定要不要花第二份钱。
|
||||
AI_JUDGE_ENABLED = False
|
||||
AI_JUDGE_MODE = "shadow"
|
||||
|
||||
AI_MCP_ENABLED = False
|
||||
AI_MCP_MAX_ROUNDS = 5 # 单次回复最多工具调用轮数
|
||||
# 服务器列表示例见 mcp_bridge.py 文件头注释;也可在 GUI「MCP 服务器」里编辑
|
||||
AI_MCP_SERVERS: list = []
|
||||
|
||||
# 选择性审核:命中下面任意一条规则的关键词,这一条回复才会停下来等人工确认,
|
||||
# 没命中的照常自动发送。由后台「桌面端 → 客户端配置」统一下发,本机不编辑。
|
||||
# 形状:[{"id": str, "label": str, "keywords": [str, ...], "enabled": bool}, ...]
|
||||
AI_REVIEW_RULES: list = []
|
||||
|
||||
AI_MCP_PROMPT = """
|
||||
【外部工具|已开启】
|
||||
- 你可以使用系统提供的工具查询业务信息(如文档、挂号、库存、订单等)。
|
||||
@@ -241,6 +255,8 @@ CONFIGURABLE_KEYS = [
|
||||
"AI_COUNTER_INSULT_ENABLED", "AI_AGENT_NAME", "AI_HOSPITAL_NAME",
|
||||
"AI_MAX_TOKENS", "AI_TEMPERATURE", "AI_TIMEOUT",
|
||||
"AI_MCP_ENABLED", "AI_MCP_MAX_ROUNDS", "AI_MCP_SERVERS",
|
||||
"AI_JUDGE_ENABLED", "AI_JUDGE_MODE",
|
||||
"AI_REVIEW_RULES",
|
||||
]
|
||||
|
||||
|
||||
@@ -310,6 +326,12 @@ def apply_settings(settings: dict, *, persist: bool = True) -> dict:
|
||||
applied = {}
|
||||
for key in CONFIGURABLE_KEYS:
|
||||
if key in settings:
|
||||
# null 表示"后台没有这一项",不是"把它设成空"。直接赋值的话,本机
|
||||
# 一个好好的布尔开关会变成 None,然后一路传下去:接口按 bool 校验
|
||||
# 时报 422,日志里只有一句"Input should be a valid boolean",看不出
|
||||
# 是配置文件里躺着个 null。而且它会自我延续——写回文件、下次再读进来。
|
||||
if settings[key] is None:
|
||||
continue
|
||||
if key == "AI_AGENT_NAME":
|
||||
AI_CLOUD_AGENT_NAME = str(settings[key] or "").strip() or "客服"
|
||||
else:
|
||||
@@ -335,7 +357,10 @@ def load_settings():
|
||||
g = globals()
|
||||
if isinstance(data, dict):
|
||||
for k in CONFIGURABLE_KEYS:
|
||||
if k in data:
|
||||
# null 是"没设",不是一个值。拿它盖掉本文件里的默认值,一个好好的
|
||||
# 布尔开关会变成 None——`if not AI_UI_GUARD_ENABLED` 于是永远成立,
|
||||
# 那条识别升级链被静默关掉,表现成"未读一直读不出昵称"。
|
||||
if k in data and data[k] is not None:
|
||||
g[k] = data[k]
|
||||
AI_CLOUD_AGENT_NAME = str(AI_AGENT_NAME or "").strip() or "客服"
|
||||
AI_LOCAL_AGENT_NAME = _read_agent_name_override()
|
||||
|
||||
Reference in New Issue
Block a user