把 AI 能力开放出去,等于把"不稳定"一起开放了
内部用的 AI 功能出问题,最多是自己挨一下;**开放成 API 给外部用**,问题会被放大:
调用方按"确定性服务"的预期来用你 ✗,而你的输出是概率性的 ✗。所以契约要写得更保守。
一、契约(比普通 API 多写三条)
常规 API 契约写:路径、参数、返回结构、错误码 ✔。**AI API 还要写**:
1. **不确定性声明**:输出可能变化(同样的输入不同次调用可能不同 ✔);
2. **不保证的内容**:不保证事实正确、不保证合规可用、不保证时效 ✔(并写明"调用方需自行校验"✔);
3. **版本与变更策略**:模型/提示词版本怎么升、升之前提前多久通知 ✔(外部依赖最怕静默变更 ✗)。
**没有这三条,调用方会把你的输出当真理** ✗。
二、配额与限流(对外的三条底线)
另外要**按调用方隔离**(见多租户限流那篇 ✔):一个接入方的脚本不能拖垮其他接入方 ✔。
三、文档要写"不会什么"
对外文档最常见的缺陷是**只写能力清单** ✗。应显式列出:
**写清"不会什么"能显著降低支持成本** ✔,也减少误用 ✗。
四、可观测与支持
五、五条上线前检查
1. 契约里有不确定性声明、版本策略、"需自行校验"提醒 ✔;
2. 默认配额保守、超额行为明确 ✔;
3. 文档写了不支持与不适合的场景 ✔;
4. 按调用方隔离(配额/并发/成本)✔;
5. 有一键**熔断**与**降级**通知渠道 ✔。
一条判据
> 一个没读过你内部实现的人,只看契约与文档,能否正确预期"什么时候该信、什么时候该校验" ✔?
> 答不上,就说明契约没写够 ✗。