jev 的 choice 类型专用于从固定列表中单选,需明确定义原子化选项、命名问题 id、传入清晰 state;请求含 state/model/questions 三字段,响应直接返回结构化 choice 及概率分布,避免模糊描述或边界重叠。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Kim 用 Jev 做判断任务,核心是把“人脑直觉式选择”变成程序可读的结构化输出。重点不在写提示词,而在定义清楚选项、命名问题、传对状态——Jev 不生成解释,只在你给的框里打分、挑项、判是非。
明确你要问什么类型的问题
Choice 专用于「从固定列表中选一个」。比如:用户情绪是「愤怒」「困惑」「满意」还是「中性」?简历匹配度属于「高」「中」「低」?这不是开放问答,而是封闭决策。一旦选项不全、描述模糊或混入歧义词(如“一般”“可能”),Jev 就无法保证结果落在你预期范围内。
- ✅ 正确示例:{"category": {"choice": ["order_issue", "payment_issue", "shipping_issue"]}}
- ❌ 错误示例:{"category": {"choice": ["订单问题", "支付相关", "物流方面可能有延迟"]}}(含主观描述、长度不一、非原子化)
构造合法的 Choice 请求体
请求必须包含三个字段:state(当前上下文)、model(固定为 jev-latest)、questions(字典,键是问题 ID,值是 Choice 对象)。每个 Choice 对象需带 options 列表和可选 description(用于辅助模型理解语义,不影响输出范围)。
- state 可以是纯文本(如一封客服对话)、JSON 字符串(如工单元数据),甚至带换行的多段日志
- questions 中每个 Choice 实例用 typesafe-sdk 写法是:Choice(options=["A", "B", "C"], description="请选择最符合当前场景的响应类型")
- 一次请求可混加多个 Choice、Noul、Score,它们并行执行,不互相干扰
调用后直接取结构化结果
响应里的 answers 是个字典,key 和你提问时设的 ID 一致,value 是带概率分布的对象。不用解析文本、不用正则提取、不担心模型加戏——它只会返回你列好的选项之一,附带每个选项的概率和整体置信度。
- 例如提问 ID 为 "sentiment",response.answers["sentiment"] 返回:
{"choice": "frustrated", "probabilities": {"calm": 0.02, "confused": 0.18, "frustrated": 0.75, "satisfied": 0.05}, "confidence": 0.91} - 程序可直接用 choice 字段做 if-else 分支,用 confidence 判断是否需要 fallback 或人工复核
常见踩坑点提醒
不是所有分类都适合直接上 Choice。以下情况要先处理:
- 选项之间边界不清(如“高风险”和“中高风险”重叠)→ 合并或重定义档位
- 实际业务中存在“无法判断”类兜底项 → 必须显式加入 options,如 ["high", "medium", "low", "insufficient_data"]
- 原始 state 信息太杂乱(如整页 HTML 或未清洗日志)→ 提前抽关键句,Jev 对噪声敏感,不负责信息萃取











