feat: 修改意图识别节点
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user