← 返回 FDE 培养总览 FDE 培养 · 知识点深化 · LLM 应用工程
知识点深化 · LLM 应用工程

LLM 应用工程:Prompt 管理、流式输出、重试降级、成本管控、输出校验

调通一次大模型 API 是 10 行代码,做成生产级应用要 1000 行工程化。这一页讲透 FDE 在客户现场真正要做的:Prompt 配置化版本管理、SSE 流式输出、错误重试与降级、Token 计量与预算熔断、输出健壮解析、评测回归。

① 小白第一课怎么学(5 步走,约 90 分钟)

核心认知:LLM 是"不可靠的外部依赖",工程要围绕这个事实做防御。

1建立生产 vs Demo 认知(15 分钟)
读②③:差别在哪。
2Prompt 配置化(20 分钟)
读④:YAML 模板管理。
3流式+重试降级(25 分钟)
SSE 输出、指数退避。
4成本+输出校验(20 分钟)
Token 计量、JSON 解析。
5刷题巩固(10 分钟)
做⑥⑦⑩。
本课小目标学完你要能:① 说清生产级 LLM 应用和 Demo 的区别;② 把 Prompt 做成配置化模板;③ 实现流式输出和错误重试;④ 做 Token 成本计量和预算熔断。

② 一图看懂:LLM 应用四层架构

LLM 应用工程 请求接入层 鉴权/限流/排队 用户配额控制 Prompt 组装层 模板+变量+RAG上下文 版本化/灰度/A/B LLM 网关层 路由/重试/熔断 成本计量/降级 输出后处理层 解析/校验/格式化 幻觉检测/安全过滤 可观测+评测回归 trace/成本/Evals 易错:Prompt写死/没重试/没限流 成本爆了才发现
读法:请求进来 → Prompt 组装 → 模型网关(重试/限流/成本)→ 输出解析校验,全程可观测。

③ 本质直觉:把 LLM 当成"不可靠的外部员工"

想象你雇了一个聪明但不靠谱的外包员工:

他很聪明:什么都能聊,写文案、总结文档、分析数据都行。

但他不靠谱:可能今天请假(API 挂了)、可能聊到一半断了(超时)、可能回答得驴唇不对马嘴(幻觉)、可能说话特别啰嗦(Token 用超了)。

工程化就是给这个员工配好管理体系:

  • 给他清晰的工作指令(Prompt 模板)。
  • 他请假了要有人顶(降级兜底)。
  • 他说话太久要催(流式输出)。
  • 他每次干活要算成本(Token 计量)。
  • 他交的活要检查(输出校验)。
不可靠的外部依赖 API 会挂/限流 输出不固定 按 Token 收费 可能幻觉 工程对策:重试/降级/校验/限流 + 成本监控 + 评测回归
核心心法不要假设 LLM 会正确、快速、便宜、稳定。所有这些都要在工程层做兜底和防御。

④ 完整体系:Prompt 管理、流式、重试、成本、校验

生产 vs Demo 对照

维度Demo 阶段生产阶段
Prompt硬编码在代码里YAML 配置化、版本化、灰度
输出方式等全部生成完SSE 流式逐字输出
错误处理报错就挂指数退避重试 + 降级兜底
成本不关心Token 计量 + 月度预算熔断
输出格式直接用健壮解析 + Pydantic 校验
测试手动试几句评测集回归,改完必跑

Prompt 配置化 YAML 示例

system: |
  你是文档摘要助手。请用 3-5 句话概括,
  不要添加原文没有的信息。
user_template: "请总结:\n{document}"
model: "gpt-4o-mini"
temperature: 0.1
max_tokens: 500

SSE 流式输出骨架

# FastAPI 流式转发
async def gen():
    stream = await openai.chat.completions.create(
        model="gpt-4o-mini", messages=msgs, stream=True)
    async for chunk in stream:
        if chunk.choices[0].delta.content:
            yield f"data: {delta}\n\n"
    yield "data: [DONE]\n\n"

重试策略

错误类型重试?策略
429 限流是指数退避 2s→4s→8s
500 服务端错是同上
网络超时是同上
400 参数错否重试也没用,修代码

成本计算公式

单次调用成本 成本 = 输入token × 输入单价 + 输出token × 输出单价

每次调用都要记录这两个数字,按月/用户/功能维度统计。

⑤ 用法场景与典型例题

例1(流式输出)用户反馈"AI 要等 10 秒才出字",怎么优化?
感知延迟是关键。
① 上 SSE 流式输出,0.5 秒就开始吐字。
② 换更快的模型(gpt-4o-mini 比 gpt-4o 快)。
③ 缩短 Prompt,控制 RAG 检索片段数量。
④ 设 max_tokens 限制输出长度。
答案:流式输出 + 模型选型 + Prompt 精简三管齐下。
例2(错误处理)调 LLM 时遇到 429 限流,代码怎么写?
要重试,但不能盲目。
① 用 tenacity 等重试库,捕获 RateLimitError。
② 指数退避:等 2s → 4s → 8s,最多 3 次。
③ 重试还失败,返回降级兜底文案。
答案:指数退避重试 3 次,最终失败降级。
例3(成本管控)客户说"上个月 LLM 花了 $5000",你怎么降?
Token 就是钱,从多维度省。
① 查用量分布:哪部分涨得最多。
② 简单任务换小模型:分类/提取用 gpt-4o-mini。
③ 精简 Prompt:RAG 只留 top-3,历史对话做摘要。
④ 加结果缓存:FAQ 类问题命中缓存直接返回。
答案:模型分级 + Prompt 精简 + 结果缓存三板斧。

⑥ 高频错误诊断(4 条)

错误 1:Prompt 硬编码在代码里改一句话要发版,没法灰度没法 A/B。正确做法是把 Prompt 抽成 YAML 配置,启动时加载,改了重启即可。
错误 2:LLM 调用不设超时和重试下游 API 抖动就直接报错给用户。必须设 timeout,加指数退避重试,最终失败要有降级兜底。
错误 3:不做 Token 计量和成本控制账单爆炸了才发现。每次调用记录 token 数,设月度预算阈值,超了自动降级或拒绝。
错误 4:假设模型输出一定是合法 JSON模型会加 markdown、废话、缺字段。代码要做健壮解析:去代码块、抽 JSON、Pydantic 校验,失败降级到纯文本。

⑦ 考点真题演练(4 题)

考点分布

考法出题形式应对
生产 vs Demo问区别工程化六件套
流式输出为什么要用降低感知延迟
重试策略什么错误该重试限流/5xx/网络错
成本管控怎么降 LLM 成本模型分级+缓存+精简

真题基础1. 生产级 LLM 应用和 Demo 的最大区别是?

真题中档2. LLM API 返回 429 限流,应该怎么处理?

真题中档3. 为什么要做流式输出(SSE)?

真题拔高4. 下面哪个不是 LLM 成本优化的手段?

⑧ 必背知识点卡

Prompt:配置化 YAML 管理,不写死在代码 支持灰度
输出:SSE 流式逐字返回 降低感知延迟
错误:指数退避重试 3 次 + 降级兜底 只重试可恢复错误
成本:每次调用记 token,月度预算熔断 超了就降级
输出:健壮解析 + Pydantic 校验 别假设一定是 JSON
测试:评测集回归,改完 Prompt 必跑 通过率不掉才上线

⑨ 应用输出:设计一个生产级 LLM 问答接口

场景:企业内部知识库问答,用户上传文档后提问
① Prompt 层:写一个 summarize_v1.yaml 模板,包含 system 指令、user 模板、模型参数。
② 接口层:FastAPI 接 GET /ask,鉴权后查 RAG 检索 top-3 片段。
③ 模型层:组装 Prompt 后调 LLM,开 stream=True,用 SSE 逐字返回。
④ 容错:调用加重试(tenacity),3 次失败返回兜底文案;记录每次调用的 token 和成本。
⑤ 输出:如果要 JSON 格式,做健壮解析+Pydantic 校验,失败降级到纯文本。
口述设计思路"Prompt 配置化,接口做流式,调用加重试和成本计量,输出做健壮校验,全程可观测。"

⑩ 分层练习 15 题(基础 5 + 中档 5 + 拔高 5)

▍基础 5 题

基础1Prompt 为什么要配置化?
改 Prompt 不用发版,支持版本灰度和 A/B 测试,出问题能复现用的哪个版本。
基础2流式输出用什么技术?
SSE(Server-Sent Events),后端逐段 yield,前端 onmessage 逐字追加。
基础3429 限流要不要重试?
要。但要指数退避(等 2s→4s→8s),最多 3 次,不能立刻重试打爆。
基础4LLM 调用失败了怎么办?
重试 3 次还失败,返回降级兜底文案(如"系统繁忙请稍后"),不能白屏或报错。
基础5Token 和成本的关系?
大模型按 token 计费,输入和输出分开计价。每次调用记录 token 数才能算成本。

▍中档 5 题

中档6哪些错误不该重试?
400 参数错误(重试也没用)、认证失败(key 错了)、404 模型不存在。重试只针对限流、5xx、网络超时。
中档7怎么降低 LLM 成本?
三板斧:① 简单任务换小模型;② 精简 Prompt 减少冗余 token;③ 结果缓存命中直接返回。批量任务走 Batch API 半价。
中档8为什么模型输出 JSON 要做健壮解析?
模型输出不稳定:可能包 markdown 代码块、前后有废话、字段缺漏。要去包裹、抽 JSON、Pydantic 校验。
中档9预算熔断是什么?为什么要做?
设月度/每日 LLM 预算阈值,超了自动降级到便宜模型或拒绝服务。防止 bug 导致账单爆炸。
中档10改 Prompt 后为什么要跑评测回归?
Prompt 改动可能让某些 case 变差。跑一遍评测集,通过率不下降才能上线。

▍拔高 5 题

拔高11指数退避为什么要加随机抖动?
否则所有客户端同时重试会造成"惊群效应",把下游再次打爆。加随机偏移让重试时间散开。
拔高12LLM 结果缓存适合什么场景?
高频重复问题(FAQ)、确定性任务(分类、提取)。对话类、个性化场景缓存命中率低,意义不大。
拔高13怎么监控 LLM 应用的健康度?
指标:调用量、p50/p99 延迟、错误率、token 消耗量、缓存命中率。异常告警:错误率突增、成本突增。
拔高14为什么 temperature 越低输出越稳定?
temperature 控制采样随机性。低 temperature(0~0.1)输出更确定、更可预测,适合分类、提取、审单等要确定性的场景。
拔高15客户要求私有化部署大模型,工程上有什么不同?
不用调云 API,自己部署 vLLM/Ollama;要管显存、并发、量化;成本是硬件不是 API 调用;数据不出客户内网。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① Prompt 配置化,不写死在代码里。
② 流式输出降延迟,重试降级保可用。
③ Token 计量控成本,输出校验防幻觉。
天任务自检
第 1 天读②③,画一遍四层架构能说清每层职责
第 2 天背六件套 + 做基础 1-5基础全对
第 3 天写一个流式接口代码SSE 跑通
第 4 天做中档 6-10,理解重试策略知道什么错该重试
第 5 天做拔高 11-15 + 真题 4 题会算成本优化方案
第 6-7 天口述生产级 LLM 应用设计,默写六件套不看资料全默对

← 返回 FDE 培养总览