智能体在一个循环中运行:LLM 决定做什么,工具执行,模型评估结果,然后继续在这个循环中运行,直到任务完成。

智能体和 LLM 最初很难集成到软件应用中,因为软件应用依赖结构化数据和可预测的接口。后来出现了两个原语,让这件事变得容易多了:

但即使有了这些,智能体循环仍然缓慢且昂贵:每一个决策都需要再一次模型调用。

登场,Jev。Jev 是一个新模型由 TypeSafe AI 发布。该公司报告称,在分类任务上,其推理速度最高可提升200 倍,成本降低 400 倍相比同类 LLM。

本文介绍 Jev 的工作原理、它在智能体循环中的位置,以及如何配合 LangChain 使用它。

关于 Jev 的一切

Jev 实际上不是传统 LLM,它不生成文本。它是 TypeSafe AI 团队所称的 System One 模型:

📖 System One 模型是一类 AI 模型,旨在做出快速、结构化的决策,供软件直接使用。System One 模型会评估一个状态并返回带类型的答案和概率。

它使用用于校准决策的强化学习(RLCD)进行训练。你的代码使用这些结果来指导智能体下一步做什么,而无需为每个决策都进行一次完整的聊天 LLM 调用。

要调用 Jev 模型,你向它发送一个状态(上下文)以及关于该状态的问题。下面是其文档中支持工单示例的单问题版本:‍

{"model":"jev-latest","state":"Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.","questions":{"is_urgent":{"type":"noul","instructions":"The message conveys urgency or time-sensitivity"}}}

文档中的示例给出了这个紧急程度答案,这里只展示该答案,省略响应其余部分:‍

{"is_urgent":{"type":"noul","noul":0.999}}

这表示该消息有 99.9% 的概率是紧急的,你的应用可以用它来对工单进行优先级排序。

支持三种类型的问题:

  • Choice:从一组选项中挑选。为每个选项返回一个概率,并给出一个总体置信度分数。
  • Score:根据有序等级(如低、中、高)对输入进行评分。返回连续分数、底层分布和置信度值。
  • Noul:回答一个是非题。返回某个陈述为真的概率。

这里的一个关键特性是,你可以在一次请求中对同一个状态提出多个问题。

💡 System One 模型会并行评估一次请求中的每个问题。增加问题几乎不会改变响应时间,且只消耗额外问题对应的 token,成本很低。

关于对一张支持工单提出多个问题的示例,请参见TypeSafe 快速入门。

总之,与传统 LLM 不同,Jev 既不受文本生成的限制,也不受顺序决策的限制!

如何将 Jev 与 LangChain 配合使用

LangChain 的提供商无关模型非常适合在支持 Jev 的同时,兼容数千种其他集成和模型提供商。

该LangChain 集成通过以下方式暴露 JevTypeSafeClassifier。你将状态和问题传给.invoke(),得到的是分类结果,而不是聊天响应。

安装langchain-typesafe并设置你的TYPESAFE_API_KEY,然后发起调用:‍

fromlangchain_typesafeimportNoul, TypeSafeClassifierclassifier = TypeSafeClassifier()response = classifier.invoke({"state":("部署失败了两次,客户看到 500 错误。""有人能现在看一下吗?"),"questions":{"urgent":Noul(instructions="这需要立刻处理吗?"),},})urgency = response.nouls["urgent"].noul

状态可以是文本、结构化数据或 LangChain 消息。这使得使用你的智能体已有的上下文,从节点或中间件钩子中调用 Jev 变得非常简单。

你可以把它构建到自定义中间件或工具中!

用例

Jev 并不是 LLM 的直接替代品。它不生成文本,但可以处理我们今天常用 LLM 完成的分类任务,且没有相同的延迟和成本。这使它成为驱动你智能体的模型的有前景的补充:用 LLM 进行开放式推理和生成,用 Jev 在过程中做快速、结构化的决策。

模型路由

简单的查找不需要和困难的调试任务使用同一个模型。模型路由中间件让 Jev 评估请求,并根据你定义的标准选择模型,这样简单任务用快速且便宜的模型,复杂任务用能力更强的模型。‍

fromlangchain.agentsimportcreate_agentfromlangchain_typesafe.experimental.middlewareimport(ModelChoice,ModelRouterMiddleware,)router = ModelRouterMiddleware(choices={"fast": ModelChoice(model="openai:luna",criteria="Direct lookups, extraction, and localized changes.",),"powerful": ModelChoice(model="openai:sol",criteria="Architecture and high-stakes decisions.",),},instructions="Choose the least costly model that can complete the task.",)agent = create_agent("openai:gpt-5.6-luna", middleware=[router])

‍路由器会根据最新的用户消息选择一个模型,并在整个运行过程中使用它。概率和置信度也仍然可以在 agent state 中获取。

自动模式

智能体本质上仍然不可信。智能体可能会收到糟糕的指令(可能是自然产生的,也可能来自足够有动机的攻击者),从而被说服采取我们并不希望它采取的行动。

像 claude、codex、cursor 这样的编码工具已经提供了某种方式,在危险操作被执行之前对其进行分类,在它们被执行之前,这逐渐帮助建立了对智能体的信任。到目前为止,这个分类器步骤一直被锁在工具闭源的部分里。

既然现在有了一个便宜且高性能的分类器模型,我们就可以采用同样的模式,并将其应用到所有智能体上!‍

fromlangchain.agentsimportcreate_agentfromlangchain_typesafe.experimental.middlewareimport(AutoModeMiddleware,)guardrail = AutoModeMiddleware(tools=["bash"])agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])

‍AutoModeMiddleware使用 Jev 检查工具调用中可能采取的风险决策,并在工具执行之前阻止这些调用。

开始使用!

我们对 Jev 以及它带来的可能性感到非常兴奋。我们已经看到了一些很酷的项目:Kyle Jeong来自 Browserbase,正在以极低的成本为浏览器使用智能体提供支持,Jarrod Watts构建了一个实时交易智能体,Ryan Vogel正在大规模进行电子邮件分类。

现在几乎每周都有新模型发布,但这一款的反响格外强烈。我们很期待看到你用 LangChain 和 Jev 构建出什么。

欢迎在论坛上告诉我们你的想法,在X上标记我们并分享你正在构建的内容,或参与LangChain issues!

‍