Files
my-v0-server/app/processor/nodes/clarify_node.py
T
2026-09-22 23:37:39 +08:00

74 lines
2.2 KiB
Python

"""整理澄清问题,等待用户补充"""
from langchain_core.messages import HumanMessage, SystemMessage
from app.clients.llm import get_llm
from app.processor.base import BaseNode
from app.processor.state import QueryState
from app.prompt.clarify import CLARIFY_SYSTEM_PROMPT
from app.schemas.clarification import Clarification
class ClarifyNode(BaseNode):
name = "clarify_node"
async def process(self, state: QueryState) -> QueryState:
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
)
return {**state, "clarification": clarification}
if __name__ == "__main__":
import asyncio
import json
from pydantic import BaseModel
from app.clients.decision import close_decision_engine
from app.processor.graph import query_app
async def main():
# 修改请求,通过完整流程测试澄清分支
state: QueryState = {
"request": {
"prompt": "这个图不太对",
"screen": {"canvas": {"width": 1920, "height": 1080}, "nodes": []},
}
}
try:
final_state = await query_app.ainvoke(state)
finally:
await close_decision_engine()
print(
json.dumps(
{
key: value.model_dump(mode="json")
if isinstance(value, BaseModel)
else value
for key, value in final_state.items()
},
ensure_ascii=False,
indent=2,
)
)
asyncio.run(main())