ServerRuntime 来实现这一点。
在大多数情况下,自定义最好通过在各个节点内根据配置进行条件判断来处理,而不是动态改变整个图结构。这使得测试和管理更加容易。
前置条件
- 请确保首先查看此操作指南以设置你的应用进行部署。
ServerRuntime需要langgraph-api >= 0.7.31和langgraph-sdk >= 0.3.5。在此之前,图工厂函数只接受单个config: RunnableConfig参数。
定义图
假设你有一个应用,其中包含一个简单的图,该图调用一个 LLM 并将响应返回给用户。应用文件目录结构如下:agents.py 中。
不重建
部署你的 Agent Server 最常见的方法是引用一个在文件顶层定义的已编译图实例。示例如下:langgraph.json)中指定包含 CompiledStateGraph 实例的变量路径,例如:
重建
要在每次新运行时重建你的图,请提供一个返回(或产出)图的工厂函数。该工厂函数可以选择性地接受一个ServerRuntime 参数或一个 RunnableConfig。服务器会检查你函数的类型注解以确定注入哪些参数,因此请确保包含正确的类型提示。服务器的队列工作进程在需要处理运行时会调用你的工厂函数。该函数也会在某些其他端点被调用,以更新状态、读取状态或获取助手模式。ServerRuntime 会告诉你哪个上下文触发了调用。
ServerRuntime 处于测试阶段,未来版本可能会更改。简单工厂函数
最简单的形式是一个返回已编译图的普通async def 函数:
上下文管理器工厂函数
如果你需要设置和清理资源(数据库连接、加载 MCP 工具等),请使用异步上下文管理器。使用runtime.execution_runtime 来检查图是被调用用于实际执行还是仅用于内省(模式、可视化):
langgraph.json 中指定你的工厂函数路径:
ServerRuntime 参考
你的工厂函数接收一个具有以下属性的ServerRuntime 实例:
方法:
访问上下文
服务器不仅在执行运行时调用你的工厂函数,还在其他几种上下文中调用。在所有上下文中,返回的图应具有相同的拓扑结构(节点、边、状态模式)。在写入上下文(threads.create_run、threads.update)中拓扑结构不匹配可能导致状态更新不正确。在读取上下文(threads.read、assistants.read)中,不匹配会影响报告的待处理任务、模式和可视化,但不会损坏数据。使用 execution_runtime 有条件地设置昂贵资源,而不改变图结构。
为每个图自定义跟踪
你可以使用工厂函数来为特定图自定义或禁用跟踪。有关示例,请参阅条件跟踪:在部署的代理中自定义跟踪。 有关更多信息,请参阅 LangGraph API 配置文件。将这些文档通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

