介绍 Jev 这一高速 System One 分类模型如何融入 Agent 循环,并与 LangChain 集成。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @sydneyrunkle# 使用 Jev 构建框架 Agent 在循环中运行:LLM 决定下一步操作,工具执行该操作,模型评估结果,然后继续循环,直到任务完成。 Agent 和 LLM 最初很难集成到依赖结构化数据和可预测接口的软件应用中。后来出现了两种基本机制,使集成变得容易得多: - 工具调用让模型能够发出结构化请求并接收结构化结果。(https://openai.com/index/function-calling-and-other-api-updates/) - 结构化输出让模型能够返回结构化结果。(https://www.youtube.com/watch?v=yj-wSRJwrrc) 但即便有了这两种机制,Agent 循环仍然缓慢且成本高昂:每次决策都需要再调用一次模型。 于是,Jev 应运而生。Jev 是 TypeSafe AI 发布的一款新模型。据该公司报告,在分类任务上,其推理速度比同类 LLM 最高快 200 倍,成本最低降低 400 倍。(https://typesafe.ai/blog/introducing-system-one-models-and-jev) 本文介绍 Jev 的工作原理、它在 Agent 循环中的定位,以及如何与 LangChain 配合使用。 # 关于 Jev 的一切 Jev 实际上并不是传统的 LLM,它不生成文本。它是 TypeSafe AI 团队所称的 System One 模型: > 📖 System One 模型是一类专为快速、结构化决策而构建的 AI 模型,其输出可直接供软件使用。System One 模型对某一状态进行评估,并返回带类型的答案和概率值。(https://docs.typesafe.ai/concepts/state) 它使用校准决策强化学习(RLCD)进行训练。您的代码利用这些结果来指引 Agent 的下一步行动,无需为每次决策都调用一次完整的对话 LLM。(https://typesafe.ai/blog/introducing-system-one-models-and-jev) 调用 Jev 模型时,您需要向其发送一个状态(上下文)以及关于该状态的问题。以下是其文档中支持工单示例的单问题版本:(https://docs.typesafe.ai/introduction/quickstart) 文档示例给出了如下紧急程度答案,此处仅展示响应中的相关部分: 该消息为紧急消息的概率为 99.9%,您的应用可据此对工单进行优先级排序。 支持的问题类型共有三种:(https://www.youtube.com/watch?si=L1qd4LT9W-W67mar&t=216&v=2Bs0Ink_-Uo&feature=youtu.be) - Choice(选择):从一组选项中选择一个。返回每个选项的概率及整体置信度分数。 - Score(评分):按有序级别(如低、中、高)对输入进行评级。返回连续分数、底层分布以及置信度值。 - Noul(是非):回答一个是/否问题。返回某个陈述为真的概率。 这里一个关键特性是,您可以在一次请求中对同一状态提出多个问题。 > 💡 System One 模型会并行评估一次请求中的所有问题。增加问题几乎不会改变响应时间,成本仅为额外问题所用的 token,而这部分费用非常低廉。 关于对一张支持工单提出多个问题的示例,请参阅 TypeSafe 快速入门指南。(https://docs.typesafe.ai/introduction/quickstart#request-body) 总之,与传统 LLM 不同,Jev 既不受文本生成的限制,也不受顺序决策的约束! # 如何将 Jev 与 LangChain 配合使用 LangChain 与提供商无关的模型非常适合在支持数千种其他集成和模型提供商的同时,也支持 Jev。 LangChain 集成通过 TypeSafeClassifier 暴露 Jev 的能力。您将状态和问题传入 `.invoke()`,获得的是分类结果而非对话响应。(https://docs.langchain.com/oss/python/integrations/providers/typesafe#quickstart) 安装 langchain-typesafe 并设置您的 TYPESAFE_API_KEY,然后发起调用: 状态可以是文本、结构化数据或 LangChain 消息。这使得在节点或中间件钩子中使用智能体已有的上下文调用 Jev 变得非常简单。 你可以将其构建到自定义中间件或工具中! # 使用场景 Jev 并非 LLM 的直接替代品。它不生成文本,但可以处理我们今天通常使用 LLM 完成的分类任务,同时不存在相同的延迟和成本问题。这使它成为驱动智能体的模型的有力补充:将 LLM 用于开放式推理和生成,而将 Jev 用于过程中快速、结构化的决策。 ## 模型路由 简单的查询任务不需要与复杂调试任务相同的模型。模型路由中间件让 Jev 根据你定义的标准评估请求并选择模型,从而对简单任务使用快速且低成本的模型,对复杂任务使用能力更强的模型。(https://docs.langchain.com/oss/python/integrations/providers/typesafe#model-routing) 路由器从最新的用户消息中选择模型,并在整个运行过程中使用该模型。概率和置信度也保留在智能体状态中。 ## 自动模式 智能体在本质上仍然是不可完全信赖的。智能体可能收到错误指令(无论是自然产生的,还是来自具有足够动机的攻击者),这些指令可能诱使其采取我们不希望发生的行动。 claude、codex、cursor 等编码工具已经推出了某种方式,在危险操作执行前对其进行分类,这一机制逐渐帮助建立了人们对智能体的信任。然而到目前为止,这一分类步骤一直被封锁在各工具的闭源部分中。 现在,一个廉价且高性能的分类器模型已经出现,我们可以采用相同的模式并将其推广到所有智能体! AutoModeMiddleware 使用 Jev 检查工具调用中可能存在风险的决策,并在工具执行前拦截这些调用。(https://docs.langchain.com/oss/python/integrations/providers/typesafe#tool-risk-gating) # 立即开始! 我们对 Jev 及其带来的可能性感到非常兴奋。以下是我们已经看到的几个很酷的项目:来自 Browserbase 的 Kyle Jeong 正在以极低的成本驱动浏览器使用智能体,Jarrod Watts 构建了一个实时交易智能体,Ryan Vogel 正在大规模处理邮件分类。(https://x.com/kylejeong/status/2100622054945095934) (https://x.com/jarrodwatts/status/2100356151468585346) (https://x.com/ryanvogel/status/2100042788851101842) 如今新模型每周都在发布,但这个模型获得了相当强烈的反响。我们期待看到你用 LangChain 和 Jev 构建出什么。 欢迎在论坛上告诉我们你的想法,在 X 上 @ 我们并分享你正在构建的内容,或者参与 LangChain 的 issue 讨论!(https://forum.langchain.com/) (https://x.com/LangChain?lang=en) (https://github.com/langchain-ai/langchain) ## 致谢 感谢 @huntlovell、@hwchase、@ccurme、@veryboldbagel 以及 Nathan Drenzer 的深思熟虑的审阅与贡献。