feat: 修改意图识别节点

This commit is contained in:
2026-09-22 21:37:24 +08:00
parent 44d1388c78
commit 0af2455eaf
+17 -14
View File
@@ -1,6 +1,6 @@
"""需求理解节点"""
"""意图识别节点"""
from app.clients.decision import DecisionEngine, get_decision_engine
from app.clients.decision import close_decision_engine, get_decision_engine
from app.processor.base import BaseNode
from app.processor.state import QueryState
from app.prompt.requirement import build_intent_question
@@ -12,10 +12,6 @@ from app.schemas.input_context import InputContext
class RequirementNode(BaseNode):
name = "requirement_node"
def __init__(self, *, decision_engine: DecisionEngine | None = None):
super().__init__()
self._decision_engine = decision_engine
@staticmethod
def build_decision_state(context: InputContext) -> JsonObject:
"""只整理判断意图需要的摘要,完整 Screen 仍保留在输入上下文"""
@@ -66,18 +62,23 @@ class RequirementNode(BaseNode):
}
async def process(self, state: QueryState) -> QueryState:
context = state["input_context"]
# 构建jev请求
request = DecisionRequest(
# 获取 InputNode 整理好的完整上下文
state=self.build_decision_state(state["input_context"]),
# 将 InputNode 的上下文整理为意图判断摘要
state=self.build_decision_state(context),
decisions={"intent": build_intent_question()},
)
# 调用 jev
engine = self._decision_engine or get_decision_engine()
decision = await engine.run(request)
decision_engine = get_decision_engine()
# 获取 jev 结果
decision_res = await decision_engine.run(request)
updated_state: QueryState = {**state, "intent_decision": decision}
updated_state: QueryState = {
**state,
"intent_decision": decision_res,
}
return updated_state
@@ -110,11 +111,13 @@ if __name__ == "__main__":
"context": {"selected_node_ids": ["sales-chart"]},
}
}
# 2. 先校验输入,再真实调用 Jev,退出时关闭连接
# 2. 先校验输入,再真实调用 Jev,退出时关闭 Jev 连接
state = InputNode().process(state)
async with DecisionEngine() as engine:
node = RequirementNode(decision_engine=engine)
node = RequirementNode()
try:
final_state = await node.process(state)
finally:
await close_decision_engine()
# 3. 打印完整 state,包含选项、概率、置信度和调用信息
print(
json.dumps(