🏠 总目录📚 本教程 13 · LLMOps ← →
📑 本页目录(点开跳转)

13 · LLMOps:把它当软件来运维

⏱ 28 分钟 | ⭐ 你已经会大半


🎯 一句话

LLM 应用比传统软件多了三个麻烦:输出不确定、成本按量计费、质量会悄悄退化。LLMOps 就是应对这三件事的工程实践。


🆚 和传统 DevOps 的三个不同

流程图

① 不确定性
传统:同输入同输出,测试可复现
LLM: 同输入不同输出→测试要看分布,不能断言精确值
需要评测集 + 多次运行 + 统计判断
② 成本可变
传统:服务器成本相对固定
LLM: 每次调用都花钱,且 token 数不可控
成本监控要做到「每功能/每用户」粒度
③ 静默退化
传统:坏了就报错
LLM: 供应商换版本、数据分布漂移→悄悄变差,没有报错 ⭐
必须有持续评测,不能等用户投诉

💀 「静默退化」的四个真实来源

来源 典型场景 你什么时候才会发现
供应商换版本 gpt-4 这类不带日期的别名指向了新模型 用户投诉时 ⚠️
用户输入分布漂移 产品火了,来了完全不同的一批用户 转化率跌了才查
RAG 索引腐烂 文档更新了但索引没重建 用户说"它引用的是旧政策"
提示词被人改了 有人为了修一个 case 改了共享提示词 别的 case 悄悄坏掉 ⭐

🔑 最实用的一条防线:别用不带版本号的模型别名。 用 claude-opus-5 这种明确 ID 而不是 latest 一类的浮动别名—— 升级应该是你主动做的决定,而不是某天早上醒来发现的事实。

📉 怎么"看见"静默退化

操作步骤

  1. 最低成本的方案(一小时能搭好):
  2. 准备 30~50 条【固定的】评测输入(覆盖你的核心场景)
  3. 每天定时跑一次,记录分数
  4. 分数掉出历史波动范围就告警 ⭐
  5. ⚠️ 关键在"固定"——输入变了,分数变化就没有意义了

💡 和《机器学习基础》第 5 章同一条纪律: 先测出噪声基准(同一套输入连跑 5 次的分数波动), 才能判断"今天掉了 3%"是真退化还是随机波动。


🔧 五个核心实践

① 版本化一切

关键信息

② 可观测性(Tracing)

信息关系

一次请求要能完整回放:
用户输入→检索到什么→完整提示词→模型输出
调了哪些工具→各步耗时→token 消耗
🔗 就是智能体教程第 18 章挑战 A 里你要实现的 Tracer

③ 成本控制

手段 说明 典型节省
Prefix Caching 第 6 章,Agent 场景省最多 可达 90%(缓存命中部分)⭐
模型路由 简单请求给小模型(智能体第 2 章顾问策略) 视分流比例,常 50%+
输出长度限制 max_tokens 是硬约束 直接可控
缓存重复请求 语义相同的问题直接返回缓存 FAQ 场景可达 30%+
预算护栏 单用户/单会话上限,防失控(智能体第 1 章 max_steps 的成本版) 防的是尾部灾难

⚠️ Prefix Caching 有一条布局铁律: 把"每次都变的东西"放在提示词末尾,不变的放开头。 一个放在开头的时间戳会让缓存命中率变成 0% —— 因为前缀一变,整个缓存就失效了。这是最容易犯也最贵的一个错。

💰 成本该怎么算(单位经济性)

算一算

❌ 只看月账单总额 → 涨了不知道为什么

✅ 算【每次对话的成本】和【每个用户的月成本】⭐

单次对话成本 = (输入token × 输入单价) + (输出token × 输出单价)

÷ 命中缓存的折扣

⭐ 关键要记录的三个数:

· p50 / p95 单次对话成本 ← p95 才是失控风险所在

· 每个功能入口的成本占比 ← 找出那个吃掉 60% 预算的功能

· 成本 / 业务价值 ← 唯一真正重要的比值

💡 一个反直觉的现实:

输出 token 通常比输入贵 3~5 倍。 所以"让模型少说废话"(限制 max_tokens、要求简洁输出、用结构化格式) 往往比压缩输入更省钱——而大多数人在优化输入。

④ 持续评测

对照

上线前:跑评测集(智能体第 14 章)

上线后:抽样评测线上真实流量 ⭐

供应商更新时:立刻重跑全套 ← 最容易被忽略的一环

⑤ 数据飞轮

数据飞轮 线上真实失败案例 加进评测集 驱动改进 上线 收集新失败 闭环:新失败案例回流 🔗 这就是智能体教程第 16 章的「循环工程」:修流程,不修单个产出
值得盯的不是这五个格子,是底下那条折回去的线 —— 少了它,这就只是一条普通上线流程,接不上下一轮。

🚨 上线检查清单(浓缩版)

要点

☐ 提示词在 git 里,能回滚

☐ 有评测集,上线前必跑

☐ 有完整 tracing,能回放任意一次请求

☐ 成本有监控和上限护栏

☐ 有降级方案(模型挂了怎么办)

☐ 输出有校验(JSON 能解析?必填字段在?)

☐ 有灰度和 A/B 能力

☐ 供应商更新时有重测流程

☐ 线上失败会回流到评测集

🔗 更完整的版本在智能体教程附录 B,那份是给 Agent 场景的,这份是通用 LLM 应用的。


🔗 和站内其他章的关系

这一章几乎全部是你已学内容的重组:

已学的 对应
评测方法论(智能体第 14 章) 持续评测
结构化 trace(挑战项目 A) 可观测性
顾问策略、Prefix Caching 成本控制
降级与护栏(智能体第 16 章) 可靠性
循环工程(智能体第 16 章) 数据飞轮
A/B 实验(推荐算法第 12 章) 灰度发布

📦 深挖的话要学什么

📍 每条后面标了它在哪: 📗 本库有 = 站内已经讲透,点进去就行;📙 半有 = 站内讲了一半,另一半得外找; 📕 要外找 = 站内没有,得去论文或别处。 (这份清单以前只列词不说去哪,指到的坑有些站内根本没挖过,按图索骥会扑空。) ⚠️ 这一章有个特殊情况:本章下面的判断是「不值得单独成套,80% 是已学内容的重新组织」。 下面的标记正好把这句话坐实了——大部分条目 📗 都指向别的板块,而不是指向"还没学的东西"。

需要的前置:后端/运维基础。没有新理论,全是工程实践。


⚖️ 要不要深挖

你的情况 建议
有 LLM 应用要上生产 ✅ 必须做,但不必"学"——照着检查清单做即可
还在做原型 ⛔ 先做出来再说,别过早工程化
做平台/基础设施 ✅ 值得深挖网关和观测层

🔑 我的判断:这块不值得单独成套。 它 80% 是你已学内容的重新组织,剩下 20% 是具体工具(且工具变化快,看文档就行)。

✅ 现状更新:这些内容现在已经在《智能体工程教程》里了—— 评测看第 14 章、可观测性看挑战项目 A、循环工程看第 16 章、上线清单看附录 B。 本章的价值是给你一个"通用 LLM 应用"视角的浓缩版,深挖直接去那边。


✅ 检查点

  1. LLM 应用比传统软件多了哪三个麻烦?
  2. 「静默退化」有哪四个来源?最实用的一条防线是什么?
  3. 怎么用最低成本"看见"静默退化?为什么输入必须固定?
  4. Prefix Caching 有什么布局铁律?违反了会怎样?
  5. 成本该怎么算?为什么要看 p95 而不只看均值?
  6. 输入 token 和输出 token 哪个贵?这对优化方向有什么影响?
  7. 提示词该怎么管理?
  8. 什么是数据飞轮?
👀 答案
  1. 输出不确定(测试不能断言精确值)、成本按量计费且可变、质量会静默退化。
  2. ①供应商换版本 ②用户输入分布漂移 ③RAG 索引腐烂 ④提示词被人改了(为修一个 case 改了共享提示词,别的悄悄坏掉)。最实用的防线:别用不带版本号的模型别名——升级该是你主动的决定,不是某天醒来的事实。
  3. 准备 30~50 条固定的评测输入,每天定时跑,分数掉出历史波动范围就告警。输入必须固定,否则分数变化没有意义(分不清是模型变了还是题变了)。同时要先测噪声基准(同套输入连跑 5 次的波动),才能判断"掉 3%"是真退化还是随机。
  4. 把每次都变的东西放提示词末尾,不变的放开头。一个放在开头的时间戳会让缓存命中率变成 0%——前缀一变整个缓存失效。
  5. 算每次对话成本和每个用户月成本,而不只看月账单总额。看 p95 是因为尾部才是失控风险所在——均值正常但 p95 爆炸的场景很常见。
  6. 输出通常比输入贵 3~5 倍。所以让模型少说废话(限 max_tokens、要求简洁、用结构化输出)往往比压缩输入更省钱——而大多数人在优化输入。
  7. 当代码管:进 git、code review、可回滚、和模型参数一起版本化。改一个字效果可能大变。
  8. 线上真实失败案例回流进评测集,驱动改进,上线后再收集新失败,形成闭环。即"循环工程"——修流程,不修单个产出。

🛑 可以停在这里

⚡ 走神救援

先记住这几件事

下一节 👉 14-合规与伦理.md

打卡记录保存在你的浏览器里,首页能看到总进度