概述

LangChain 的 create_agent 底层运行于 LangGraph 的运行时之上。 LangGraph 暴露了一个 Runtime 对象,包含以下信息:
  1. 上下文:静态信息,如用户ID、数据库连接或其他依赖项,用于智能体调用。
  2. 存储:一个 BaseStore 实例,用于 长期记忆。
  3. 流写入器:一个对象,用于通过 "custom" 流模式传输信息。
  4. 执行信息:当前执行的标识和重试信息(线程ID、运行ID、尝试次数)。
  5. 服务器信息:当运行于 LangGraph Server 时,服务器特定的元数据(助手ID、图ID、已认证用户)。
运行时上下文为您的工具和中间件提供了 依赖注入。您可以在调用智能体时注入运行时依赖项(如数据库连接、用户ID或配置),而不是硬编码值或使用全局状态。这使得您的工具更具可测试性、可重用性和灵活性。
您可以在 工具内部 和 中间件内部 访问运行时信息。

访问

使用 create_agent 创建智能体时,您可以指定 context_schema 来定义存储在智能体 Runtime 中的 context 的结构。 调用智能体时,传入带有本次运行相关配置的 context 参数:

工具内部

您可以在工具内部访问运行时信息,以便:
  • 访问上下文
  • 读取或写入长期记忆
  • 写入 自定义流(例如,工具进度/更新)
在工具内部使用 ToolRuntime 参数来访问 Runtime 对象。

工具内部的执行信息与服务器信息

访问执行标识(线程ID、运行ID)使用 runtime.execution_info,访问服务器特定元数据(助手ID、已认证用户)使用 runtime.server_info(当运行于 LangGraph Server 时):
当不运行于 LangGraph Server 时(例如,在本地开发期间),server_info 为 None。
需要 deepagents>=0.5.0(或 langgraph>=1.1.5)才能使用 runtime.execution_info 和 runtime.server_info。

中间件内部

您可以在中间件中访问运行时信息,以创建动态提示、修改消息或根据用户上下文控制智能体行为。 在 节点式钩子 内部,使用 Runtime 参数来访问 Runtime 对象。对于 包装式钩子,Runtime 对象在 ModelRequest 参数内部可用。

中间件内部的执行信息与服务器信息

中间件钩子也可以访问 runtime.execution_info 和 runtime.server_info:
需要 deepagents>=0.5.0(或 langgraph>=1.1.5)。