From 0af2455eaf117389065ff942de1e30e77c3c7e74 Mon Sep 17 00:00:00 2001 From: Marcus <1922576605@qq.com> Date: Tue, 22 Sep 2026 21:37:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=84=8F=E5=9B=BE?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/processor/nodes/requirement_node.py | 31 ++++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/app/processor/nodes/requirement_node.py b/app/processor/nodes/requirement_node.py index 89b475f..10026a8 100644 --- a/app/processor/nodes/requirement_node.py +++ b/app/processor/nodes/requirement_node.py @@ -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(