feat:意图识别优化

This commit is contained in:
2026-09-30 08:57:39 -07:00
parent 4d7c91cc41
commit 3e88b339a0
21 changed files with 443 additions and 88 deletions
+11 -6
View File
@@ -8,6 +8,10 @@ from app.clients.llm import get_llm
from app.processor.base import BaseNode
from app.processor.state import QueryState
from app.prompt.planner import PLANNER_SYSTEM_PROMPT
from app.schemas.capabilities import (
RESOURCE_FALLBACK_ASSUMPTION,
RESOURCE_QUERY_SUPPORTED,
)
from app.schemas.screen_plan import ScreenPlan
# 规划输出未通过校验时,带着错误让模型重新规划的最大次数
@@ -69,12 +73,13 @@ class PlannerNode(BaseNode):
feedback = f"上一次输出:\n{plan.model_dump_json()}\n\n{feedback}"
messages = [*messages, HumanMessage(content=feedback)]
# 组件目录已在进入规划前完整获取,component 类资源需求不可能再有补充来源
# 保留会让动作阶段误判为“待获取资源”而失败,能力缺口应由 assumptions 表达
# TODO 接入数据源和 RAG 后,仅保留目录之外的资源需求
plan.resource_needs = [
need for need in plan.resource_needs if need.kind != "component"
]
# 资源查询接入前没有补充来源,保留会让动作阶段误判为“待获取资源”而失败
if not RESOURCE_QUERY_SUPPORTED and plan.resource_needs:
self.logger.info(
f"资源查询未接入,改用默认配置: {[need.description for need in plan.resource_needs]}"
)
plan.resource_needs = []
plan.assumptions.append(RESOURCE_FALLBACK_ASSUMPTION)
# 合并需求约束和规划约束,按首次出现顺序去重,保留需求约束在前
plan.constraints = list(