Expert Day 176
Week 26 复习 — 生产级 LLMOps Stack
把 Day 163-175 的所有组件串成一个完整 LLMOps stack;评估每个组件的成熟度;金融行业 LLMOps 的合规底盘
2026-10-24
Phase 3 - 生产基础设施与评估 (Day 163-176)LLMOpsProductionStackArchitectureCapstone
日期: 2026-10-24 方向: AI系统工程 / LLMOps / Architecture 阶段: Phase 3 - 生产基础设施与评估 (Day 163-176) 标签: #LLMOps #ProductionStack #Architecture #Capstone
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 把 Day 163-175 的所有组件串成一个完整 LLMOps stack;评估每个组件的成熟度;金融行业 LLMOps 的合规底盘 |
| 实操 | 写一份蓝图 + Terraform / docker-compose 描述生产部署;对每个组件出"上线 checklist" |
| 产出 | docs/ai-infra/llmops_stack.md:完整架构、组件清单、deployment 模板、上线 checklist |
一、过去两周回顾
| Day | 主题 | 核心交付 |
|---|---|---|
| 163 | 推理基础设施(vLLM/SGLang/TGI) | vLLM PagedAttention + 部署脚本 |
| 164 | Cost 优化(prompt caching, batch) | 90% 成本下降数据 |
| 165 | Latency 优化(streaming, spec decode) | TTFT/TPOT 测量 |
| 166 | Deterministic eval(20 个 case) | pytest 套件 |
| 167 | LLM judge(pairwise + flip) | κ 校准 |
| 168 | Golden dataset(100 条) | 4 类分层 |
| 169 | Eval pipeline 整合(eval_v1) | CI workflow |
| 170 | Observability(Langfuse) | trace + score + experiment |
| 171 | Versioning + CI(PromptOps) | 灰度发布 |
| 172 | Prompt vs RAG vs FT 决策 | 真实对比数据 |
| 173 | LoRA / QLoRA 实战 | Unsloth + vLLM 部署 |
| 174 | Safety & Guardrails | 多层防御 |
| 175 | Red Teaming | ASR 报告 |
二、生产级 LLMOps 蓝图(最终架构)
┌──────────────────────────────────────────────────────────────────────┐
│ ① Edge / API Gateway │
│ Kong / Envoy ─ Auth (JWT/OAuth) ─ Rate limit ─ WAF │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────┴─────────────────────────────────────┐
│ ② Guardrails Pipeline (Day 174) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Input Scan │→│ Topic Check │→│ PII Anonymize │ │
│ │ (LLM Guard) │ │ (NeMo) │ │ (Presidio) │ │
│ └──────────────┘ └──────────────┘ └──────────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────┴─────────────────────────────────────┐
│ ③ Routing & Orchestration │
│ ┌───────────────────┐ ┌────────────────┐ ┌─────────────────────┐ │
│ │ Model Router │ │ Cache Layer │ │ Prompt Registry │ │
│ │ (Day 164) │ │ (Day 164) │ │ (Day 171, Langfuse) │ │
│ │ haiku→sonnet→opus │ │ Anthropic + │ │ - prod - canary │ │
│ │ + canary split │ │ Redis prefix │ │ - staging │ │
│ └───────────────────┘ └────────────────┘ └─────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────┴─────────────────────────────────────┐
│ ④ Inference Layer │
│ ┌─────────────────────┐ ┌─────────────────────────────────────┐ │
│ │ External APIs │ │ Self-host (vLLM, Day 163) │ │
│ │ - Anthropic │ │ - Llama 4 70B / DeepSeek-V3 │ │
│ │ - OpenAI │ │ - LoRA adapters (Day 173) │ │
│ │ - Google │ │ - PagedAttention + prefix caching │ │
│ │ │ │ - TP=4, fp8 │ │
│ └─────────────────────┘ └─────────────────────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────┴─────────────────────────────────────┐
│ ⑤ Output Pipeline │
│ ┌──────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Output Guard │→│ Constitutional │→│ Streaming render │ │
│ │ (Day 174) │ │ Critique-Revise │ │ (Day 165) │ │
│ └──────────────┘ └──────────────────┘ └──────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
▼
Client SSE
│
┌────────────────────────────────┼─────────────────────────────────────┐
│ ⑥ Observability & Eval │
│ ┌──────────────────┐ ┌────────────────────┐ ┌────────────────┐ │
│ │ Langfuse │←─│ Eval Pipeline │ │ Red Team │ │
│ │ trace+score+ds │ │ (Day 169) │ │ (Day 175) │ │
│ └──────────────────┘ │ - det │ │ ASR weekly │ │
│ ┌──────────────────┐ │ - judge │ └────────────────┘ │
│ │ Prometheus │ │ - golden │ │
│ │ (latency/cost) │ └────────────────────┘ │
│ └──────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
│
┌────────────────────────────────┴─────────────────────────────────────┐
│ ⑦ Data & Compliance │
│ ┌──────────────┐ ┌────────────────┐ ┌──────────────────────┐ │
│ │ ClickHouse │ │ S3 (immutable) │ │ Audit log (7y) │ │
│ │ analytics │ │ prompt/output │ │ +法规条款绑定 │ │
│ └──────────────┘ └────────────────┘ └──────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
三、组件成熟度评估
| 组件 | 成熟度 | 推荐 | 自托管 | 替代 |
|---|---|---|---|---|
| Inference (vLLM) | ⭐⭐⭐⭐⭐ | ✅ | ✅ | SGLang / TGI |
| Anthropic API | ⭐⭐⭐⭐⭐ | ✅ | — | OpenAI / Google |
| Prompt caching | ⭐⭐⭐⭐⭐ | ✅ | — | — |
| Langfuse | ⭐⭐⭐⭐⭐ | ✅ | ✅ | Helicone |
| Eval (in-house) | ⭐⭐⭐⭐ | ✅ | ✅ | promptfoo |
| NeMo Guardrails | ⭐⭐⭐⭐ | ✅ | ✅ | LLM Guard |
| PromptOps | ⭐⭐⭐ | ✅ | ✅ | git-only |
| LoRA Unsloth | ⭐⭐⭐⭐ | ✅ | ✅ | HF PEFT |
| PyRIT red team | ⭐⭐⭐⭐ | ✅ | — | Garak |
四、Docker Compose 整体部署示例
# llmops-stack/docker-compose.yml
version: '3.9'
services:
# ── Inference ──
vllm:
image: vllm/vllm-openai:v0.6.3
runtime: nvidia
command: |
--model meta-llama/Llama-4-70B-Instruct
--tensor-parallel-size 4
--enable-prefix-caching
--max-model-len 32768
--quantization fp8
ports: [8001:8000]
environment:
VLLM_API_KEY: ${VLLM_KEY}
# ── Gateway / Guardrails ──
api-gateway:
build: ./gateway
ports: [8000:8000]
environment:
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
VLLM_BASE: http://vllm:8000/v1
LANGFUSE_HOST: http://langfuse:3000
depends_on: [langfuse, vllm]
# ── Observability ──
langfuse:
image: langfuse/langfuse:3
ports: [3000:3000]
depends_on: [pg, ch]
environment:
DATABASE_URL: postgresql://lf:lf@pg:5432/lf
CLICKHOUSE_URL: http://ch:8123
NEXTAUTH_SECRET: ${LF_SECRET}
ENCRYPTION_KEY: ${LF_ENC_KEY}
pg:
image: postgres:16
environment: { POSTGRES_PASSWORD: lf, POSTGRES_USER: lf, POSTGRES_DB: lf }
volumes: [pg_data:/var/lib/postgresql/data]
ch:
image: clickhouse/clickhouse-server:24
volumes: [ch_data:/var/lib/clickhouse]
# ── Cache ──
redis:
image: redis:7
volumes: [redis_data:/data]
# ── Eval / CI runner ──
eval-runner:
build: ./eval_v1
profiles: [eval]
environment:
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
LANGFUSE_HOST: http://langfuse:3000
# ── Prometheus / Grafana ──
prometheus:
image: prom/prometheus:latest
volumes: [./prom.yml:/etc/prometheus/prometheus.yml]
ports: [9090:9090]
grafana:
image: grafana/grafana:11
ports: [3001:3000]
depends_on: [prometheus]
volumes:
pg_data: {}
ch_data: {}
redis_data: {}
五、Cost & Performance 总览(月度,金融客服场景)
假设:日 100 万次对话,平均 500 input + 200 output token,5% 走 opus,30% sonnet,65% haiku。
| 项目 | 单位 | 数量 | 月成本 |
|---|---|---|---|
| Anthropic API(all routed) | calls | 30M | $9,800 |
| 加 prompt caching(命中 70%) | — | — | -$6,200 |
| 自托管 vLLM(H100×4) | 月租 | — | $4,500 |
| Langfuse self-host VM | — | — | $80 |
| ClickHouse + PG VM | — | — | $120 |
| Redis cache | — | — | $50 |
| Eval pipeline(CI + nightly) | — | — | $400 |
| Red team weekly | — | — | $130 |
| Guardrails LLM call(haiku check) | extra calls | 30M | $250 |
| 总成本 | $9,130/月 |
vs 全 opus 不优化:$60K+/月。节省 85%。
六、上线 Checklist(必须 ✅ 才上)
Inference & Cost
- vLLM 健康检查 + autoscaling
- Anthropic API key 通过 secret manager 管理
- Prompt caching 验证 cache_read_input_tokens > 50%
- Model router 配置 + 监控
- Per-feature cost monitoring(每业务部门切片)
Latency
- Streaming 全链路 SSE 不阻断
- CDN / Gateway proxy_read_timeout > 120s
- P95 latency 监控 + 告警
- Spec decoding(如自托管)approval 测试通过
Eval
- Golden set 至少 200 条,含 P0 case
- CI eval 集成到 PR,min_pass_rate 设阈
- Nightly full eval + Slack 报告
- LLM judge κ > 0.7
Observability
- Langfuse 接入 100% 流量
- User feedback API 实现
- Cost / Latency / Quality 三大 Grafana dashboard
- Alert:error_rate > 1%、cost spike、quality drop
Versioning
- Prompt 全部外置文件 + git
- Prompt registry sync(Langfuse)
- Canary 流量分流(5% → 25% → 100%)
- 回滚演练通过(< 1 min)
Safety
- Guardrails 多层覆盖(PII / injection / banned / constitutional)
- Tool whitelist + role-based permission
- Red team ASR < 5%(整体)+ LLM06/07 = 0%
- PII 脱敏不出域
Compliance
- Audit log 7 年保留 + immutable bucket
- Prompt / output 输出至 S3 worm
- 模型版本号绑定 git_sha / golden_version
- SME(合规/法务/风控)签字 prompt + 模型上线
- 金融监管备案文件(如适用)
DR / Continuity
- LLM API down 降级(cache 或 deterministic-only 模式)
- Langfuse down 不阻断业务(异步写)
- 多 region 部署或 hot standby
- Runbook / PagerDuty 接入
七、金融领域应用(汇总)
- 客服:高频路由 haiku,prompt caching 90% off,LoRA 私域分类
- 信贷决策:opus + RAG + constitutional,audit log 7 年
- 合规扫描:Batch API 50% off 夜间跑
- 投研助手:1h cache 大量 KB,sonnet 主力
- 披露/报告:streaming + spec decode 长输出
- AML/反欺诈:deterministic + LLM judge 双重,guardrails 拦关键词
- 客户经理 copilot:低延迟 + 并行 tool call + role guard
八、生产经验与陷阱(综合)
- 不要从零自建:先用 Anthropic + Langfuse + vLLM 三件套跑起来,半年后再考虑自研组件
- 观测先行:Langfuse 第一天接入,即使其他还粗糙
- 小步迭代 prompt:版本化 + canary,一次只动一个变量
- eval 决定一切:没有 eval 的 LLMOps 是裸奔。golden set 是你最重要的资产之一
- 成本和质量平衡:路由 + caching 是最大杠杆。能省 80% 不动模型升级
- 安全是底线:red team 每周跑、guardrails 多层、数据合规闭环
- 团队协同:PM + AI Eng + SecOps + 合规 + 法务,缺一不可
- 知识传承:每个组件配 runbook、决策 ADR、code 注释;新人 1 周能跑通
- 持续投入:LLMOps 不是一次性项目。每季度引入新工具 / 弃用旧组件
- 业务对齐:所有指标(cost / latency / quality)必须能映射到业务 KPI(NPS / 转化率 / 合规率)
九、面试题(Capstone)
-
设计一份金融机构内部 LLM 平台架构
- 七层架构:Gateway → Guardrails → Routing → Inference (API + 自托管) → Output Pipeline → Observability → Compliance Storage;说明每层 trade-off
-
LLMOps 团队应该怎么组?
- PM(业务/eval/SLA)+ AI Eng(prompt/FT)+ Platform Eng(infra/cost)+ SecOps(red team/guardrails)+ Compliance;3-5 人小核心,扩展到业务线
-
如何评估某个 LLM 应用是否准备好上线?
- 7 维 checklist:成本/延迟/质量/安全/可观测/灰度/审计;P0 100%、整体 ASR < 5%、eval pass rate > 92%、SME 签字
-
金融机构内部 LLM 与 SaaS LLM 选型差异?
- 数据驻留、监管审计、可定制 guardrails、模型版本控制、SLA、cost predictability —— 倾向自托管 + Anthropic API 混合
-
你最自豪的 LLMOps 设计是什么?(开放题)
- 答:layered defense(每层独立、单点失效不致灾)+ 完整 audit log(合规可追溯)+ 灰度回滚(< 1 min)+ 路由+caching(85% 成本节约)
十、明日预告
Phase 3 后续(Day 177+)将进入"AI Agent 架构与多模态"专题:
- ReAct vs Plan-and-Execute vs Reflexion 框架对比
- Multi-agent / Agentic workflow(CrewAI / AutoGen / LangGraph)
- Multimodal(vision / audio / document)
- AI 在金融垂直场景的端到端方案
- Web3 × AI Agent 综合产品设计
恭喜完成 Phase 3 的"生产基础设施与评估"段落。你已经具备从 0 到 1 在金融机构内部搭建生产级 LLMOps 平台的能力。