最后更新:2026-11-02 · 编辑撰写 · API 形态与官方文档一致
用 50 行 Python 搭建 Jev 工单分类系统
工单路由是最典型的第一个 Jev 工作流——类别有界、量大,而旧方案(人工分诊或每单一次 LLM 调用)在成本上全输。这是一个大约 50 行的完整路由器:三个类型化问题、一套置信度阈值策略、优先通道和人工兜底。
完整脚本
import os
import requests
API = "https://api.typesafe.ai/v1/systemone" # 或你的渠道商端点
KEY = os.environ["JEV_API_KEY"]
QUESTIONS = {
"category": {"type": "choice", "options": ["billing", "technical", "sales", "spam"]},
"urgent": {"type": "noul",
"statement": "The customer is blocked, or losing money or time."},
"mood": {"type": "score", "scale": ["calm", "annoyed", "angry", "furious"]},
}
def decide(state: str) -> dict:
r = requests.post(
API,
headers={"Authorization": f"Bearer {KEY}"},
json={"model": "jev-latest", "state": state, "questions": QUESTIONS},
timeout=10,
)
r.raise_for_status()
return r.json()["answers"] # {name: {value, confidence, ...}}
def route(state: str) -> str:
a = decide(state)
cat, urgent, mood = a["category"], a["urgent"], a["mood"]
# 1. 垃圾:高置信时直接归档
if cat["value"] == "spam" and cat["confidence"] > 0.90:
return "archive"
# 2. 优先通道:被卡住或情绪激动的客户插队
if (urgent["value"] and urgent["confidence"] > 0.85) or \
mood["value"] in ("angry", "furious"):
return "priority-queue"
# 3. 自动路由:只在模型足够确信时
if cat["confidence"] >= 0.75:
return f"team-{cat['value']}"
# 4. 其余全部:人工复核
return "human-review"
if __name__ == "__main__":
for line in open("tickets.txt"):
if line.strip():
print(route(line.strip()))
五十行,其中真正有趣的——策略——只占十行左右。注意代码里没有什么:没有 prompt 字符串、没有输出解析、没有 schema 校验。响应要么带着你要的字段,要么调用本身失败。
为什么三个问题一次调用
三个问题(choice / noul / score)随同一次请求捎带。Jev 只对输入计费,第二、第三个问题近乎免费——整次调用的成本约等于 State 加一点零头。对比:三次独立 LLM 调用,$0.25/1M 输入 + $2.00/1M 输出,每次 2–8 秒,每次都有解析失败的可能。这就是Jev 与 Function Calling 对比里的核心经济账,微缩版。
策略是产品决策,不是代码风格
阈值(0.90、0.85、0.75)是起点,不是推荐值。它们编码的是你接受多大的自动化风险:
| 阈值 | 含义 | 出错时的代价 |
|---|---|---|
| spam > 0.90 | 自动归档 | 真实客户工单凭空消失。昂贵。 |
| urgent > 0.85 | 优先通道 | 误报:插队,代价小;漏报:愤怒的客户干等,代价大。 |
| route ≥ 0.75 | 自动路由 | 路由错误的工单,客服重新归档。烦人但可活。 |
用回放集定阈值——100–500 条人工标注的历史工单——并在把任何阈值用于生产前读一遍生产检查清单。Jev 的置信度经过校准训练(RLCD 而非 RLHF),但厂商评测集上的校准不等于你的工单上的校准。
把 State 弄瘦
上面的脚本发什么 State 就用什么——这正是State 设计那篇的价值:调用前剥离签名、HTML 和线程历史,同样的路由决策便宜约 60%。月 10 万工单的量级下,Jev 的费率这也是真金白银;按 LLM 的费率,这就是可行与荒谬的差别。
接进系统
- Webhook 触发:把工单系统的出站 webhook(Zendesk、Intercom、Plain……)指向一个小处理器:提取正文 → 调 route() → 通过工单 API 把结果写回。
- 渠道选择:同一请求可直接换成 Vercel AI Gateway(typesafe-ai/jev)、Cloudflare Workers AI(typesafe/jev)或 Vivgrid(jev)——见渠道对比。两个渠道做个容灾切换是廉价的保险(清单里也有这条)。
- 可观测性:记录类别/置信度分布,而不只是路由计数。置信度直方图的漂移,是流量结构或模型行为变化最早的信号。
下一步
路由跑通之后,同一个 State 可以喂给生成环节:Jev 完成分类、定级、过滤垃圾之后,由对话式 LLM 起草回复——就是 Jev 与 LLM 页讲的混合模式。想在动代码前测试问题措辞,在线试玩免费运行真实决策并输出完整概率。