适配层、回归集与灰度发布
供应商适配层应统一业务真正需要的输入、状态、事件、错误、用量和工具意图;供应商独有能力通过显式扩展或能力声明暴露。两个平台都能返回文字,不代表它们在工具、结构化输出、缓存、视觉或错误语义上等价。适配器的验收必须同时比较质量、延迟、成本、工具轨迹和失败方式。
第一个可运行实验:按分组比较回归结果
使用 Python 3.12 保存 evaluation.py,运行 python evaluation.py。
python
rows = [
{'group': 'zh', 'ok': True, 'latency': 100},
{'group': 'zh', 'ok': False, 'latency': 300},
{'group': 'en', 'ok': True, 'latency': 120},
{'group': 'en', 'ok': True, 'latency': 140},
]
def report(rows):
groups = {}
for row in rows:
groups.setdefault(row['group'], []).append(row)
return {
group: {
'accuracy': sum(r['ok'] for r in items) / len(items),
'p95_like': max(r['latency'] for r in items),
}
for group, items in sorted(groups.items())
}
result = report(rows)
assert result['zh']['accuracy'] == 0.5
assert result['en']['accuracy'] == 1.0
print(result)总成功率可能掩盖某个语言、租户、输入长度或工具类型的回归。固定回归集要包含正常、边界、拒答、长上下文、结构化失败、工具失败和提示注入样本。影子流量不能执行真实写操作;灰度必须记录模型、提示词、schema、适配器和路由规则版本,并能整组回滚。
变体实验
增加一个高延迟但正确的样本,分别计算平均和最大延迟,说明平均值为何不足以做发布门禁。再加入工具参数错误,区分“答案不佳”和“工具轨迹不安全”。
练习
- 为回归结果增加成本、首 token 延迟和工具选择正确率。
- 设计按稳定用户哈希的灰度规则,保证同一用户不会在两个版本间抖动。
- 列出回滚时必须一起恢复的配置版本。