Skip to main content
你可能需要为新的运行使用不同配置重建图。例如,你可能希望根据用户的凭证加载不同的工具。本指南将展示如何使用 ServerRuntime 来实现这一点。
在大多数情况下,自定义最好通过在各个节点内根据配置进行条件判断来处理,而不是动态改变整个图结构。这使得测试和管理更加容易。

前置条件

  • 请确保首先查看此操作指南以设置你的应用进行部署。
  • ServerRuntime 需要 langgraph-api >= 0.7.31langgraph-sdk >= 0.3.5。在此之前,图工厂函数只接受单个 config: RunnableConfig 参数。

定义图

假设你有一个应用,其中包含一个简单的图,该图调用一个 LLM 并将响应返回给用户。应用文件目录结构如下:
其中图定义在 agents.py 中。

不重建

部署你的 Agent Server 最常见的方法是引用一个在文件顶层定义的已编译图实例。示例如下:
要让服务器知道你的图,你需要在 LangGraph API 配置(langgraph.json)中指定包含 CompiledStateGraph 实例的变量路径,例如:

重建

要在每次新运行时重建你的图,请提供一个返回(或产出)图的工厂函数。该工厂函数可以选择性地接受一个 ServerRuntime 参数或一个 RunnableConfig。服务器会检查你函数的类型注解以确定注入哪些参数,因此请确保包含正确的类型提示。服务器的队列工作进程在需要处理运行时会调用你的工厂函数。该函数也会在某些其他端点被调用,以更新状态、读取状态或获取助手模式。ServerRuntime 会告诉你哪个上下文触发了调用。
ServerRuntime 处于测试阶段,未来版本可能会更改。

简单工厂函数

最简单的形式是一个返回已编译图的普通 async def 函数:

上下文管理器工厂函数

如果你需要设置和清理资源(数据库连接、加载 MCP 工具等),请使用异步上下文管理器。使用 runtime.execution_runtime 来检查图是被调用用于实际执行还是仅用于内省(模式、可视化):
最后,在 langgraph.json 中指定你的工厂函数路径:

ServerRuntime 参考

你的工厂函数接收一个具有以下属性的 ServerRuntime 实例: 方法:

访问上下文

服务器不仅在执行运行时调用你的工厂函数,还在其他几种上下文中调用。在所有上下文中,返回的图应具有相同的拓扑结构(节点、边、状态模式)。在写入上下文(threads.create_runthreads.update)中拓扑结构不匹配可能导致状态更新不正确。在读取上下文(threads.readassistants.read)中,不匹配会影响报告的待处理任务、模式和可视化,但不会损坏数据。使用 execution_runtime 有条件地设置昂贵资源,而不改变图结构。

为每个图自定义跟踪

你可以使用工厂函数来为特定图自定义或禁用跟踪。有关示例,请参阅条件跟踪:在部署的代理中自定义跟踪 有关更多信息,请参阅 LangGraph API 配置文件