diff --git a/ticket/agent.py b/ticket/agent.py index f1c715a..59c4eac 100644 --- a/ticket/agent.py +++ b/ticket/agent.py @@ -6,7 +6,9 @@ 原子认领后检索知识库+历史工单,LLM 裁决能否回答。 - 知识库:'0' 机构(平台级)KB —— 复用 pipeline_service.rag_client 的 API 模式 (dapi Bearer key 按平台账号发放,rag 侧机构隔离自动只见 org_id='0' 的 KB)。 -- LLM:pipeline_service.llm_bridge.llm_call(内部 token + 门禁链 + 记账,org_id='0')。 +- LLM:pipeline_service.llm_bridge.llm_call(内部 token + 门禁链 + 记账)。调用 org_id + 默认 '0',可由 params ticket_agent_org_id 指定为任一已在模型网关配好容错策略的机构 + ('0' 机构未配策略时 llm_bridge 返回 __LEGACY__,agent 走基础设施故障降级→转人工)。 - 语义判断铁律:「能否回答」由 LLM 裁决(严格 JSON),禁关键词匹配。 - 硬门禁:reply 空或 <20 字符 → 视为答不了转人工(宁转人工不给空话)。 - 基础设施故障(LLM/RAG 调用异常、JSON 解析失败)≠ 答不了:fail_rounds+1 回退 @@ -144,11 +146,19 @@ async def _llm_judge(title, description, category, kb_hits, history): prompt = '%s\n\n## 客户工单\n标题:%s\n分类:%s\n描述:%s\n\n请判断并输出 JSON。' % ( '\n'.join(ctx_parts), title, category, description[:1500]) + # LLM 调用 org_id:模型网关策略按机构选择+记账。默认 '0'(平台机构语义), + # 但 '0' 机构须在模型网关配好容错策略;未配则 llm_bridge 返回 __LEGACY__ 报错 + # → agent 走"基础设施故障"降级(fail_rounds→转人工)。运维可设 params + # ticket_agent_org_id 指向任一已配策略的机构(2026-09-10 部署实测:'0' 无策略)。 + db = core._get_db() + async with db.sqlorContext(core._dbname()) as sor: + llm_org_id = await core._get_param(sor, 'ticket_agent_org_id', '0') + try: from pipeline_service.llm_bridge import llm_call raw = await llm_call( _JUDGE_SYSTEM + '\n\n' + prompt, - org_id='0', user_id='', purpose='utility', timeout=120) + org_id=llm_org_id, user_id='', purpose='utility', timeout=120) except Exception as e: return False, 'llm_call 异常: %s' % str(e)[:200]