feat: 新增需求理解并实现human in loop

This commit is contained in:
2026-09-23 11:20:02 +08:00
parent 006112600a
commit dd7138598d
11 changed files with 167 additions and 35 deletions
+20 -18
View File
@@ -1,5 +1,7 @@
"""整理澄清问题,等待用户补充"""
import json
from langchain_core.messages import HumanMessage, SystemMessage
from app.clients.llm import get_llm
@@ -16,23 +18,20 @@ class ClarifyNode(BaseNode):
intent = state["intent"]
print(intent)
print("=================")
if intent == "unclear":
llm = get_llm(Clarification)
clarification = await llm.ainvoke(
[
SystemMessage(content=CLARIFY_SYSTEM_PROMPT),
HumanMessage(
content=state["input_context"].model_dump_json(
exclude_unset=True
)
),
]
)
else:
# 需求理解已经给出问题,直接复用
clarification = Clarification(
question=state["requirement"].clarification_question
)
payload = {
"intent": intent,
"input_context": state["input_context"].model_dump(mode="json"),
}
if intent != "unclear":
# 以需求节点的问题为依据补齐选项,不重新判断意图
payload["requirement"] = state["requirement"].model_dump(mode="json")
llm = get_llm(Clarification)
clarification = await llm.ainvoke(
[
SystemMessage(content=CLARIFY_SYSTEM_PROMPT),
HumanMessage(content=json.dumps(payload, ensure_ascii=False)),
]
)
return {**state, "clarification": clarification}
@@ -54,7 +53,9 @@ if __name__ == "__main__":
}
}
try:
final_state = await query_app.ainvoke(state)
final_state = await query_app.ainvoke(
state, config={"configurable": {"thread_id": "clarify-test"}}
)
finally:
await close_decision_engine()
print(
@@ -67,6 +68,7 @@ if __name__ == "__main__":
},
ensure_ascii=False,
indent=2,
default=str,
)
)