Skip to main content
函数式 API 允许您在对现有代码仅做最小改动的情况下,为您的应用程序添加 LangGraph 的核心功能 —— 持久化记忆人机协同流式处理
有关函数式 API 的概念性信息,请参阅 函数式 API

创建简单的工作流

定义 entrypoint 时,输入仅限于函数的第一个参数。若要传递多个输入,可以使用字典。
本示例展示了如何在语法上使用 @task@entrypoint 装饰器。 由于提供了检查点器,工作流的结果将被持久化存储在检查点器中。

并行执行

可以通过并发调用任务并等待结果来实现并行执行。这对于提高 I/O 密集型任务(例如调用 LLM 的 API)的性能非常有用。
本示例展示了如何使用 @task 并行运行多个 LLM 调用。每个调用生成关于不同主题的段落,并将结果合并为单一文本输出。
此示例使用 LangGraph 的并发模型来提高执行时间,特别是在任务涉及 I/O(如 LLM 补全)时。

调用图

函数式 API图 API 可在同一应用程序中结合使用,因为它们共享相同的底层运行时。

调用其他入口点

您可以在 入口点任务 内部调用其他 入口点

流式处理

函数式 API 使用与 图 API 相同的流式处理机制。更多详细信息请参阅 流式处理指南 部分。 使用流式 API 同时流式传输更新和自定义数据的示例。
  1. langgraph.config 导入 get_stream_writer
  2. 在入口点内获取流式写入器实例。
  3. 在计算开始前发送自定义数据。
  4. 在计算结果后发送另一条自定义消息。
  5. 使用 .stream() 处理流式输出。
  6. 指定要使用的流式模式。
Python < 3.11 的异步支持 如果使用 Python < 3.11 并编写异步代码,get_stream_writer() 将无法工作。请直接使用 StreamWriter 类。更多详情请参阅 Python < 3.11 的异步支持

重试策略

缓存任务

  1. ttl 以秒为单位指定。缓存将在该时间后失效。

错误后恢复

当我们恢复执行时,无需重新运行 slow_task,因为其结果已保存在检查点中。

人机协同

函数式 API 使用 interrupt 函数和 Command 原语支持 人机协同 工作流。

基本人机协同工作流

我们将创建三个 任务
  1. 追加 "bar"
  2. 暂停以等待人工输入。恢复时,追加人工输入。
  3. 追加 "qux"
:以下是你提供的英文技术文档的中文翻译:
我们现在可以使用 entrypoint 将这些任务组合起来:
interrupt() 在任务内部被调用,允许人工审查并编辑前一个任务的输出。先前任务的结果——例如 step_1 —— 会被持久化保存,因此在 interrupt 后不会再次执行。 让我们传入一个查询字符串:
注意,在 step_1 之后我们因 interrupt 而暂停。中断会提供恢复运行的指令。要恢复运行,我们需发送一个包含 human_feedback 任务所需数据的 Command
恢复后,程序将继续执行剩余步骤并正常终止。

审查工具调用

要在执行前审查工具调用,我们添加一个调用 interruptreview_tool_call 函数。调用此函数时,执行将暂停,直到我们发出恢复命令。 给定一个工具调用,我们的函数将 interrupt 以供人工审查。此时我们可以选择:
  • 接受该工具调用
  • 修改工具调用后继续
  • 生成自定义工具消息(例如,指示模型重新格式化其工具调用)
我们现在可以更新 entrypoint,以审查生成的工具调用。如果工具调用被接受或修改,我们将如前所述执行;否则,仅追加人工提供的 ToolMessage。先前任务的结果——例如初始模型调用——会被持久化,因此在 interrupt 后不会再次执行。

短期记忆

短期记忆允许在同一个 thread id 的不同 调用 之间存储信息。更多详情请参阅 短期记忆

管理检查点

你可以查看和删除检查点器存储的信息。

查看线程状态

查看线程历史

解耦返回值与保存值

使用 entrypoint.final 可以解耦返回给调用者的内容与保存到检查点的内容。这在以下场景中很有用:
  • 你想返回一个计算结果(如摘要或状态),但为下次调用保存不同的内部值。
  • 你需要控制下次运行时传递给 previous 参数的内容。

聊天机器人示例

以下是一个使用函数式 API 和 InMemorySaver 检查点器的简单聊天机器人示例。机器人能够记住之前的对话并从中断处继续。

长期记忆

长期记忆 允许在不同的 thread id 之间存储信息。这在一次对话中学习某个用户的信息并在另一次对话中使用时非常有用。

工作流

与其他库集成