for step, state in enumerate(graph.stream(initial_state, stream_mode="values")):
print(f"\n=== 步骤 {step + 1} ===")
print(f"当前节点:{graph.get_current_node()}")
print(f"用户问题:{state.question}")
print(f"初步回答:{state.initial_answer}")
print(f"回答是否完整:{state.is_complete}")
print(f"最终回答:{state.final_answer}")
# 输出最终结果
final_result = graph.invoke(initial_state)
print("\n=== 最终结果 ===")
print(f"用户问题:{final_result.question}")
print(f"最终回答:{final_result.final_answer}")
复制代码
3.2 代码解析
以上代码实现了一个完整的“提问-生成-校验-完善”闭环工作流,关键细节解析如下:
State 定义:用 Pydantic 模型 QAState 定义全局状态,明确存储用户问题、初步回答、完整性标记、最终回答,确保数据结构清晰,便于节点之间的读写。 节点逻辑:每个节点都是一个函数,接收 State 作为输入,返回修改后的 State 片段(字典格式),LangGraph 会自动合并这些片段,更新全局状态。 边的配置: