feat: 新增需求理解并实现human in loop
This commit is contained in:
@@ -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,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user