本节摘要:如果你的项目已经跑在框架上,Jev 有两个官方级集成。LangChain 侧是
langchain-typesafe包:TypeSafeClassifier把 Jev 变成链里的一个分类器(state 可以是文本、结构化数据甚至 LangChain 消息对象),更有价值的是两个开箱中间件——ModelRouterMiddleware用 Jev 按请求难度在多个模型间路由(成本杀手),AutoModeMiddleware用 Jev 在工具执行前做风险检查与拦截(Agent 护栏)。Vercel AI SDK 7 侧通过experimental_evaluate接入,注意命名映射:Noul 在此叫 boolean,答案字段叫 probability,置信度在providerMetadata.typesafe.confidence。本节的三个集成都是第 6~7 章模式的"官方预制品"。
阅读完本节,你应当能够:
TypeSafeClassifier 做一次判断。ModelRouterMiddleware 与 AutoModeMiddleware 各自解决什么问题。安装:pip install langchain-typesafe(需要 TYPESAFE_API_KEY)。
from langchain_typesafe import Noul, TypeSafeClassifier classifier = TypeSafeClassifier() response = classifier.invoke({ "state": "The deploy failed twice and customers are seeing 500s. Can someone look now?", "questions": { "urgent": Noul(instructions="Does this need attention right now?"), }, }) urgency = response.nouls["urgent"].noul # 0~1,与 4.1/4.2 的结果同构
state 的三种形态:文本、结构化数据、LangChain 消息对象——最后一种意味着你可以把一段对话历史直接作为"程序状态"交给 Jev 判断(比如"该对话是否开始跑题")。
from langchain_typesafe import ModelRouterMiddleware, ModelChoice router = ModelRouterMiddleware( instructions="根据任务复杂度选择模型", choices={ "fast": ModelChoice(model="openai:luna", criteria="简单改写、格式转换、事实性问答"), "powerful": ModelChoice(model="openai:sol", criteria="多步推理、长文写作、复杂代码"), }, ) # 每个 LLM 请求先过 Jev(~100ms、近零成本),再决定用哪个模型执行
价值逻辑:一次近零成本的 Choice 决定后续秒级 LLM 调用走便宜模型还是旗舰模型——简单流量占比高的系统,路由器本身就是成本优化器。
from langchain_typesafe import AutoModeMiddleware auto_mode = AutoModeMiddleware(tools=["bash"]) # Agent 每次要执行 bash 前,Jev 先检查该调用是否属于危险操作,危险则拦截
LangChain 官方将此定位为"闭源 harness 分类器(Claude/Codex/Cursor 内置的那类)的开源替代"——护栏逻辑从黑箱变成你代码里可审计的中间件。
安装(AI SDK ≥ 7.0.105,Node 22+):
npm install ai @ai-sdk/typesafe-ai
用法要点与命名映射(这是本节最容易踩的差异点):
| Jev 原名 | Vercel AI SDK 中的名字 | 答案字段 |
|---|---|---|
| Noul | boolean | probability |
| Choice | select | — |
| Score | rating | — |
import { experimental_evaluate } from "ai"; const result = await experimental_evaluate({ model: "typesafe-ai/jev", // 也可经 AI Gateway 调用 state: "Deploy failed twice, customers seeing 500s.", questions: { urgent: { type: "boolean", instructions: "Needs attention right now" }, }, }); const p = result.answers.urgent.probability; // 即 noul 概率 const conf = result.providerMetadata.typesafe.confidence; // 置信度藏在元数据里
⚠️ Vercel 侧三个注意:① Noul 改名 boolean、字段改叫 probability;② 置信度不在答案上而在
providerMetadata.typesafe.confidence——做门控(第 5.3 节)别漏读;③ 走 AI Gateway 时企业版可开zeroDataRetention标志(合规敏感场景)。
| 方式 | 适合 |
|---|---|
| curl / requests(4.1) | 学协议、排障、极简依赖环境 |
| 官方 SDK(4.2) | 独立服务、脚本、任何新项目 |
| LangChain(4.3) | 已用 LangChain 的应用/Agent,直接拿路由与护栏中间件 |
| Vercel AI SDK(4.3) | 已跑在 Vercel 生态的应用,与 generate/stream 同一编程模型 |
TypeSafeClassifier 判断;ModelRouterMiddleware 路由省钱;AutoModeMiddleware 工具护栏——后两者是第 6~7 章模式的官方预制品。experimental_evaluate,Noul→boolean、noul→probability、置信度在 providerMetadata。到这里,"调用 Jev"已经不是问题。下一章往下挖一层:为什么十三个问题一次问完反而更便宜?概率凭什么能当工程契约?confidence 到底在测什么?