Skip to content

决策模型与额度池 ​

功能概述 ​

决策模型是一类特殊的 AI 渠道:不做自由文本生成,而是对一组类型化问题给出概率化判断。现有渠道包括 TypeSafe.ai 的 Jev(jev-latest)与自托管 NanoJev;另有 Perplexity Decisions、OpenAI Decisions、Cloudflare Clef/Clef-flash 的直连适配器,需管理员配置与真实验收后才能上架。覆盖三种问题原语:

原语含义编辑器对应
noul是非判断(附概率与 true/false 分布)Decision 的是否判断项、if-else / loop / promise 的 AI Prompt 条件
choice单选(附置信度与候选概率分布)Decision 的候选判断项
score评分(附等级概率分布与最高概率等级)Decision 的评分判断项(x-jev-score-levels)

在编辑器侧,Decision Block 的判断说明(文字 + @ 变量引用)作为材料发给决策模型,schema 自动翻译成问题组,输出中附带 __jev__ 逐题详情(值/概率/分布,评分题附等级名);if-else / loop / promise 的条件可切到「AI Prompt」模式,判断依据来自容器块级判断说明,并可开启「输出判断详情」拿到 @{块名.decision}。

管理侧的核心能力是渠道凭证池(额度池):一类渠道配置多把 API Key 组池接力——某把 Key 额度耗尽时自动下架,流量切到下一把;换新 Key 后一键恢复回到池中。

界面说明 ​

管理后台 · 模型管理 → 渠道 ​

TypeSafe (Jev) 渠道卡片上有一个「凭证池」区块,把同一渠道的多把 Key 聚合展示:

元素说明
主凭证渠道的第一把 Key(凭据组 ai_provider:typesafe)
凭证 2 / 凭证 3额度池别名槽位(ai_provider:typesafe_2 / typesafe_3,各自独立凭据组、模型候选行与 smoke 证据)
状态标签每个槽位显示:已启用 / 已禁用 / 未配置
凭证编辑打开凭据组编辑弹窗(API Key + Base URL),与主凭证同一套表单
刷新重新拉取池状态(各槽位参与服务的模型变体与禁用原因)

槽位上可能出现的状态标记:

标记含义
额度耗尽已自动下架该 Key 触发了运行时额度熔断(见下文),旁边会出现「恢复」按钮
待激活别名槽位已挂接到模型但尚未启用(需先通过三原语 smoke),旁边出现「启用」按钮
池已耗尽该模型下家族全部变体都被禁用,调用会显式失败——请补充或恢复任一凭证

操作步骤 ​

配置新的直连决策渠道 ​

配置前确认范围:仅纯文本,最多64题,候选2–255项、评分2–10级,单层字段。 图片、音频、文件会在推理请求前拒绝。平台范围小于部分上游能力,不会自动拆分请求。

渠道卡片模型凭据组必填
Perplexity Decisionspplx-decider-v1.1-27bai_provider:perplexity_decisionsAPI Key
OpenAI Decisionsgpt-6-luna,平台目标 gpt-6-luna-decisionsai_provider:openai_decisionsAPI Key
Cloudflare Clefclef / clef-flashai_provider:cloudflare_decisionsAPI Token + Account ID

进入「模型管理 → 渠道」后,在对应卡片配置独立凭据。Cloudflare 需要该 Token 所属的32位 Account ID,只有 Key 无法调用。Base URL 留默认官方地址即可;当前不支持自定义代理或其他凭据组覆盖。既有 Perplexity 搜索、OpenAI 聊天凭据与默认模型不会被自动共用或替换。

完成候选同步后,仍要走价格审核、服务端三原语 smoke、手动发布与启用;没有真实 Key 测试的候选保持未上架。离线测试通过不等于上游账号已开通。换 Key 或 Cloudflare 账号后需重跑 smoke。DB 凭据组停用、异常或无法读取时不会借环境变量重新启用。

OpenAI 拒答会明确中止本次决策,不返回 false 或部分业务答案;真实用量仍记录。超时、5xx或未知用量不冒充成功结算,也不自动向另一供应商重放。评分输出是连续期望,概率最高等级另看 __jev__.level。

本批尚未接入 Liquid d1(字段契约待核实)、网关和 Vela 自托管;原生 TypeSafe 网关接口的范围不变。

配置渠道第一把 Key ​

  1. 进入管理后台 → 模型管理 → 渠道,找到 TypeSafe (Jev) 卡片;
  2. 点击主凭证的「凭证编辑」,填入 API Key(https://api.typesafe.ai 为默认地址);
  3. 启用凭据组后,通过上架流程(见相关链接的 runbook)完成三原语 smoke 与发布。

增加一把 Key 进池 ​

  1. 在凭证池区块点击「凭证 2」的「凭证编辑」,填入新的 API Key 并启用;
  2. 用 PROVIDER=typesafe_2 再跑一遍上架脚本:候选同步 → 挂接到既有 jev-latest(价格保持不变)→ 三原语 smoke → 通过后自动激活为池内变体;
  3. 完成后 jev-latest 的供货链变为 [typesafe, typesafe_2],策略 sequential:第一把耗尽自动用第二把。

额度耗尽自动下架 ​

额度类错误(如 HTTP 402、明确的余额耗尽提示;命中已识别限流特征——rate limit / RPM / 每分钟配额等——的错误不计入熔断)在滑动窗口内累计达到阈值后,系统自动:

  • 禁用该变体并写入运行时禁用元数据(与发布门禁的剔除互相独立、互不覆盖);
  • 刷新路由缓存,流量立即切到池内下一把 Key;
  • 事件记录到 provider_degradation_events,管理界面槽位显示「额度耗尽已自动下架」。

阈值可配置(环境变量,默认值见下):

环境变量默认含义
AI_QUOTA_DISABLE_THRESHOLD3窗口内累计 N 次额度类失败触发下架
AI_QUOTA_DISABLE_WINDOW_MIN10滑动窗口长度(分钟)

额度判定目前仅对 TypeSafe 家族渠道启用,且阈值判定锚定上游错误格式(本地校验错误不会触发下架)。

池允许耗尽至零:全部 Key 耗尽时调用显式失败(优于反复撞死 Key),请补充新 Key 后恢复。

恢复一把被下架的 Key ​

  1. 先在「凭证编辑」里把该槽位换成新的有效 Key(旧证据绑定旧凭据指纹,换 Key 后 smoke 证据即失效);
  2. 点击槽位上的「恢复」按钮(对应 POST /admin/ai-provider-pool/variants/re-enable,mode=quota_recovery)——恢复立即生效:变体直接重新参与路由,不经过 smoke 校验;
  3. 随后重跑上架脚本验证新 Key:别名槽位用 PROVIDER=typesafe_N(脚本会重跑三原语 smoke;已启用的变体会跳过激活步骤),主凭证用 PROVIDER=typesafe。若 smoke 未通过,说明 Key 无效,请先修复再继续使用。

注意:若变体同时被发布门禁剔除(能力不达标),「恢复」会被拒绝——需要走正常的重新上架门禁流程,而不是额度恢复。

运行级亲和 ​

当模型策略为 round_robin 时,同一 Run 的调用按 hash(runId + 协议槽) % 可用候选数 计算稳定的起始槽位:在同一协议槽、池内候选不变的前提下,同一 Run 首选同一把 Key,既分散负载又保护绑定在单把 Key 上的上游缓存。边界:首选 Key 失败时仍会临时切换到池内其它 Key(可用性优先);池拓扑变化(增删 Key)会重新映射;无 Run 上下文的直连调用仍按轮询指针。

管理 API ​

方法路径说明
GET/admin/ai-provider-pool/status?family=typesafe家族凭证池状态聚合(凭据组 + 各模型变体 enabled / 禁用元数据 / 池耗尽标记)
POST/admin/ai-provider-pool/variants/re-enable变体恢复(quota_recovery)或别名激活(alias_activation,服务端强校验 smoke 证据)

均需 JWT + site:admin 权限;端点索引见管理端点目录。

re-enable 请求体按完整四元组定位单一变体(不支持批量):

字段说明
modequota_recovery(额度熔断恢复)或 alias_activation(别名激活,服务端强校验 smoke 证据)
provider凭证槽位渠道 id:主渠道 typesafe(可用于额度恢复)或别名 typesafe_2 / typesafe_3(alias_activation 仅限别名)
model_target模型标识(如 jev-latest)
provider_model_id渠道侧模型 id
protocol协议,默认 openai-chat

相关链接 ​

AI Workflow Editor