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