arganzheng · 2026-11-14
四个指标并列(质量、成本、延迟、安全);防御在架构不在措辞;改动 = 发布,依赖也会变。
%%{init: {"flowchart": {"wrappingWidth": 170}}}%%
flowchart TB
O1["01 模型网关"] --> O2["02 成本工程"]
O1 --> O3["03 延迟工程"]
O1 --> O4["04 安全"]
O1 & O4 --> O5["05 治理与合规"]
O2 & O3 & O4 --> O6["06 发布工程"]
O6 --> O7["07 数据飞轮与上线"]
预防的事故:key 散落、锁死供应商、无归因。七项职责全走一层;不做业务逻辑、不改请求体、不默认语义缓存
%%{init: {"flowchart": {"wrappingWidth": 420}}}%%
flowchart TB
subgraph APPS["十二个服务"]
direction LR
A1["客服"] --- A2["搜索"] --- A3["报告 agent"] --- A4["…"]
end
APPS -- "逻辑模型名 + 网关凭据" --> GW["<b>模型网关</b><br/>认证 · 路由 · 限流 · 归因<br/>日志 · 缓存 · 内容检查"]
GW -- "供应商 key 只在这里" --> P1["OpenAI"] & P2["Anthropic"] & P3["自托管 vLLM"]
GW -. "限流统一退避" .-> P1
所有调用过网关;推理状态抽象不掉
| 形态 | 例 |
|---|---|
| 自托管 | LiteLLM |
| 托管市场 | OpenRouter |
| 边缘 | Cloudflare AI Gateway |
| 抽象的边界 | 推理状态与缓存不能抽象掉 |
预防的事故:账单吓一跳。没有归因就没有优化——按任务看 p50/p95,长尾 5% 任务花 60% 的钱
%%{init: {"flowchart": {"wrappingWidth": 180}}}%%
flowchart TB
B["月底账单"] -- "没归因就没优化" --> T["每次调用打标签<br/>租户 · 功能 · 版本 · 任务"]
T --> L["按天账本"]
L --> V["按任务看 p50/p95"]
V --> F["5% 任务花 60% 钱"]
F --> A["预算降级 · 缓存 · 分流 · 批处理"]
级联/缓存/Batch 省 50–90%;定价覆盖 p95
| 手段 | 量级 |
|---|---|
| 级联 | 50–80% |
| 缓存输入 | 50–90% |
| Batch API | 50% |
| 长尾 | 5% 的任务花 60% |
预防的事故:用户等。七段分解各有药;agent 延迟减步数 > 并行 > 每步更快
七段各有药;prefill 缓存命中是最大杠杆
| 段 | 药 |
|---|---|
| 排队 | 限流、优先级 |
| prefill | 缓存命中是最大杠杆 |
| 思考 | effort 选档 |
| decode | 输出长度约束、流式 |
| 工具 | 并行、超时 |
| 多步 | 减步数 |
| 网络 | 就近、连接复用 |
预防的事故:EchoLeak、MCP 投毒。注入链路逐环有层拦——防御在架构的五层,不在措辞
%%{init: {"flowchart": {"wrappingWidth": 170}}}%%
flowchart TB
IN["① 输入侧<br/>来源标记与分区"] --> M["模型"]
M --> P["② 权限与沙箱四层"]
P --> O["③ 输出处理<br/>脱敏 · 执行前检查"]
O --> D["④ 数据流控制<br/>敏感数据不出边界"]
D --> R["⑤ 监控与红队"]
R -.->|"新链路"| IN
classDef step fill:#fff7e0,stroke:#c98a00,stroke-width:2px,color:#222
class IN,M,P,O,D,R step
七环链路任一环可拦——工作区要 deny
| 事件 | 链路 | 拦在哪 |
|---|---|---|
| EchoLeak | 七环:邮件 → 检索 → 注入 → 读 → 拼 URL → 渲染 → 外传 | 任一环:权限、输出检查、CSP |
| Cursor 三 CVE | 同模式「读 → 写不该写的文件」 | 配置 / MCP 清单 / 沙箱策略 deny 写 |
| MCP 描述投毒 | 架构性 | 钉哈希、再批准、独立凭据 |
预防的事故:审计拿不出。审计链是把已记下的东西串起来——还要保留、不可篡改、能导出
%%{init: {"flowchart": {"wrappingWidth": 300}}}%%
flowchart TB
Q["这条回复依据什么给出的?"] --> O["输出 → trace_id → 事件日志"]
O --> M["模型快照 · prompt 版本"]
O --> R["文档 id · 当时权限"]
O --> A["发布审批记录"]
M & R & A --> E["审计链 = 已有记录串起来<br/>定期抽一条验证"]
E -. "数据存留 · 供应商训练 · 内容标识" .-> Q
审计链要完整、可保留、不可篡改、可导出
| 法规 | 日期 | 罚则 |
|---|---|---|
| AI Act GPAI 义务 | 2026-08-02 | 1,500 万 € / 3% |
| Article 50 标识 | 2026-08 | |
| Annex III 高风险 | 2027-12-02(推迟) | |
| Annex I | 2028-08-02 | |
| 中国生成内容标识 | 2025-09-01 |
十类改动都算发布:钉一切 + 开关三态 + kill switch 上线前就存在
%%{init: {"flowchart": {"wrappingWidth": 460}}}%%
flowchart TB
C["任何改变模型行为的改动"] -- "改动 = 发布" --> V["不可变版本 + 标签"]
V --> G["门禁:评测集"]
G -- "过" --> CN["灰度:特性开关按租户 / 比例放量"]
CN -- "正常" --> PR["production"]
CN -- "回归" --> RB["一键回滚到上一个版本"]
PR -. "钉快照、变更单独发" .-> V
K["kill switch:宕机走降级"] -.-> PR
十类改动都算发布——钉一切 + kill switch
| 规则 | |
|---|---|
| 控制台改动 | 禁止 |
| 浮动别名 | 禁止——静默升级 |
| 回滚 | 前确认(缓存、状态) |
| 弃用 | 是有截止日的发布 |
预防的事故:系统不变好。飞轮六环——bad case 进评测集不直接微调;物理发布学分批 OTA
%%{init: {"flowchart": {"wrappingWidth": 180}}}%%
flowchart LR
U["使用"] --> F["反馈"]
F --> Q["坏例队列"]
Q --> E["评测集"]
E --> I["改进"]
I --> G["门禁·灰度"]
G --> U
U -->|"授权·脱敏"| D["数据治理"]
D -.-> F
E -->|"真实对"| FT["微调"]
FT --> G
classDef step fill:#fff7e0,stroke:#c98a00,stroke-width:2px,color:#222
classDef gate fill:#eef6ff,stroke:#5b8fd6,color:#222
class U,F,Q,E,I,FT step
class G,D gate
周进评测集、月发布、季审分布
| 节奏 | |
|---|---|
| 周 | 新用例进评测集 |
| 月 | 发布 |
| 季 | 分布变化审视 |
| 主张 | 落点 |
|---|---|
| 四个指标并列 | 网关归因(01)、每任务成本(02)、七段延迟(03)、安全进门禁(04)——任何一个单独优化都会伤另一个 |
| 防御在架构不在措辞 | 网关不改请求体(01)、五层防御(04)、MCP 是权限主体(04)、审计链不可篡改(05) |
| 改动 = 发布,依赖也会变 | 十类算发布(06)、钉一切与探针(06)、弃用是发布(06)、分批 OTA(07) |
/production-and-operations-for-ai-applications.html;通关自测在系列总结