Agent 与工具调用1975 字
LangGraph工作流人机交互
·全库 330 / 611
《LangGraph工作流人机交互》共 0.2 万字,通篇围绕 LangChain、工作流、工具调用、上下文 展开,归在「Agent 与工具调用」这一层。
覆盖LangChain工作流工具调用上下文合规场景
适合要让 AI 真的去干活、不只是陪人聊天的人
目录骨架(2 节)
- Human-in-the-loop(人机交互)
- 添加断点
目录 · 5 节
- Human-in-the-loop(人机交互)
- 使用案例[](https://www.aidoczh.com/langgraph/concepts/human_in_the_loop/#_2)
- interrupt[](https://www.aidoczh.com/langgraph/concepts/human_in_the_loop/#interrupt)
- 要求[](https://www.aidoczh.com/langgraph/concepts/human_in_the_loop/#_3)
- 设计模式[](https://www.aidoczh.com/langgraph/concepts/human_in_the_loop/#_4)
示例代码
注:将ppt后缀名改为zip后解压
python版本:3.12.4
Human-in-the-loop(人机交互)
人机交互(或称“在循环中”)工作流将人类输入整合到自动化过程中,在关键阶段允许决策、验证或修正。这在基于 LLM 的应用中尤其有用,因为基础模型可能会产生偶尔的不准确性。在合规、决策或内容生成等低误差容忍场景中,人类的参与通过允许审查、修正或覆盖模型输出来确保可靠性。
使用案例
基于 LLM 应用中的人机交互工作流的关键使用案例包括:
- 🛠️ 审查工具调用:人类可以在工具执行之前审查、编辑或批准 LLM 请求的工具调用。
- ✅ 验证 LLM 输出:人类可以审查、编辑或批准 LLM 生成的内容。
- 💡 提供上下文:使 LLM 能够明确请求人类输入以进行澄清或提供额外细节,或支持多轮对话。
interrupt
interrupt函数 在 LangGraph 中通过在特定节点暂停图形、向人类展示信息以及使用他们的输入恢复图形,从而启用人工干预工作流。该函数对于批准、编辑或收集额外输入等任务非常有用。interrupt函数 与 Command 对象结合使用,以人类提供的值恢复图形。
from langgraph.types import interrupt
def human_node(state: State):
value = interrupt(
# 任何可序列化为 JSON 的值,供人类查看。
# 例如,一个问题、一段文本或状态中的一组键
{
"text_to_revise": state["some_text"]
}
)
# 使用人类的输入更新状态或根据输入调整图形。
return {
"some_text": value
}
graph = graph_builder.compile(
checkpointer=checkpointer # `interrupt` 工作所需
)
# 运行图形直到遇到中断
thread_config = {"configurable": {"thread_id": "some_id"}}
graph.invoke(some_input, config=thread_config)
# 用人类的输入恢复图形
graph.invoke(Command(resume=value_from_human), config=thread_config)
{'some_text': '编辑后的文本'}
Warning
中断非常强大且易于使用。然而,尽管它们在开发者体验上可能类似于 Python 的 input() 函数,但重要的是要注意,它们不会自动从中断点恢复执行。相反,它们会重新运行使用中断的整个节点。 因此,中断通常最好放置在节点的开头或一个专用的节点中。请阅读 从中断恢复 部分以获取更多细节。
完整代码
要求
要在图形中使用 interrupt,您需要:
- 指定一个检查点,以在每一步后保存图形状态。
- 在适当位置调用 interrupt()。有关示例,请参见 设计模式 部分。
- 使用 线程 ID 运行图形,直到触发 interrupt。
- 使用 invoke/ainvoke/stream/astream 恢复执行(见 Command原语)。
设计模式
您通常可以采取三种不同的行动来实现人工干预工作流:
