From d151ea76d5601087cecc6affd0e86d3d76576a72 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 10 Sep 2026 16:50:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20LLM=E8=B0=83=E7=94=A8org=5Fid?= =?UTF-8?q?=E5=8F=AF=E9=85=8D(params=20ticket=5Fagent=5Forg=5Fid)=E2=80=94?= =?UTF-8?q?=E2=80=94'0'=E6=9C=BA=E6=9E=84=E6=97=A0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=BD=91=E5=85=B3=E7=AD=96=E7=95=A5=E8=87=B4=5F=5FLEGACY=5F=5F?= =?UTF-8?q?=E9=99=8D=E7=BA=A7=E8=BD=AC=E4=BA=BA=E5=B7=A5=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E6=B5=8B=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ticket/agent.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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]