返回AI笔记
AI Day 16

AI Day 16: LLM应用架构设计(1) — API Gateway / 路由 / 缓存 — 生产级LLM系统的骨架

LLM应用架构不是"调一个API"这么简单——它是一套从客户端请求到模型响应再到监控反馈的完整工程体系,包含网关(Gateway)、路由(Router)、缓存(Cache)、流式传输(Streaming)、可观测性(Observability)和成本控制(Cost Control)六大支柱。第一阶段学的是"每块砖是什么",今天学的是"怎么把砖砌成承重墙"。

2026-04-17
APIModelSemanticStreamingObservabilityCostLiteLLMPortkeyLangFuse

日期:2026-04-17 阶段:第二阶段 — 工程实践 (Day 16-30) 标签API Gateway Model Router Semantic Cache Streaming Observability Cost Control LiteLLM Portkey LangFuse


学习路径树

AI/LLM 深度技术学习 50天计划
├── 第一阶段:模型基础 (Day 1-15) ✅
│   ├── Day 1:  Transformer架构与LLM基础 ✅
│   ├── Day 2:  模型量化与本地部署 ✅
│   ├── Day 3:  训练过程深度:Pre-training / SFT / RLHF / DPO ✅
│   ├── Day 4:  Prompt Engineering与上下文学习(ICL)原理 ✅
│   ├── Day 5:  RAG架构:检索增强生成全链路 ✅
│   ├── Day 6:  向量数据库与Embedding模型 ✅
│   ├── Day 7:  Fine-tuning实战:LoRA / QLoRA / Adapter ✅
│   ├── Day 8:  推理优化:vLLM / TensorRT-LLM / SGLang ✅
│   ├── Day 9:  长上下文技术:RoPE扩展 / Ring Attention ✅
│   ├── Day 10: 多模态模型:Vision-Language架构 ✅
│   ├── Day 11: Reasoning模型:CoT / o1 / R1 / Extended Thinking ✅
│   ├── Day 12: Agent框架:ReAct / Tool Use / Planning ✅
│   ├── Day 13: MCP协议与Tool生态 ✅
│   ├── Day 14: 模型评估:Benchmark / Arena / 安全评估 ✅
│   └── Day 15: 阶段复习与架构总结 ✅
│
├── 第二阶段:工程实践 (Day 16-30)
│   ├── Day 16: LLM应用架构设计(1) — API Gateway / 路由 / 缓存 ← 你在这里
│   ├── Day 17: Prompt管理与版本控制
│   ├── Day 18: 缓存与成本控制进阶
│   ├── Day 19: 可观测性与监控
│   ├── Day 20: 安全与合规
│   ├── Day 21-25: 生产级RAG系统(Chunking/Rerank/评估/迭代)
│   └── Day 26-30: Agent系统工程化(状态管理/错误恢复/成本控制)
│
├── 第三阶段:金融零售AI应用 (Day 31-42)
│   ├── Day 31-35: 金融AI(风控模型/智能投顾/合规/反欺诈)
│   ├── Day 36-40: 零售AI(推荐系统/智能客服/供应链预测/营销)
│   └── Day 41-42: CeFi x DeFi x AI融合架构
│
└── 第四阶段:面试冲刺 (Day 43-50)
    ├── Day 43-46: 系统设计面试(LLM平台/RAG/Agent/推荐)
    ├── Day 47-49: 产品/架构面试模拟
    └── Day 50: 总结与作品集

核心概念

一句话定义

LLM应用架构不是"调一个API"这么简单——它是一套从客户端请求到模型响应再到监控反馈的完整工程体系,包含网关(Gateway)、路由(Router)、缓存(Cache)、流式传输(Streaming)、可观测性(Observability)和成本控制(Cost Control)六大支柱。第一阶段学的是"每块砖是什么",今天学的是"怎么把砖砌成承重墙"。

金融类比

LLM应用架构 = 银行核心系统架构

传统银行的三层架构:
  前台渠道层: 手机银行/网银/柜面/ATM → 统一接入网关
  中台服务层: 账户/支付/风控/营销   → 服务路由 + 缓存 + 监控
  后台核心层: 核心账务/清算/报表     → 核心处理引擎

LLM应用的三层架构:
  接入层: Web/App/API/Agent → AI Gateway (鉴权/限流/日志)
  编排层: Prompt管理/模型路由/缓存   → 智能中间件
  模型层: GPT-4o/Claude/Qwen/本地模型 → LLM推理引擎

银行核心系统的工程经验 100% 适用于LLM系统:
  ┌──────────────────────────────────────────────────────────┐
  │  银行系统经验              →  LLM系统对应                  │
  ├──────────────────────────────────────────────────────────┤
  │  统一接入网关(ZUUL/Kong)   →  AI Gateway(Portkey/LiteLLM) │
  │  服务路由(灰度/AB)         →  模型路由(按任务选模型)       │
  │  Redis缓存                →  Semantic Cache(语义缓存)     │
  │  限流熔断(Sentinel)        →  Token Rate Limiting         │
  │  链路追踪(Zipkin/Jaeger)   →  LLM Traces(LangFuse)       │
  │  APM监控(Prometheus)       →  Token/延迟/质量三维监控     │
  │  灾备切换                  →  模型Fallback(主模型→备模型)  │
  │  交易流水(审计日志)        →  Prompt+Response审计日志      │
  └──────────────────────────────────────────────────────────┘

本质相同: 都是在"不可100%信任的后端服务"前面加上
         路由/缓存/限流/监控/容错 这五大中间件能力。
银行不信任单一清算通道(所以有灾备),
LLM不信任单一模型提供商(所以有Fallback)。

为什么Day 16是第二阶段的起点

第一阶段(Day 1-15)建立了"技术栈每一层是什么"的认知
第二阶段(Day 16-30)要解决"怎么把这些层组装成生产系统"

Day 16的定位:
  → 搭建LLM系统的"骨架"(Gateway/Router/Cache)
  → 后面的Day 17-20在这个骨架上加"肌肉"(Prompt管理/监控/安全)
  → Day 21-25在骨架上挂"器官"(RAG系统)
  → Day 26-30在骨架上装"大脑"(Agent系统)

今天不把骨架搭好,后面一切都是空中楼阁。

知识点1: LLM应用分层架构

1.1 完整架构图

┌─────────────────────────────────────────────────────────────────────┐
│                        CLIENT LAYER                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐           │
│  │ Web App  │  │ Mobile   │  │ API调用方 │  │ Agent    │           │
│  │ (React)  │  │ (iOS/    │  │ (B2B)    │  │ (自动化) │           │
│  │          │  │  Android)│  │          │  │          │           │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘           │
│       │              │              │              │                 │
│       └──────────────┴──────────────┴──────────────┘                │
│                              │                                       │
│                     HTTPS / WebSocket / SSE                         │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    GATEWAY LAYER       │ API       │  ← 鉴权(API Key/JWT)          │
│                        │ Gateway   │  ← 限流(Token Rate Limit)     │
│                        │           │  ← 日志(Request/Response Log) │
│                        │ (Portkey/ │  ← 负载均衡                    │
│                        │  LiteLLM/ │  ← 输入校验                    │
│                        │  Kong+    │  ← 安全过滤(PII/Injection)    │
│                        │  Plugin)  │                                │
│                        └─────┬─────┘                                 │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    ROUTING LAYER       │ Model     │  ← 按任务复杂度选模型          │
│                        │ Router    │  ← 成本/延迟/质量权衡          │
│                        │           │  ← Fallback链 (主→备→降级)    │
│                        └─────┬─────┘                                 │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    CACHE LAYER         │ Cache     │  ← Exact Match (Redis)        │
│                        │ Manager   │  ← Semantic Cache (向量相似)   │
│                        │           │  ← Prompt Cache (模型原生)     │
│                        └─────┬─────┘                                 │
│                              │                                       │
│                        Cache Miss                                    │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    PROMPT LAYER        │ Prompt    │  ← 模板引擎                    │
│                        │ Manager   │  ← 变量注入                    │
│                        │           │  ← 版本控制                    │
│                        │           │  ← A/B测试                     │
│                        └─────┬─────┘                                 │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    MODEL LAYER         │ LLM       │  ← OpenAI API                 │
│                        │ Providers │  ← Anthropic API               │
│                        │           │  ← 本地vLLM                    │
│                        │           │  ← Azure OpenAI                │
│                        │           │  ← AWS Bedrock                 │
│                        └─────┬─────┘                                 │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                        ┌─────▼─────┐                                 │
│    OBSERVABILITY       │ Monitor   │  ← Token用量追踪              │
│    LAYER               │ & Trace   │  ← 延迟分布(P50/P95/P99)     │
│                        │           │  ← 质量评分                    │
│                        │ (LangFuse/│  ← 成本核算                    │
│                        │  Helicone)│  ← 告警                        │
│                        └───────────┘                                 │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

1.2 每层的核心职责

核心职责关键指标类比银行系统
Gateway统一入口、鉴权、限流、安全过滤QPS、拒绝率、鉴权延迟统一接入网关
Router模型选择、Fallback、负载均衡路由准确率、Fallback次数交易路由(网联/银联)
Cache减少重复请求、降低成本和延迟缓存命中率、节省的Token数Redis热数据缓存
Prompt模板管理、版本控制、变量注入Prompt版本数、A/B测试命中率交易报文模板管理
Model实际调用LLM推理TTFT、Token/s、错误率核心账务处理引擎
Observe全链路监控、成本追踪、质量评估日Token消耗、P95延迟、质量分APM+交易流水监控

1.3 为什么不能直接调API

"直接调API"的问题 = "银行直接连央行清算系统而不加中间件"

直接调API:
  client → OpenAI API → response

  问题1: 供应商锁定 → OpenAI限流了你就瘫了
  问题2: 成本黑洞   → 没有缓存,相同问题每次都花钱
  问题3: 无法追溯   → 出了问题不知道是哪个Prompt导致的
  问题4: 安全裸奔   → 用户可以注入恶意Prompt
  问题5: 浪费资源   → 简单问题也用最贵的模型

生产级架构:
  client → Gateway → Router → Cache → Prompt → Model → Observe

  解决1: Router支持多Provider,自动Fallback
  解决2: Cache层命中率40-70%,直接省钱
  解决3: Observe层全链路追踪每一次调用
  解决4: Gateway层做输入过滤和PII脱敏
  解决5: Router按复杂度选模型,简单任务用小模型

知识点2: AI Gateway设计

2.1 AI Gateway的核心能力

传统API Gateway (Kong/Nginx/Envoy):
  → 路由 / 限流 / 鉴权 / 日志 / 负载均衡

AI Gateway = 传统Gateway + LLM特有需求:
  → Token级别限流(不是按请求数,是按Token数)
  → 多模型统一接口(一个接口调任意模型)
  → 流式响应中继(SSE透传)
  → Prompt安全过滤(Injection检测)
  → 成本追踪(实时Token用量和费用)
  → 语义缓存(不是完全匹配,是语义相似也命中)
  → 模型Fallback(主模型超时自动切备用模型)

2.2 2025-2026主流AI Gateway方案

方案类型核心优势适用场景定价
PortkeySaaS+OSS最全面的AI Gateway,支持200+模型、语义缓存、Guardrails企业级生产环境免费层+付费
LiteLLMOSS (Python)OpenAI兼容格式统一100+模型,可自建中小团队自建Gateway免费(OSS)
Cloudflare AI GatewaySaaSCDN集成、全球低延迟、缓存、分析已用Cloudflare的团队免费层+付费
AWS Bedrock GatewayCloud原生与AWS生态深度集成AWS重度用户按量
Kong + AI PluginOSS+插件已有Kong的团队平滑升级已有API Gateway基础设施Kong付费
自建 (FastAPI)自研完全可控特殊合规要求(金融/医疗)人力成本

2.3 OpenAI兼容API的重要性

为什么"OpenAI兼容API"成了事实标准?

OpenAI Chat Completions API格式:
  POST /v1/chat/completions
  {
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Hello"}],
    "temperature": 0.7,
    "stream": true
  }

2025年几乎所有模型都支持这个格式:
  → Anthropic Claude (通过LiteLLM转换)
  → Google Gemini (通过OpenRouter/LiteLLM)
  → DeepSeek (原生兼容)
  → Qwen/GLM (原生兼容)
  → 本地vLLM/Ollama (原生兼容)

好处:
  1. 切换模型只改一个"model"参数,不改代码
  2. 所有SDK/框架(LangChain/LlamaIndex)都原生支持
  3. 测试时用便宜模型,上线用贵模型,零代码改动

金融类比: 就像银联定义了标准报文格式,
所有银行/商户接一次就能跑所有卡。
OpenAI格式 = AI领域的"银联标准"。

2.4 LiteLLM架构示例

LiteLLM: 最常用的开源AI Gateway (2025-2026)

核心能力:
  → 统一100+模型到OpenAI格式
  → 内置负载均衡和Fallback
  → Token级别限流
  → 成本追踪
  → 可作为Proxy Server独立部署

架构:

  Client (任何OpenAI SDK)
       │
       ▼
  ┌─────────────────┐
  │  LiteLLM Proxy  │  ← 独立部署的HTTP服务
  │  (FastAPI)      │
  │                 │
  │  ┌───────────┐  │
  │  │ Router    │  │  ← 模型选择 + 负载均衡
  │  └─────┬─────┘  │
  │        │        │
  │  ┌─────▼─────┐  │
  │  │ Adapter   │  │  ← 格式转换 (Claude/Gemini→OpenAI格式)
  │  └─────┬─────┘  │
  │        │        │
  │  ┌─────▼─────┐  │
  │  │ Budget    │  │  ← Token预算管理
  │  │ Manager   │  │
  │  └─────┬─────┘  │
  │        │        │
  │  ┌─────▼─────┐  │
  │  │ Callbacks │  │  ← 监控回调 (LangFuse/Helicone)
  │  └───────────┘  │
  └────────┬────────┘
           │
     ┌─────┴──────────────────┐
     │           │             │
     ▼           ▼             ▼
  OpenAI    Anthropic     本地vLLM
  GPT-4o    Claude        Qwen-72B

配置示例(litellm_config.yaml):

  model_list:
    - model_name: "gpt-4o"           # 用户请求的模型名
      litellm_params:
        model: "gpt-4o"              # 实际调用的模型
        api_key: "sk-xxx"
    - model_name: "gpt-4o"           # 同一个名字可以配多个Provider
      litellm_params:
        model: "azure/gpt-4o"        # Azure版本作为负载均衡
        api_key: "azure-xxx"
    - model_name: "claude-sonnet"
      litellm_params:
        model: "anthropic/claude-sonnet-4-20250514"
        api_key: "sk-ant-xxx"
    - model_name: "cheap-model"       # 内部自定义名
      litellm_params:
        model: "deepseek/deepseek-chat"
        api_key: "sk-ds-xxx"

  router_settings:
    routing_strategy: "least-busy"    # 最空闲的实例优先
    num_retries: 3                    # 失败重试3次
    fallbacks:                        # Fallback链
      - model: "gpt-4o"
        fallback: "claude-sonnet"
      - model: "claude-sonnet"
        fallback: "cheap-model"

2.5 Portkey: 企业级AI Gateway

Portkey的差异化能力(2025-2026最受关注的AI Gateway):

  1. Guardrails (内容安全护栏)
     → 内置PII检测、Prompt Injection检测、内容过滤
     → 金融场景必备: 拦截含银行卡号/身份证号的请求

  2. Virtual Keys (虚拟密钥)
     → 统一管理多个Provider的API Key
     → 不把真实Key暴露给开发者

  3. Semantic Cache (语义缓存)
     → "如何转账"和"怎么转钱"命中同一缓存
     → 比Exact Match缓存命中率高3-5倍

  4. Conditional Routing (条件路由)
     → 根据请求内容/用户标签/时间段选择不同模型
     → 例: VIP用户→Claude Opus, 普通用户→Sonnet

  5. Reliability (可靠性)
     → 自动Fallback + 重试 + 超时控制
     → 99.99% uptime SLA

  6. Analytics (分析)
     → 实时Token用量、成本、延迟Dashboard
     → 按用户/功能/模型维度拆分

知识点3: 智能路由

3.1 为什么需要智能路由

问题: 用一个模型处理所有请求 = 用大炮打蚊子 + 用BB弹打坦克

真实请求分布(典型的企业级LLM应用):
  ┌──────────────────────────────────────────────┐
  │  简单请求 (60-70%)                             │
  │  "帮我格式化这段JSON"                          │
  │  "翻译这句话"                                  │
  │  "从这段文本提取日期"                          │
  │  → 用Claude Haiku/GPT-4o-mini, 成本$0.001/请求│
  ├──────────────────────────────────────────────┤
  │  中等请求 (25-30%)                             │
  │  "总结这篇5000字的报告"                        │
  │  "写一封专业的客户邮件"                        │
  │  "分析这个SQL查询的问题"                       │
  │  → 用Claude Sonnet/GPT-4o, 成本$0.01/请求     │
  ├──────────────────────────────────────────────┤
  │  复杂请求 (5-10%)                              │
  │  "设计一个分布式支付系统的架构"                │
  │  "分析这份金融报表的异常项"                    │
  │  "写一个带错误处理的递归解析器"                │
  │  → 用Claude Opus/o3, 成本$0.10/请求            │
  └──────────────────────────────────────────────┘

如果全用Opus:
  100万请求/月 × $0.10 = $100,000/月

智能路由后:
  70万简单 × $0.001 = $700
  25万中等 × $0.01  = $2,500
  5万复杂  × $0.10  = $5,000
  总计 = $8,200/月

节省: 91.8%  ← 这就是智能路由的价值

3.2 路由策略分类

┌────────────────────────────────────────────────────────────────┐
│                    模型路由策略矩阵                              │
├──────────────┬──────────────────┬──────────────────────────────┤
│  策略类型     │  原理             │  适用场景                    │
├──────────────┼──────────────────┼──────────────────────────────┤
│  基于规则     │  预定义条件映射    │  任务类型明确的场景          │
│  (Rule-based)│  if task == X     │  "翻译"→小模型               │
│              │    → model_A     │  "代码"→大模型               │
├──────────────┼──────────────────┼──────────────────────────────┤
│  基于成本     │  在质量阈值内     │  成本敏感的高并发应用        │
│  (Cost-opt)  │  选最便宜的模型   │  先试小模型,不行再升级      │
├──────────────┼──────────────────┼──────────────────────────────┤
│  基于延迟     │  选最快响应的     │  实时对话/交互式应用         │
│  (Latency)   │  模型或实例       │  用户不能等超过2秒           │
├──────────────┼──────────────────┼──────────────────────────────┤
│  基于质量     │  用Classifier     │  质量要求高的金融/医疗       │
│  (Quality)   │  判断所需质量级别  │  宁可贵也不能错              │
├──────────────┼──────────────────┼──────────────────────────────┤
│  混合策略     │  成本+延迟+质量   │  大多数生产系统              │
│  (Hybrid)    │  加权评分          │  根据业务优先级调权重        │
├──────────────┼──────────────────┼──────────────────────────────┤
│  LLM自路由   │  小模型判断任务    │  前沿方案(2025-2026)         │
│  (LLM-route) │  复杂度后分发     │  Martian/Unify等平台         │
└──────────────┴──────────────────┴──────────────────────────────┘

3.3 级联路由 (Cascading Router)

级联路由: 先试便宜的,不行再试贵的(渐进式升级)

请求进入
    │
    ▼
┌──────────────────┐
│ Step 1:          │
│ 用 Haiku/Mini    │ ← 最便宜,延迟最低
│ 尝试回答         │
└────────┬─────────┘
         │
    ┌────▼────┐
    │ 质量检查 │ ← 自动评估: 置信度/一致性/关键词检查
    │ 通过?   │
    └────┬────┘
     Yes │    No
         │     │
    ┌────▼┐   ┌▼───────────────┐
    │返回  │   │ Step 2:        │
    │结果  │   │ 用 Sonnet/4o   │ ← 中等成本
    │      │   │ 重新回答       │
    └──────┘   └────────┬───────┘
                        │
                   ┌────▼────┐
                   │ 质量检查 │
                   │ 通过?   │
                   └────┬────┘
                    Yes │    No
                        │     │
                   ┌────▼┐   ┌▼───────────────┐
                   │返回  │   │ Step 3:        │
                   │结果  │   │ 用 Opus/o3     │ ← 最贵,质量最高
                   │      │   │ 最终回答       │
                   └──────┘   └────────────────┘

优点: 大部分请求在Step 1就返回了,平均成本极低
缺点: 延迟可能增加(最坏情况经过3次调用)
优化: 设超时阈值,如果Step 1在200ms内没有高置信答案就直接跳Step 2

金融类比: 就像银行的审批层级
  → 1万以下: 柜员直接批
  → 1-10万: 主管审批
  → 10万以上: 行长审批
  大部分交易在第一级就处理了

3.4 基于分类器的路由

用一个轻量级分类器(或小模型)判断请求复杂度:

  ┌─────────────┐     ┌──────────────┐     ┌──────────────┐
  │  用户请求    │ ──► │ Classifier   │ ──► │ 路由决策      │
  │             │     │ (小模型/规则) │     │ → 选择目标模型│
  └─────────────┘     └──────────────┘     └──────────────┘

Classifier的实现方式:

  方式1: 关键词规则 (最简单)
    if contains("翻译","translate") → haiku
    if contains("代码","debug","架构") → opus
    if token_count > 5000 → sonnet  # 长输入用中等模型

  方式2: 小模型分类 (更智能)
    用Haiku/Mini对请求做分类:
    system: "判断以下请求的复杂度: simple/medium/complex"
    → 成本约$0.0001/请求,可忽略

  方式3: Embedding相似度 (最精准)
    预定义各级别的示例Embedding
    计算新请求的Embedding与各级别的相似度
    选最近的级别 → 路由到对应模型

  方式4: 专用路由模型 (2025前沿)
    Martian、Unify等平台提供的专用路由模型
    训练在大量(请求, 最优模型)对上
    比规则更准确,比小模型分类更快

知识点4: 缓存策略

4.1 三层缓存架构

LLM应用的三层缓存(命中率和复杂度递增):

Layer 1: Exact Match Cache (精确匹配)
  ┌──────────────┐
  │ Redis/       │  key = hash(model + messages + params)
  │ Memcached    │  value = response
  │              │  TTL = 1h - 24h
  └──────────────┘
  命中条件: 请求完全相同(字符级)
  命中率: 10-30% (取决于应用类型)
  延迟: <1ms
  适用: FAQ/客服/重复性查询

Layer 2: Semantic Cache (语义缓存)
  ┌──────────────┐
  │ Vector DB +  │  将请求Embedding后存入向量库
  │ Redis        │  新请求Embedding后做相似度搜索
  │              │  相似度 > 阈值(如0.95) → 返回缓存
  └──────────────┘
  命中条件: 语义相似(不要求字面相同)
  命中率: 30-60% (比精确匹配高很多)
  延迟: 5-20ms (Embedding计算+向量搜索)
  适用: 用户换不同说法问同一个问题

  示例:
    "ETH现在多少钱" vs "以太坊当前价格是多少" → 命中!
    "如何申请信用卡" vs "办信用卡的流程" → 命中!

Layer 3: Prompt Cache (模型原生缓存)
  ┌──────────────┐
  │ 模型Provider │  缓存System Prompt和长前缀的KV Cache
  │ 原生支持     │  后续请求只计算新增部分
  │              │  Claude: 自动缓存, 减少~90%输入Token
  │              │  OpenAI: Cached Tokens半价
  └──────────────┘
  命中条件: Prompt前缀相同
  节省: 输入Token成本降低50-90%
  延迟: TTFT减少60-80%
  适用: 所有带System Prompt的应用(几乎所有场景)

三层协同:
  请求到达
      │
      ▼
  Exact Match → 命中? → Yes → 返回 (延迟<1ms, 成本$0)
      │ No
      ▼
  Semantic Cache → 命中? → Yes → 返回 (延迟~15ms, 成本≈$0)
      │ No
      ▼
  Prompt Cache → 减少输入Token → 调用模型 (延迟↓, 成本↓50-90%)
      │
      ▼
  模型返回 → 结果写入Exact + Semantic Cache

4.2 Semantic Cache深入

语义缓存的工作流程:

  ┌──────────┐    Embed     ┌──────────┐    Search    ┌──────────┐
  │ 用户请求  │ ─────────► │ Embedding │ ──────────► │ Vector   │
  │          │            │ Model     │            │ DB       │
  └──────────┘            └──────────┘            └────┬─────┘
                                                       │
                                                 相似度 > 0.95?
                                                 ┌─────┴─────┐
                                                 │ Yes       │ No
                                                 ▼           ▼
                                           ┌──────────┐ ┌──────────┐
                                           │ 返回缓存  │ │ 调用LLM  │
                                           │ 结果      │ │ 结果写入  │
                                           │          │ │ 缓存     │
                                           └──────────┘ └──────────┘

关键设计决策:

  1. 相似度阈值选择
     → 0.90: 激进(高命中率,但可能返回不太精准的缓存)
     → 0.95: 平衡(推荐大多数场景)
     → 0.98: 保守(只在非常相似时才命中)

     金融场景建议0.97+: "转账到招商银行"和"转账到工商银行"不能混

  2. Embedding模型选择
     → 轻量: text-embedding-3-small (OpenAI), 成本低延迟低
     → 本地: all-MiniLM-L6-v2 (Sentence Transformers), 零API成本
     → 语义缓存不需要最好的Embedding,够用就行

  3. 缓存失效策略
     → TTL: 固定时间过期(如1小时/24小时)
     → 事件驱动: 数据更新时主动清理相关缓存
     → LRU: 满了删最久未使用的
     → 金融数据建议短TTL(价格类5分钟,规则类24小时)

4.3 缓存命中率与成本节省

真实场景缓存效果估算:

场景: 金融智能客服,日均10万请求

Without Cache:
  100,000请求 × 平均2000 Token × $0.003/1K Token = $600/天
  月成本: $18,000

With 3-Layer Cache:
  Exact Match命中: 20% → 20,000请求免费
  Semantic Cache命中: 30% → 30,000请求免费
  Prompt Cache节省: 剩余50,000请求的输入Token减少80%

  实际调用模型: 50,000请求
  Prompt Cache后Token成本: 50,000 × (400+2000×0.2) × $0.003/1K
  ≈ 50,000 × 800 × $0.003/1K = $120/天
  月成本: $3,600

节省: $18,000 → $3,600 = 降低80%

缓存ROI计算:
  缓存基础设施成本: Redis($50/月) + VectorDB($100/月) = $150/月
  缓存节省: $14,400/月
  ROI: 96x  ← 缓存是LLM应用中ROI最高的优化

知识点5: 流式响应与用户体验

5.1 为什么Streaming是必须的

LLM的延迟特征和传统API完全不同:

传统API:
  请求 → [处理100ms] → 完整响应
  用户感知: "很快"

LLM非流式:
  请求 → [等待5-30秒(生成全部Token)] → 完整响应
  用户感知: "卡住了","是不是坏了"

LLM流式:
  请求 → [200ms后第一个Token] → 逐Token流出 → 完成
  用户感知: "正在思考,很流畅"

关键指标:
  TTFT (Time To First Token): 第一个Token到达的时间
    → 用户体验的决定性指标
    → <500ms: 优秀
    → 500ms-2s: 可接受
    → >2s: 需要Loading动画
    → >5s: 用户可能放弃

  TPS (Tokens Per Second): 每秒输出的Token数
    → 人类阅读速度约250词/分 ≈ 5 Token/s
    → >10 TPS用户感觉"很快"
    → <3 TPS用户感觉"一个字一个字蹦"

5.2 Streaming架构

两种Streaming协议:

方案1: Server-Sent Events (SSE) — 最主流
  ┌──────┐    HTTP POST     ┌──────────┐    SSE     ┌──────────┐
  │Client│ ───────────────► │ Gateway  │ ◄─────── │ LLM API  │
  │      │ ◄─────────────── │ (中继)   │ ────────► │          │
  └──────┘   SSE Stream     └──────────┘           └──────────┘

  数据格式:
    data: {"choices":[{"delta":{"content":"你"}}]}
    data: {"choices":[{"delta":{"content":"好"}}]}
    data: {"choices":[{"delta":{"content":","}}]}
    data: [DONE]

  优点: HTTP协议,无需特殊基础设施,浏览器原生支持
  缺点: 单向(服务端→客户端),不支持客户端中途发消息

方案2: WebSocket — Agent场景
  ┌──────┐    WebSocket     ┌──────────┐
  │Client│ ◄──────────────► │ Gateway  │
  └──────┘   双向通信        └──────────┘

  优点: 双向通信,客户端可随时中断/追加
  缺点: 需要维护长连接,基础设施更复杂
  适用: Agent场景(需要中途确认/追加指令)

2025-2026的共识:
  → 普通对话: SSE (简单够用)
  → Agent/协作: WebSocket (需要双向)
  → 绝大多数应用选SSE

5.3 TTFT优化策略

TTFT (Time To First Token) 优化:

  ┌───────────────────────────────────────────────────────────────┐
  │ 优化手段                    │ 效果        │ 适用场景           │
  ├────────────────────────────┼────────────┼───────────────────┤
  │ Prompt Cache (模型原生)    │ TTFT↓60-80%│ 固定System Prompt │
  │ 更快的模型 (Haiku/Mini)   │ TTFT↓70%   │ 简单任务           │
  │ 区域就近部署               │ TTFT↓30-50%│ 全球用户           │
  │ Prompt压缩 (删冗余)       │ TTFT↓20-40%│ Prompt过长时       │
  │ 预热请求 (Keep-alive)     │ TTFT↓10-20%│ 冷启动场景         │
  │ 边缘缓存 (Cloudflare)     │ TTFT→0     │ 高频重复请求       │
  └───────────────────────────────────────────────────────────────┘

渐进式渲染(Progressive Rendering):
  不是等全部输出完才处理,而是边输出边渲染

  阶段1 (前100ms): 显示"思考中..."动画
  阶段2 (TTFT到达): 开始逐字显示文本
  阶段3 (Markdown检测): 检测到代码块/表格时切换渲染模式
  阶段4 (完成): 显示"复制/重新生成"按钮

  金融场景的特殊处理:
    → 数字出现时等整个数字完成再显示(避免"$1" → "$12" → "$123"闪烁)
    → 表格数据等完整行出来再渲染
    → 关键结论(如"审批通过/拒绝")可以高亮显示

知识点6: 可观测性

6.1 LLM可观测性 vs 传统可观测性

传统微服务可观测性三支柱:
  Logs   → 发生了什么
  Metrics → 系统表现如何
  Traces  → 请求经过了哪些服务

LLM可观测性需要额外维度:
  Logs    → 每次调用的Prompt + Response全文
  Metrics → Token用量 + 成本 + 延迟 + 质量评分
  Traces  → 每次调用经过: Gateway → Router → Cache → Model → Post-process
  Quality → 输出质量评估(传统系统没有这个维度)

  ┌─────────────────────────────────────────────────────────────┐
  │                LLM可观测性四维矩阵                            │
  ├──────────────┬──────────────────────────────────────────────┤
  │  维度         │  关键指标                                     │
  ├──────────────┼──────────────────────────────────────────────┤
  │  性能         │  TTFT, TPS, P50/P95/P99延迟, 超时率          │
  │  成本         │  Token消耗(Input/Output), 日/月成本, 单请求成本│
  │  质量         │  Hallucination率, 用户满意度, 任务完成率       │
  │  可靠性       │  错误率, Fallback触发率, 模型可用性            │
  └──────────────┴──────────────────────────────────────────────┘

6.2 Traces和Spans

LLM Trace = 一次完整请求的全链路追踪

示例: 用户问"ETH现在什么价格?"

Trace ID: abc-123
├── Span 1: Gateway (2ms)
│   ├── 鉴权: API Key验证 ✓
│   ├── 限流检查: 未超限 ✓
│   └── 输入过滤: 安全 ✓
│
├── Span 2: Router (1ms)
│   ├── 任务分类: "简单查询"
│   └── 路由决策: → Haiku (最便宜)
│
├── Span 3: Cache Check (3ms)
│   ├── Exact Match: Miss
│   ├── Semantic Cache: Hit! (相似度0.97)
│   └── 缓存来源: "以太坊价格多少" (2分钟前)
│
├── Span 4: Response (0ms) ← 缓存命中,未调用模型
│   └── 返回缓存结果
│
└── Span 5: Logging (1ms)
    ├── Token: 0 (缓存命中)
    ├── 成本: $0
    └── 总延迟: 7ms

如果Cache Miss,Span 3+4会变成:
├── Span 3: Cache Check (3ms)
│   ├── Exact Match: Miss
│   └── Semantic Cache: Miss
│
├── Span 4: Model Call (850ms)
│   ├── Provider: Anthropic
│   ├── Model: claude-haiku
│   ├── Input Tokens: 150
│   ├── Output Tokens: 80
│   ├── TTFT: 120ms
│   └── Cost: $0.00006
│
├── Span 5: Cache Write (2ms)
│   ├── 写入Exact Match Cache
│   └── 写入Semantic Cache (Embedding计算)

6.3 2025-2026主流LLM可观测性工具

工具类型核心能力定价适用
LangFuseOSS+CloudTrace/Prompt管理/评估/成本追踪免费(OSS)/付费(Cloud)最推荐的开源方案
LangSmithSaaSLangChain原生集成/Trace/评估/Dataset免费层+付费LangChain用户
HeliconeSaaS一行代码接入/成本追踪/缓存/限流免费层+付费快速接入
Arize PhoenixOSSTrace/Embedding可视化/LLM评估免费(OSS)数据科学团队
Portkey AnalyticsSaaS内置在AI Gateway中/零额外集成包含在Portkey中Portkey用户
OpenTelemetry+OSS标准用OTel标准接入LLM Trace免费已有OTel基础设施

6.4 告警策略

LLM系统告警规则设计(参考金融交易监控经验):

P0 - 立即响应 (电话/短信):
  → 所有模型Provider同时不可用(Fallback耗尽)
  → 错误率 > 20% (5分钟窗口)
  → 输出中包含PII/敏感信息泄露

P1 - 15分钟内响应 (IM/邮件):
  → 主模型不可用,已切Fallback
  → P95延迟 > 10秒 (5分钟窗口)
  → 日成本超预算150%
  → 缓存命中率骤降 > 50%

P2 - 1小时内查看 (Dashboard):
  → Token用量异常波动(环比+30%)
  → 特定Prompt版本的质量评分下降
  → 单用户Token消耗异常(可能被滥用)

P3 - 日报级别:
  → 成本趋势分析
  → 模型版本更新后质量变化
  → 缓存命中率周趋势

金融场景增加:
  → 合规相关输出被拦截次数 > 阈值 → P1
  → 审计日志写入失败 → P0 (合规要求)

知识点7: 成本控制

7.1 LLM成本构成

LLM应用的成本组成(按占比排序):

  ┌─────────────────────────────────────────────────┐
  │  成本项         │ 典型占比  │ 可优化空间          │
  ├─────────────────┼──────────┼────────────────────┤
  │  模型API调用    │  60-80%  │  高 (路由+缓存)     │
  │  Embedding计算  │  5-15%   │  中 (本地化+缓存)   │
  │  向量数据库     │  5-10%   │  低 (相对固定)      │
  │  基础设施       │  5-10%   │  低                 │
  │  可观测性工具   │  2-5%    │  中 (采样)          │
  └─────────────────┴──────────┴────────────────────┘

  → 最大的杠杆在"模型API调用"上
  → 缓存+路由可以减少60-90%的调用成本

7.2 Token预算管理

Token预算系统 = 金融系统的交易限额管理

  ┌─────────────────────────────────────────────────────────┐
  │                    Token预算管理架构                      │
  ├─────────────────────────────────────────────────────────┤
  │                                                         │
  │  全局预算:                                               │
  │    月度上限: 10M Tokens ($3,000)                         │
  │    日均分配: 333K Tokens ($100)                          │
  │    实时余额: 查询当前已用/剩余                           │
  │                                                         │
  │  团队/项目预算:                                          │
  │    客服团队: 5M Tokens/月                                │
  │    研发团队: 3M Tokens/月                                │
  │    数据团队: 2M Tokens/月                                │
  │                                                         │
  │  用户级别预算:                                           │
  │    免费用户: 10K Tokens/天                               │
  │    付费用户: 100K Tokens/天                              │
  │    企业用户: 1M Tokens/天                                │
  │                                                         │
  │  超限策略:                                               │
  │    80%: 告警通知                                         │
  │    100%: 降级到更便宜的模型(不中断服务)                  │
  │    120%: 仅允许缓存命中(不调用模型)                     │
  │    150%: 返回"服务暂时不可用"                            │
  │                                                         │
  │  金融类比: 和信用卡额度管理一模一样                      │
  │    预警 → 降额 → 临时额度 → 冻结                        │
  └─────────────────────────────────────────────────────────┘

7.3 Prompt压缩

Prompt过长 → Token消耗大 → 成本高 + 延迟高

Prompt压缩策略:

策略1: 删除冗余指令
  Before (350 tokens):
    "你是一个非常专业的、经验丰富的金融分析师助手。
     你的回答应该总是非常准确、详细、全面的。
     请注意,你的回答必须基于事实,不要编造信息。
     如果你不确定,请明确说明你不确定。
     回答时请使用中文。请用Markdown格式输出。"

  After (80 tokens):
    "角色:金融分析师。要求:准确、基于事实、不确定时说明。
     格式:中文Markdown。"

  节省: 77%

策略2: 示例压缩(Few-shot → Zero-shot + 格式说明)
  Before: 给5个完整示例 (2000 tokens)
  After: 给1个示例 + 格式说明 (400 tokens)
  节省: 80%

策略3: 上下文窗口管理
  对话历史只保留最近N轮 + 关键摘要
  Before: 完整20轮对话 (8000 tokens)
  After: 摘要(500 tokens) + 最近3轮(1500 tokens)
  节省: 75%

策略4: 动态上下文(仅注入相关信息)
  RAG检索结果不要全塞,根据相关性评分取Top K
  Before: 塞10个chunk (5000 tokens)
  After: 塞3个最相关chunk (1500 tokens)
  节省: 70%

7.4 月度成本估算模型

LLM月度成本估算公式:

月成本 = 日请求数 × 30 × 平均Token × 有效Token单价

其中:
  有效Token单价 = 模型单价 × (1 - 缓存命中率) × 路由节省系数

实际案例: 金融智能客服

基础参数:
  日请求数: 50,000
  平均输入Token: 800 (含System Prompt + 上下文)
  平均输出Token: 300

无优化方案 (全用Claude Sonnet):
  Input:  50,000 × 800 × $3/M × 30  = $3,600/月
  Output: 50,000 × 300 × $15/M × 30 = $6,750/月
  总计: $10,350/月

优化方案:
  1. 智能路由 (60%用Haiku, 30%用Sonnet, 10%用Opus)
     Haiku:  30,000 × (800×$0.25/M + 300×$1.25/M) = $17.25/天
     Sonnet: 15,000 × (800×$3/M + 300×$15/M) = $103.5/天
     Opus:   5,000 × (800×$15/M + 300×$75/M)  = $172.5/天
     路由后: $293.25/天 = $8,797.5/月 (↓15%)

  2. 缓存 (命中率50%)
     实际调用减半: $8,797.5 × 0.5 = $4,398.75/月 (↓57.5%)

  3. Prompt Cache (输入Token↓80%)
     Input成本再降80%: 约 $3,000/月 (↓71%)

  4. Prompt压缩 (输入Token↓30%)
     进一步压缩: 约 $2,400/月 (↓77%)

  最终: $10,350 → $2,400 = 降低77%

  基础设施额外成本:
    LiteLLM/Portkey: $200/月
    Redis (缓存): $50/月
    LangFuse (监控): $100/月
    总额外: $350/月

  净节省: $10,350 - $2,400 - $350 = $7,600/月 = 73%

  ┌────────────────────────────────────────────────┐
  │  优化措施        │ 月成本    │ 降幅(vs无优化)  │
  ├─────────────────┼──────────┼────────────────┤
  │  无优化          │ $10,350  │   -            │
  │  +智能路由       │ $8,797   │  ↓15%          │
  │  +缓存           │ $4,399   │  ↓57%          │
  │  +Prompt Cache   │ $3,000   │  ↓71%          │
  │  +Prompt压缩     │ $2,400   │  ↓77%          │
  │  +基础设施成本   │ $2,750   │  ↓73%(净)      │
  └────────────────────────────────────────────────┘

7.5 多级模型策略的完整决策流

生产环境中的多级模型策略:

  ┌────────────────────────────────────────────────────────────┐
  │                                                            │
  │  请求到达                                                   │
  │      │                                                     │
  │      ▼                                                     │
  │  ┌──────────────┐                                          │
  │  │ 缓存层检查    │ → Hit → 返回 ($0, <5ms)                │
  │  └──────┬───────┘                                          │
  │         │ Miss                                             │
  │         ▼                                                  │
  │  ┌──────────────┐                                          │
  │  │ 路由分类器    │ ← 判断任务复杂度                        │
  │  └──────┬───────┘                                          │
  │    ┌────┼────────────────┐                                 │
  │    │    │                │                                 │
  │    ▼    ▼                ▼                                 │
  │  简单  中等             复杂                               │
  │    │    │                │                                 │
  │    ▼    ▼                ▼                                 │
  │  Haiku Sonnet          Opus                               │
  │  $0.25 $3              $15   (per M Input Token)          │
  │    │    │                │                                 │
  │    ▼    ▼                ▼                                 │
  │  ┌──────────────┐                                          │
  │  │ 质量检查      │ ← 置信度评估                            │
  │  └──────┬───────┘                                          │
  │         │                                                  │
  │    Pass │    Fail                                          │
  │         │     │                                            │
  │         ▼     ▼                                            │
  │      返回   升级到更高级模型重试                            │
  │      结果   (最多升级1次,避免无限循环)                    │
  │                                                            │
  │  整体效果:                                                  │
  │    → 平均响应成本降低60-80%                                │
  │    → 平均延迟降低40-60%(小模型更快)                        │
  │    → 质量损失<5%(复杂任务仍用最强模型)                    │
  │                                                            │
  └────────────────────────────────────────────────────────────┘

今日思考

思考1: LLM架构和传统金融系统架构的深层相似性

10年金融系统经验告诉我,LLM架构不是"全新的东西",
而是"老问题在新场景的重现":

传统金融:
  → 多通道接入(柜面/ATM/网银) → 统一接入网关 → 路由 → 核心系统
  → 问题: 各通道格式不同、核心系统不能裸露、需要限流保护

LLM系统:
  → 多客户端(Web/App/API) → AI Gateway → 路由 → 模型服务
  → 问题: 各模型API不同、模型不能裸露、需要Token限流

架构模式完全一样:
  1. 适配器模式: 统一不同后端的接口 (OpenAI兼容API)
  2. 断路器模式: 后端故障时快速失败 (模型Fallback)
  3. 分层缓存: 近端缓存→远端缓存→数据库 (Exact→Semantic→Model)
  4. 限流降级: 超限时降级而非拒绝 (降级到更便宜的模型)
  5. 审计日志: 每笔交易可追溯 (每次Prompt/Response可追溯)

核心洞察:
  金融系统架构经验是LLM架构设计的"加速器",不是"包袱"。
  很多LLM团队在重新发明金融系统20年前就解决的问题。
  比如"语义缓存"本质上就是金融系统里的"模糊匹配查重"(AML场景)。

思考2: 成本控制是PM最该关注的架构决策

技术团队往往痴迷于"用最好的模型"和"最酷的架构",
但PM必须算成本账:

一个真实场景的决策过程:
  需求: 金融报告自动生成
  技术方案: 全用Claude Opus + RAG
  月成本: $50,000
  预算: $10,000

PM的架构介入点:
  1. 拆解任务: 数据提取(简单) + 格式化(简单) + 分析(复杂)
  2. 分层路由: 提取和格式化用Haiku,只有分析用Opus
  3. 增加缓存: 同类报告的分析框架可缓存复用
  4. Prompt优化: 精简System Prompt,减少无效Token

优化后月成本: $8,000 (目标预算内)

教训:
  架构师/PM不关注成本 = 项目上线就亏钱
  而大多数成本优化不需要牺牲质量,只需要"把对的模型用在对的地方"

思考3: 可观测性是从"能用"到"能信赖"的关键

金融系统最重要的不是"能跑",而是"出了问题能查到原因"

同样,LLM系统的可观测性决定了:
  → 能否发现Hallucination? (质量监控)
  → 能否发现成本异常? (成本追踪)
  → 能否在出问题时5分钟定位原因? (Trace)
  → 能否向合规部门证明AI的决策过程? (审计日志)

金融监管的要求:
  "每一笔交易必须可追溯、可审计、可复现"

LLM的对应要求:
  "每一次AI输出必须可追溯(哪个Prompt/哪个模型/什么上下文)"

如果Day 16只记住一句话:
  "没有可观测性的LLM系统,就像没有交易日志的银行系统——
   能跑,但没人敢用它做真正重要的事。"

面试表达

面试题36: 如何设计一个生产级LLM应用的架构?

30秒版本:

生产级LLM架构分为六层:API Gateway统一接入和安全过滤,智能路由根据任务复杂度选择不同模型降低成本,三层缓存(精确匹配、语义缓存、Prompt Cache)将重复请求的成本降到零,Prompt管理层做版本控制和A/B测试,模型层对接多个Provider实现高可用,最后可观测性层用LangFuse做全链路追踪。这套架构可以在不牺牲质量的前提下,把成本降低70%以上。

2分钟版本:

我把LLM应用架构类比为银行核心系统——前台渠道层、中台服务层、后台核心层。

第一层是AI Gateway,类似银行的统一接入网关。用Portkey或LiteLLM统一多模型的API接口为OpenAI兼容格式,同时做鉴权、Token级限流、PII脱敏、Prompt注入检测。核心思想是不让模型层直接暴露。

第二层是智能路由,这是降本的关键。真实请求中60-70%是简单任务,只需要Haiku级别的模型。通过分类器或级联路由策略,把简单请求路由到便宜模型,复杂请求才用Opus/o3。实测可以降低60-80%的模型调用成本。

第三层是三级缓存——精确匹配缓存处理完全相同的请求,语义缓存处理意思相同但说法不同的请求(命中率可达30-60%),Prompt Cache利用模型原生能力减少重复前缀的计算。三层叠加可以把50%以上的请求在不调用模型的情况下返回。

第四层是可观测性,我认为这在金融场景尤其关键。用LangFuse做全链路Trace——每次调用的Prompt、Response、Token用量、延迟、成本全部记录。这不仅用于运维监控,更是合规审计的基础。

结合我的金融背景,这套架构的设计思路其实和银行核心系统的中间件架构完全一致——适配器模式统一接口、断路器模式做Fallback、分层缓存降成本、全链路追踪保合规。

面试题37: LLM系统如何做成本控制?

30秒版本:

LLM成本控制的核心是"四把刀":第一刀是智能路由,60%的简单请求用便宜模型处理;第二刀是多层缓存,50%的请求直接返回缓存结果;第三刀是Prompt压缩,精简System Prompt和上下文减少Token消耗;第四刀是Token预算管理,给每个团队和用户设限额,超限降级而非中断。四刀下去,通常可以降低70%以上的成本。


学习资源

核心参考

资源类型说明
LiteLLM文档文档最实用的AI Gateway开源方案
Portkey文档文档企业级AI Gateway参考架构
LangFuse文档文档LLM可观测性最佳实践
Cloudflare AI Gateway文档边缘AI Gateway设计
Helicone文档一行代码接入的LLM监控

深入阅读

资源类型说明
Not All Tokens Are Equal论文Token级路由的学术基础
GPTCache开源项目语义缓存实现参考
OpenAI Prompt Caching文档OpenAI原生Prompt Cache
Anthropic Prompt Caching文档Claude原生Prompt Cache
Martian Model Router文档基于ML的模型路由方案

实操建议

今日实操任务:
  1. 本地部署LiteLLM Proxy,配置2个模型的负载均衡
  2. 用Helicone或LangFuse接入监控,观察Trace
  3. 实现一个简单的Exact Match Cache (用Redis)
  4. 跑10个相同请求,验证缓存命中和成本节省

明日预告

Day 17: Prompt管理与版本控制

Day 16搭建了LLM系统的"骨架"(Gateway/Router/Cache)
Day 17在骨架上加"智能"(Prompt管理)

Day 17 核心内容预览:

1. Prompt Engineering的工程化
   → 从"随手写Prompt"到"Prompt即代码"
   → Prompt模板引擎(变量/条件/循环)

2. Prompt版本控制
   → Git管理Prompt还是用专用平台?
   → Prompt的CI/CD: 自动测试+自动部署

3. Prompt A/B测试
   → 怎么设计LLM的A/B测试?
   → 评估指标: 质量分/延迟/成本/用户满意度

4. Prompt Registry (Prompt注册中心)
   → LangFuse/PromptLayer/Humanloop
   → 金融类比: 和配置中心(Apollo/Nacos)一样

5. 安全Prompt设计
   → 防注入(Prompt Injection)
   → 防越狱(Jailbreak)
   → 金融场景的Prompt安全清单

准备:
  → 回顾Day 4的Prompt Engineering基础
  → 思考: 如果一个金融客服的Prompt需要频繁调整,
    怎么做到"改Prompt不改代码、改了不出错"?

今日总结

┌────────────────────────────────────────────────────────────────┐
│  Day 16 核心收获                                                │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  1. LLM应用分层架构: 6层(Gateway/Router/Cache/Prompt/Model/   │
│     Observe),每层职责清晰,和银行核心系统架构高度类似        │
│                                                                │
│  2. AI Gateway: LiteLLM/Portkey统一多模型接口                  │
│     → OpenAI兼容API是事实标准("AI领域的银联")                │
│     → 鉴权/限流/安全过滤/Fallback 四大核心能力                │
│                                                                │
│  3. 智能路由: 按任务复杂度路由到不同模型                       │
│     → 60%简单请求用小模型,成本降低60-80%                     │
│     → 级联路由: 先试便宜的,不行再升级                        │
│                                                                │
│  4. 三层缓存: Exact Match → Semantic Cache → Prompt Cache     │
│     → 语义缓存命中率30-60%,是最被低估的优化                  │
│     → 三层叠加可省50%+的模型调用                               │
│                                                                │
│  5. 流式响应: SSE是主流,TTFT是用户体验决定性指标             │
│     → Prompt Cache可降低TTFT 60-80%                           │
│                                                                │
│  6. 可观测性: LangFuse/Helicone做全链路Trace                  │
│     → Token/延迟/质量/成本四维监控                             │
│     → 金融场景的审计日志是合规硬要求                           │
│                                                                │
│  7. 成本控制: 路由+缓存+Prompt压缩+预算管理                   │
│     → 实测可降低70%+成本,ROI极高                              │
│     → Token预算 = 金融系统的交易限额管理                       │
│                                                                │
│  新增面试题: #36 生产级LLM架构设计, #37 LLM成本控制           │
│  学习耗时:约 6 小时                                           │
│  下一步:Day 17 Prompt管理与版本控制                           │
│                                                                │
└────────────────────────────────────────────────────────────────┘