必须严格配置模型标识、状态输入、问题定义三要素,使用AI SDK 7.0.105+,choice选项需为合法JS标识符对象,调用experimental_evaluate接口并校验返回值有效性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在业务系统中让Jev模型执行确定性选项选择(比如“该转人工还是自动回复”“下一步点击哪个按钮”),必须严格配置Choice类型判断的三要素:模型标识、状态输入、问题定义——缺一不可,否则请求会直接报错或返回空结果。
确认并安装支持Jev的AI SDK
运行Jev前必须使用AI SDK 7.0.105及以上版本,低版本不暴露experimental_evaluate接口。执行命令:pnpm add ai@latest。
安装后检查node_modules/ai/package.json中version字段是否≥7.0.105,低于此值将无法调用Jev。
构造合法的Choice问题结构
Choice类型要求你明确定义候选列表,并为每个选项分配唯一键名。不能只写“上、下、左、右”,必须写成对象形式:
{"up": "向上移动", "down": "向下移动", "left": "向左移动", "right": "向右移动"}
键名必须是合法JavaScript标识符(不能含空格、短横线、中文),且所有键名将在返回结果中作为字段名直接使用。若写成{"move up": "向上移动"},后续取值result.answers["move up"]会语法报错。
编写完整调用代码
第一步:从ai包导入evaluate函数并重命名
import { experimental_evaluate as evaluate } from "ai";
第二步:准备state参数——它可为字符串、对象或数组,但必须能被序列化为JSON。例如游戏状态可写为:
const state = { playerHp: 42, monsters: [{x: 3, y: 5}], coins: [{x: 6, y: 2}], exit: {x: 8, y: 7} };
第三步:定义questions对象,其中choice问题必须指定type: "choice"和options字段:
const questions = { action: { type: "choice", options: { up: "向上移动", down: "向下移动", left: "向左移动", right: "向右移动", attack: "攻击最近怪物", use_potion: "喝治疗药水" }, instruction: "基于当前血量和敌人位置,选择最安全有效的下一步动作" } };
第四步:发起调用,model名必须为"typesafe-ai/jev",拼错将触发404错误:
const result = await evaluate({ model: "typesafe-ai/jev", state, questions });
第五步:提取结果——答案直接挂在result.answers.action下,值为选中的键名(如"attack"),概率分布在result.answers.action.choices中,置信度需从result.providerMetadata.typesafe.confidence单独读取。
验证返回结果有效性
方法一:检查result.answers.action是否为预设键名之一。若返回"UP"或"move_up",说明prompt没约束好或options定义不匹配。
方法二:打印result.providerMetadata.typesafe.confidence,正常值应在0.7~0.99之间。若低于0.5,说明state信息不足或instruction表述模糊,需补全上下文或重写问题。
【options键名必须与result.answers中字段名完全一致,大小写、下划线、连字符均敏感】

















