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

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

28 分钟 | ⭐ 你已经会大半


🎯 一句话

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


🆚 和传统 DevOps 的三个不同

 ① 不确定性
    传统:同输入同输出,测试可复现
    LLM: 同输入不同输出 → 测试要看分布,不能断言精确值
    → 需要评测集 + 多次运行 + 统计判断

 ② 成本可变
    传统:服务器成本相对固定
    LLM: 每次调用都花钱,且 token 数不可控
    → 成本监控要做到「每功能/每用户」粒度

 ③ 静默退化
    传统:坏了就报错
    LLM: 供应商换版本、数据分布漂移 → 悄悄变差,没有报错 ⭐
    → 必须有持续评测,不能等用户投诉

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

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

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

📉 怎么"看见"静默退化

   最低成本的方案(一小时能搭好):

   ① 准备 30~50 条【固定的】评测输入(覆盖你的核心场景)
   ② 每天定时跑一次,记录分数
   ③ 分数掉出历史波动范围就告警 ⭐

   ⚠️ 关键在"固定"——输入变了,分数变化就没有意义了

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


🔧 五个核心实践

① 版本化一切

   要一起版本化的:
   ├─ 提示词(⭐ 最容易被忽略,改一个字效果可能大变)
   ├─ 模型名与参数(温度、max_tokens)
   ├─ 评测集
   ├─ RAG 的索引和切分配置
   └─ 工具定义

   👉 把提示词当代码管:进 git、走 code review、能回滚

② 可观测性(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. 线上真实失败案例回流进评测集,驱动改进,上线后再收集新失败,形成闭环。即"循环工程"——修流程,不修单个产出

🛑 可以停在这里

走神救援

LLM比传统软件多三麻烦:输出不确定(测试看分布)、成本按量(要按功能/用户监控)、静默退化(悄悄变差不报错)。静默退化四来源:供应商换版本/输入分布漂移/RAG索引腐烂/提示词被人改了;⭐最实用的防线是别用不带版本号的模型别名——升级该是你主动的决定最低成本的检测:30~50条固定输入每天跑,掉出历史波动就告警(输入必须固定,且要先测噪声基准)。五实践:版本化一切(提示词当代码管)、tracing可回放、成本控制、持续评测(供应商更新必重跑)、数据飞轮(失败回流)。⚠️ Prefix Caching 铁律:变的放末尾不变的放开头——开头一个时间戳就让命中率归零。成本要算单次对话成本和 p95(尾部才是失控风险);⭐输出token比输入贵3~5倍,让模型少说废话比压缩输入更省钱这些内容现在已在《智能体工程教程》里了(评测第14章/可观测性挑战A/循环工程第16章/上线清单附录B),深挖直接去那边。

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

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