JEV - 退出环路:置信度写进代码

置信度写进分支之后,人从每张工单的必经之路退到边缘,只处理概率仍然散开的少数。高权限动作仍由代码在阈值之上执行。

JEV - 退出环路:置信度写进代码

联合作者:folkbench.com (Folkbench 是面向 AI API、模型服务及相关站点的可复核评测与选择平台,依据已发布的服务资料、价格、可用性、延迟与证据窗口,帮助用户比较并选择使用路径。)

这一组共十篇:

人在环路中间,曾经是妥协:模型会胡说,所以高风险动作前面站一个人。站久了,人变成架构负债。吞吐不再取决于带宽,取决于有没有人在班。Jev 把这件事倒过来。置信度写进分支。人从主干退到边缘,只处理分布仍然散开的那一小截。

人为什么会被拉进来

聊天模型是文本续写器。输出的形状不稳定,幻觉会直接变成业务事故。金融、派单、合规因此叠了两层防御。

解析层越垫越厚

为了从一段话里抠出合法 JSON,周围长出 Pydantic、重试、关键词黑名单和第二次提示。一条判定的路径变成:写提示、等生成、解析失败、再提示、再评估。延迟从一次调用涨成一轮循环。

人工队列变成主干

防御仍不敢保证时,产品会说:这里挂一个人工队列。系统变成“模型起草稿,人来决定”。

  • 上限是人的速度和班次,不是机器。
  • 人要在几个系统之间切换,读一段非结构化的话,疲劳本身带来误判。
  • 买来的算力最后像打字员前面的草稿机。这是伪自动化。

置信度写进分支

以前不能把模型直接写进 if,是因为“我有九成把握”本身不可信,也很难拿来比较。Jev 交出来的是封闭题上的概率。高到政策允许,代码执行。散着,才去边缘队列。

请求
  │
  ▼
Jev
  ├─ 概率过阈值 ─► 代码执行
  └─ 概率不够   ─► 边缘上的人

概率先收拢

它不写为什么。它把语义压到你定义好的类别或档位上,给出数值。墙的左边吸收自然语言的混乱。墙的右边只剩能测试的数。

阈值才是路由

阈值是政策,不是模型的出厂设置。例如退款这种高权限动作,可以把“是”的概率卡在 0.99。过了,就当硬分支走。没过,不要为了自动化去硬闯。0.99 在这里是例子,每条业务自己写。

人留在边缘

人不再站在每个主干节点上。人工队列从必经之路变成异常拦截。它吞吐的是概率模糊的那一小部分,不是每一张工单。

一张工单,两种写法

先生成,再解析

def handle_ticket_legacy(ticket_text: str):
    prompt = f"""
    阅读工单,返回 JSON:
    {{"intent": "REFUND"|"COMPLAINT"|"OTHER", "urgency": "HIGH"|"LOW"}}
    工单:{ticket_text}
    """
    raw = chat_model.complete(prompt)
    try:
        data = json.loads(raw)
    except json.JSONDecodeError:
        return push_to_human(ticket_text, reason="parse")
    if data.get("intent") == "REFUND" and data.get("urgency") == "HIGH":
        # 没有可信的把握,高权限动作仍不敢自动做
        return push_to_human(ticket_text, data)
    return default_route(data)

解析要处理缺字段和碎格式。就算解析成功,也不知道它有多稳,高风险分支还是回到人。

分布直接进分支

def handle_ticket_jev(ticket_text: str):
    refund = jev.noul(state=ticket_text, statement="这是一笔应当自动进入退款审查的高风险请求")
    kind = jev.choice(
        state=ticket_text,
        options=["HIGH_RISK_REFUND", "NORMAL_INQUIRY", "SPAM"],
    )
    if kind.top == "HIGH_RISK_REFUND" and refund.p_yes >= 0.99:
        return execute_refund_review(ticket_text)
    if kind.top == "NORMAL_INQUIRY" and kind.probability >= 0.95:
        return auto_reply(ticket_text)
    return push_to_edge_human(ticket_text, confidence=kind.probability)

这里没有把“自动退款”说成模型的权利。高权限动作仍然是代码在阈值之上调用的函数。函数里该有的账务校验,一行都不能少。模型只提供封闭题的概率。

放在一起看

维度 先生成,人在环中 分布写进分支
控制流 try-catch、重试、护栏 阈值和普通分支
延迟 一次生成,常常 1 秒以上;等人则是小时 封闭调用大约 70–500 毫秒;等人只发生在边缘
人介入的位置 常常在主干上 只在概率不够的时候
状态 中间夹着一段文本 过,或者不过

确定性回到 if

软件工程要的是分支可测。聊天模型进主干之后,if 前面多了一段可能变形的话。封闭题把变形留在墙的左边。右边仍是 if 和 else。

人是最大的一块摩擦,当每个请求都要等他点一下。把他拉出主干之后,过高阈值的流量不再为了确认而停住。概率掉下去的时候,系统只在局部滑向边缘,不把整条链堵住。

人在环路中间,是早期付的妥协。成熟的接法不是让人当零件,是让人看那些仍然散开的少数,并处理极端异常。关节负责倾向。人负责还没写进政策的那一截。

系列