RemoteGraph 是一个客户端接口,允许您像操作本地图一样与您的部署进行交互。它提供了与 CompiledGraph 相同的 API,这意味着您可以在开发和生产环境中使用相同的方法(invoke()、stream()、get_state() 等)。本页描述了如何初始化 RemoteGraph 并与之交互。
RemoteGraph 适用于以下场景:
- 开发与部署分离:使用
CompiledGraph在本地构建和测试图,将其部署到 LangSmith,然后在生产环境中使用RemoteGraph调用它,同时使用相同的 API 接口。 - 线程级持久化:通过线程 ID 持久化和获取跨调用的对话状态。
- 子图嵌入:通过将
RemoteGraph作为子图嵌入到另一个图中,为多智能体工作流组合模块化图。 - 可重用工作流:将部署的图用作节点或工具,以便您可以重用和暴露复杂逻辑。
前提条件
在开始使用RemoteGraph 之前,请确保您已具备:
- 访问 LangSmith 的权限,您的图在此开发和管理。
- 一个正在运行的 Agent Server,它托管您部署的图以供远程交互。
初始化图
初始化RemoteGraph 时,您必须始终指定:
name:您要交互的图的名称或助手 ID。如果指定图名称,将使用默认助手。如果指定助手 ID,将使用该特定助手。图名称与您在部署的langgraph.json配置文件中使用的名称相同。api_key:有效的 LangSmith API 密钥。您可以将其设置为环境变量(LANGSMITH_API_KEY)或直接在api_key参数中传递。如果LangGraphClient/SyncLangGraphClient是使用api_key参数初始化的,您也可以在client/sync_client参数中提供 API 密钥。
url:您要交互的部署的 URL。如果传递url参数,同步和异步客户端都将使用提供的 URL、标头(如果提供)和默认配置值(例如超时)创建。client:用于异步与部署交互的LangGraphClient实例(例如,使用.astream()、.ainvoke()、.aget_state()、.aupdate_state())。sync_client:用于同步与部署交互的SyncLangGraphClient实例(例如,使用.stream()、.invoke()、.get_state()、.update_state())。
如果同时传递了
client 或 sync_client 以及 url 参数,它们将优先于 url
参数。如果未提供 client / sync_client / url
参数中的任何一个,RemoteGraph 将在运行时引发 ValueError。使用 URL
使用客户端
调用图
RemoteGraph 实现了与 CompiledGraph 相同的 Runnable 接口,因此您可以像使用编译后的图一样使用它。它支持全套标准方法,包括 .invoke()、.stream()、.get_state() 和 .update_state(),以及它们的异步变体。
异步
要异步使用图,必须在初始化
RemoteGraph 时提供 url 或 client。同步
要同步使用图,必须在初始化
RemoteGraph 时提供 url 或 sync_client。在线程级持久化状态
默认情况下,图运行(例如,使用.invoke() 或 .stream() 进行的调用)是无状态的,这意味着中间检查点和最终状态在运行后不会被持久化。
如果您想保留运行的输出——例如,以支持Human in the Loop的工作流——您可以创建一个线程并通过 config 参数传递其 ID。这与使用常规编译图的方式相同:
用作子图
如果您需要将
checkpointer 与包含 RemoteGraph
子图节点的图一起使用,请确保使用 UUID 作为线程 ID。RemoteGraph 实例作为子图节点。这允许模块化、可扩展的工作流,其中不同的职责被分配到不同的图中。
RemoteGraph 暴露了与常规 CompiledGraph 相同的接口,因此您可以直接将其用作另一个图内的子图。例如:
将这些文档通过 MCP 连接到 Claude、VSCode
等,以获取实时答案。

