Agent 与工具调用1975 字

LangGraph工作流人机交互

·全库 330 / 611

《LangGraph工作流人机交互》共 0.2 万字,通篇围绕 LangChain、工作流、工具调用、上下文 展开,归在「Agent 与工具调用」这一层。

覆盖LangChain工作流工具调用上下文合规场景

适合要让 AI 真的去干活、不只是陪人聊天的人

目录骨架(2 节)
  1. Human-in-the-loop(人机交互)
  2. 添加断点
目录 · 5 节

示例代码

注:将ppt后缀名改为zip后解压

python版本:3.12.4

Human-in-the-loop(人机交互)

人机交互(或称“在循环中”)工作流将人类输入整合到自动化过程中,在关键阶段允许决策、验证或修正。这在基于 LLM 的应用中尤其有用,因为基础模型可能会产生偶尔的不准确性。在合规、决策或内容生成等低误差容忍场景中,人类的参与通过允许审查、修正或覆盖模型输出来确保可靠性。

使用案例​

基于 LLM 应用中的人机交互工作流的关键使用案例包括:

  1. 🛠️ 审查工具调用:人类可以在工具执行之前审查、编辑或批准 LLM 请求的工具调用。
  2. ✅ 验证 LLM 输出:人类可以审查、编辑或批准 LLM 生成的内容。
  3. 💡 提供上下文:使 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,您需要:

  1. 指定一个检查点,以在每一步后保存图形状态。
  2. 在适当位置调用 interrupt()。有关示例,请参见 设计模式 部分。
  3. 使用 线程 ID 运行图形,直到触发 interrupt。
  4. 使用 invoke/ainvoke/stream/astream 恢复执行(见 Command原语)。

设计模式​

您通常可以采取三种不同的行动来实现人工干预工作流:

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求