如何用 Jev 与 LangGraph 构建生产级智能体
Building Production Agents with Jev and LangGraph
LangChain 发文介绍如何用 TypeSafe AI 的决策模型 Jev 搭配 LangGraph 构建生产级智能体。Jev 不生成文本,只返回带概率的类型化判断,TypeSafe 基准显示其在路由和分类等窄决策任务上比主流 LLM 快至多 200 倍、便宜 400 倍。
LangChain 用文档审查和浏览器自动化两个案例,展示决策模型与图编排如何分工,可迁移到自建智能体流程。
上周,TypeSafe AI 发布了 Jev,一种新型模型。与传统 LLM 不同,Jev 不生成文本。它做出的决策可直接被你的代码执行,这正是 TypeSafe 所称的 AI 驱动的软件,即“代码掌控工作流,AI 处理狭窄、结构化的决策”。TypeSafe 将其理念概括为构建“prod,而非 god”。
随着前沿 LLM 能力越来越强,我们开始把它们当作神来对待,任何输入模糊的任务都求助于它们:文本生成、文档提取、搜索、排序、研究、分类等等。遗憾的是,神既昂贵又缓慢。每一次调用你都要为这种通用性付出代价,哪怕你需要的只是一个“是”或“否”。
这就是 Jev 的发布引起如此多关注的原因。在狭窄的决策任务上,比如许多智能体所围绕的路由和分类步骤,TypeSafe 的基准测试显示 Jev 的运行速度比领先的 LLM 快达 200 倍,成本低 400 倍。
TypeSafe 的方法让我们 LangChain 感到几乎有些怀旧。我们的使命是让智能体变得有用且无处不在,我们的开源生态也随着模型格局的演变而演进,但每一步我们都回到同样两个问题:我们如何让模型做出有用的决策,以及我们如何可靠地执行这些决策?
LangGraph 是我们对这两个问题的答案。我们基于帮助数千家公司将 AI 投入生产所积累的经验构建了它,它让你在可靠且可观测的系统中,将模型驱动的决策与确定性代码结合起来。Jev 为这些系统提供了一种更快、更便宜的决策方式。在本文中,我们将介绍如何用 Jev 和 LangGraph 构建“prod,而非 god”。
用 Jev 做决策
Jev 从前沿 LLM 的能力包中取出了一项能力——判断力,并将其变成一种便宜到无需计量的原语。这就是 TypeSafe 所称的系统一模型,或者更常见的叫法:决策模型。你给它状态和一组问题,它返回带概率的类型化答案。
TypeSafe 的文档列出了构建软件的三种方式。传统软件由显式逻辑构成,每个分支都手写且可审计,但因此也很僵化。智能体则走向另一个极端:一个模型在每一步都兼顾决策,控制流从代码转移到提示词中。AI 驱动的软件走的是中间路线。代码保留结构并处理精确计算,模型只出现在需要语义判断的分支上。

以下几个特性帮助 Jev 成为生产系统的合格组件:
- 结构化:答案以带概率的类型化答案返回,因此代码可以可预测地根据结果分支
- 并行:你可以同时针对同一状态提出许多问题
- 快速:决策足够便宜,可以在单次运行中做出许多决策
- 自洽:系统一被设计为在重复评估中返回稳定的答案。
💡 Jev 的一致性是对 LLM 非确定性的一种可喜改变。向 LLM 提出同一个问题,不同运行可能得到不同答案。Jev 被设计为对相同输入返回相同答案。在一项早期的Jev 作为评判者的实验中,其分数在 100 次重复运行中几乎没有变化,远小于我们测试过的任何 LLM 评判者。
例如,这个视频帮助你直观地了解 Jev 与 LLM 的工作方式有何不同。这里的任务是判断输入是否包含各种类型的 PII:
真实应用会做出大量决策,每个决策都 intricately 依赖于之前的选择。一旦决策变得如此廉价,挑战就变成了如何编排它们,而这正是 LangGraph 的用武之地。
用于编排的 LangGraph
多年来,我们一直帮助团队围绕 LLM 构建系统,几乎每个团队都会遇到同样的两个问题:
- 管理上下文很难。 为了让模型做出正确的决策,其上下文窗口需要“恰好是下一步所需的信息”。这些信息是模糊的,并且会随着应用程序的运行而变化。
- 模型驱动的系统仍然需要可靠。 它们必须能够承受故障、支持人工干预,并使每一步都可观察。
现有框架解决了部分问题,但都没有在不限制人们构建方式的情况下同时解决这两个问题。因此我们构建了 LangGraph。它现在每月下载量超过 6000 万次,并被许多构建 AI 的财富 50 强公司使用。
状态即上下文
一个 LangGraph 应用程序由三部分组成。节点是工作单元:普通代码、模型调用、工具调用或整个子图。状态是节点读取和更新的信息。边决定下一个运行哪个节点,可以是固定路径,也可以根据当前状态动态决定。
任何图也可以成为更大图中的节点,因此小而经过测试的组件可以组合成更大的系统。TypeSafe 的 宣言 对智能做出了同样的押注:小而清晰的基元是让复杂系统保持可信的关键。
随着图的运行,每一步的结果都会累积到状态中。该状态成为后续每一步的上下文,同时也决定了接下来运行哪些节点。
与其将领域知识 打包到提示中,不如将其 编码到图的拓扑结构中:做出哪些决策、以什么顺序做出,以及每个决策能看到什么状态。正如 TypeSafe 所说,这就是软件能够根据意图和常识进行分支的方式。判断来自模型,但流程保留在你可以检查和测试的代码中。
可靠的运行时
正如 TypeSafe 宣言 所主张的,只有当组件可靠时,你才会让它无人值守地运行;只有当你能够检查、测试和约束它时,你才会在其上构建。LangGraph 在运行时中处理了这一点:
- 持久执行:模型驱动的步骤是非确定性的,因此相同的输入可能导致模型做出不同的调用,并将运行引向不同的路径。失败后从头重新开始比慢更糟糕,因为重新运行可能不会沿着相同的路径。检查点会在每一步持久化状态,因此失败的运行会从已经做出的决策处恢复。
- 人在回路中:当某个步骤在系统行动之前需要审查时,中断可以让你暂停、批准,并从上次中断的地方继续。
- 可观测性:模型驱动的步骤每次做的事情并不相同,因此你需要在 LangSmith 中查看跟踪,以了解做出了什么决策以及为什么。
这些都不是 LLM 特有的。Jev 仍然接收非结构化文本上下文并返回判断,因此它需要相同的保证,而图会自动为每个节点提供这些保证。
.png&mode=full&exp=1791417600&sig=61ebf558298e1b41)
示例:用于发现流程的文档审查
在诉讼中,公司必须在将文件提交(移交)给另一方之前审查每一页,而一个案件可能涉及数十万页。大部分审查都是反复做出的相同的有界判断,这使其天然适合 Jev。
对于每一页,Jev 在一次请求中回答三个问题,每个答案都映射到图中的一条路径:
- 这一页是否与请求相关?如果不相关,就将其搁置。
- 它是否包含个人信息?如果包含,则由 LLM 对 PII 进行脱敏处理。
- 它是否可能享有特权?如果是,则交给
attorney_review,这会暂停图,等待人工介入。
剩下的任何内容都可以移交了。以下是该流程的快速演示(实际中,页面是并行处理的):
Jev 处理所有分类,只有当某个页面需要更多处理时,图才会升级:交给 LLM 进行脱敏,或交给律师进行特权判断。
我们运行了同一个图,分别使用Jev 处理分类和Sonnet 作为判断者,在多次试验中,Jev 在分类步骤上快了 5–6 倍。两次运行都在 LangSmith 中进行了追踪,因此你可以打开任意页面,查看它走了哪条路径以及背后的概率。LangSmith 还为像 Jev 这样的决策模型提供了专门的视图,展示每个决策的输入和校准后的输出:


这是智能的大解绑
在过去三年里,大多数智能体都将所有内容路由到一个前沿 LLM。Jaya Gupta 将接下来的趋势称为“智能的大解绑”:这些能力被拆分开来,每一项都交给能够处理它的最便宜的模型。Jev 将判断能力抽离出来,返回结构化决策而不是生成的文本。一旦这些部分被分开,就需要有东西通过路由每个步骤并决定何时升级来将它们重新缝合在一起。这就是运行时的工作。
浏览器自动化展示了这在实践中的样子。浏览器智能体读取页面并决定下一步做什么:点击按钮、填写字段、滚动。这听起来很开放,但在任何给定时刻,页面只提供有限的一组交互元素,因此下一步操作实际上是从列表中选择。
Browserbase 围绕这一理念重建了 Stagehand 的 act()。Stagehand 标记页面上的交互元素,Jev 选择操作类型和最佳候选元素,任何低于 0.7 置信度阈值的内容都会回退到 LLM。在早期测试中,act() 延迟中位数从 1.97 秒降至 0.46 秒,约快了 4.3 倍。
在大多数用例中,Jev 并不能完全取代 LLM。它处理自己有把握的有界选择,并将其他所有内容交给 LLM。这就是 Gupta 所描述的转变:从“默认使用前沿模型,之后再优化”到“默认使用便宜模型,例外时使用前沿模型”。我们预计会看到更多这种模式:在动作空间受限的地方,决策模型进行快速、廉价的调用,而 LLM 则保留用于开放式推理以及较小模型不确定的情况。
开发者已经在朝这个方向前进。正如本周一位开发者告诉我们的:“我基本上正在把我们目前拥有的每个智能体都转换成由 Jev 驱动的工作流。”
开始使用
- 在使用 LangGraph 进行 3 年图工程中了解 LangGraph 运行时的工作原理
- 在使用 Jev 构建 harness 中了解 Jev 如何融入智能体 harness,包括模型路由和自动模式分类器
- 使用 LangSmith 监控和评估你的智能体
致谢
由 Sydney Runkle 和 Hunter Lovell 撰写。
感谢 Kevin Frank、Harrison Chase、Eugene Yurtsev 和 Nathan Drezner 的审阅和意见。
来源:LangChain Blog · langchain.com