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.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(
|
||||||
|
|||||||
Reference in New Issue
Block a user