跳转至

LLM 应用生产化:从 Demo 到可运营系统

LLM 应用上线后,问题通常不再是“能不能回答”,而是:

  • 质量是否稳定。
  • 成本是否可控。
  • 延迟是否可接受。
  • 失败能否定位。
  • 版本能否回滚。
  • 权限和数据是否安全。

这篇回答一个工程问题:

一个 LLM 应用从 demo 走到生产,需要补哪些工程层?

生产化总图

Client
  ↓
API Gateway
  ↓
Application Orchestrator
  ↓
Context Builder
  ↓
Model Gateway
  ↓
Provider / Local Serving

旁路:
Trace Store
Eval Pipeline
Cost Monitor
Prompt Registry
Policy Engine
Feedback Loop

如果是 Agent,还要加:

Tool Runtime
Sandbox
Approval Flow
State Store
Memory Service

生产系统和 Demo 的区别

Demo 生产系统
一个 prompt prompt 版本化
直接调用模型 Model Gateway
手动看效果 eval dataset + 自动回归
出错重试一下 分类重试、fallback、超时预算
没有日志 trace、指标、成本、审计
单用户 多租户、限流、权限
靠感觉调参 实验记录和灰度

Demo 可以快,生产系统要可解释、可回滚、可持续运营。

API Gateway

API Gateway 处理模型无关的入口问题:

  • 鉴权。
  • 租户识别。
  • 限流。
  • 请求大小限制。
  • 幂等键。
  • 审计日志。
  • 基础 WAF 和安全过滤。

不要把这些逻辑塞进 prompt。入口层能确定的事情,应该由程序确定。

Model Gateway

Model Gateway 处理模型供应和路由:

  • provider 适配。
  • OpenAI-compatible 接口统一。
  • 模型别名。
  • fallback。
  • 重试。
  • 成本统计。
  • provider 健康检查。
  • A/B test。

应用不应该散落调用不同 provider SDK。

推荐调用方式:

{
  "logical_model": "rag-answer",
  "task": "policy_qa",
  "tenant": "enterprise_a",
  "input_tokens_estimate": 3200,
  "latency_budget_ms": 8000
}

网关再决定真实模型和参数。

Prompt Registry

prompt 不是临时字符串,而是工程资产。

每个 prompt 应该记录:

字段 作用
id 稳定标识
version 可回滚
owner 负责人
task 适用任务
model_family 适配模型
inputs_schema 输入变量
output_schema 输出契约
eval_set 回归测试
changelog 修改原因

上线时不要只说“改了 prompt”。要能回答:

  • 改了哪个 prompt。
  • 为什么改。
  • 影响哪些任务。
  • 跑了哪些 eval。
  • 是否灰度。
  • 如何回滚。

Context Builder

Context Builder 决定模型这一轮看到什么。

它负责:

  • 系统规则。
  • 用户输入。
  • 对话历史。
  • RAG 资料。
  • 工具 schema。
  • 权限状态。
  • memory。
  • 当前任务状态。
  • 压缩摘要。

生产系统要记录最终发给模型的上下文版本,但要注意隐私脱敏。

对于 Agent,Context Builder 是核心能力,详见 上下文工程

Trace Store

没有 trace,就没有可运营的 LLM 应用。

最小 trace 包含:

字段 说明
request id 一次请求的唯一标识
user / tenant 用户和租户
task type 任务分类
model 模型和版本
prompt version prompt 版本
input / output token token 用量
latency 耗时
cost 成本
retrieval sources RAG 使用的 source id
tool calls 工具调用
final answer 最终输出
error 错误信息

Agent trace 还要记录每一步:

step id
thought summary
tool call
tool result
state update
approval decision
stop reason

trace 不是为了“监控好看”,而是为了失败归因、回归测试和成本优化。

指标体系

指标至少分四类。

质量指标

  • 任务完成率。
  • eval pass rate。
  • faithfulness。
  • citation accuracy。
  • schema validity。
  • 人工满意度。

性能指标

  • TTFT。
  • 总耗时。
  • P50 / P95 / P99。
  • timeout rate。
  • retry rate。

成本指标

  • input token。
  • output token。
  • reasoning token。
  • retrieval / rerank 成本。
  • tool 成本。
  • cost per task。

安全指标

  • blocked tool calls。
  • approval required rate。
  • approval denied rate。
  • prompt injection hits。
  • data access violations。

Eval Pipeline

生产化不能只靠人工试用。

最小 eval pipeline:

收集真实问题
  ↓
标注 expected behavior
  ↓
离线跑当前版本
  ↓
离线跑候选版本
  ↓
比较质量、成本、延迟
  ↓
灰度
  ↓
线上采样复核

每次改这些东西都要回归:

  • 模型。
  • prompt。
  • 工具 schema。
  • RAG 数据源。
  • chunk 策略。
  • reranker。
  • 路由规则。
  • 安全策略。

评测细节见 Agent 效果评测框架

灰度和回滚

LLM 应用的版本不只是代码版本。

可能变化的对象:

  • 模型版本。
  • prompt 版本。
  • 参数。
  • RAG 索引。
  • 工具 schema。
  • policy。
  • 路由规则。
  • memory 写入策略。

推荐每次发布生成一个 release bundle:

{
  "release_id": "2026-06-23-rag-answer-v3",
  "model": "rag-answer@2026-06-20",
  "prompt": "policy_qa@v12",
  "retrieval_index": "policy_docs@2026-06-22",
  "reranker": "rerank@v2",
  "routing": "default@v5",
  "policy": "tool_policy@v9"
}

这样线上事故发生时,才能快速回滚到上一组组合。

成本控制

常见成本来源:

  • 长对话历史。
  • RAG 塞太多 chunk。
  • reasoning budget 过高。
  • Agent loop 太长。
  • 工具失败导致重试。
  • 没有缓存。
  • 用强模型处理简单任务。

常见优化:

问题 优化
输入太长 压缩历史、减少 chunk、prefix cache
输出太长 限制 max_output_tokens、要求先结论
简单任务太贵 小模型路由
RAG 成本高 hybrid search 后 rerank top_n
Agent 成本高 max steps、stop condition、workflow 化
重复请求 结果缓存、prompt cache

安全和权限

生产系统至少要有:

  • 用户鉴权。
  • 租户隔离。
  • 数据权限过滤。
  • 工具权限。
  • 高风险动作审批。
  • 审计日志。
  • prompt injection 防护。
  • 输出脱敏。

不要依赖模型“自己遵守权限”。权限必须在运行时和数据层生效。

一个上线检查清单

上线前检查:

  • 是否有 eval set。
  • 是否记录 trace。
  • 是否有 prompt / model / RAG 版本。
  • 是否有 fallback。
  • 是否有超时和成本预算。
  • 是否有权限过滤。
  • 是否有灰度和回滚方案。
  • 是否有错误分类。
  • 是否有人工反馈入口。
  • 是否能按 request id 复盘。

常见误区

误区 1:上线就是部署一个模型

模型只是生产系统的一层。上下文、权限、评测、监控和回滚同样重要。

误区 2:prompt 改动不用版本化

prompt 改动可能比代码改动影响更大。

误区 3:只监控错误率

LLM 应用很多失败不是 500,而是“看起来正常但答错了”。

误区 4:只看平均延迟

用户感受更接近 P95 / P99,尤其是 streaming、RAG 和 Agent 场景。

误区 5:没有回滚也敢灰度

LLM 应用的回滚要覆盖模型、prompt、RAG 索引、工具 schema 和路由规则。

下一步

继续读: