返回AI笔记
AI Day 43

AI Day 43: 系统设计面试(1):设计一个企业LLM平台

AI Day 43: 系统设计面试(1):设计一个企业LLM平台

2026-05-14
系统设计LLM平台RESHADED多租户模型路由RAG成本控制面试冲刺

日期: 2026-05-14 阶段: Phase 4 — 面试冲刺 (System Design + Product + Architecture) 主题: System Design Interview — Design an Enterprise LLM Platform 进度: Day 1-42 ✅ | Day 43 ← current 标签: #系统设计 #LLM平台 #RESHADED #多租户 #模型路由 #RAG #成本控制 #面试冲刺


学习路径 (50-Day Full Tree)

AI/LLM 深度技术学习 50天计划
├── 第一阶段:模型基础 (Day 1-15) ✅
│   ├── Day 1-7:   Transformer/量化/训练/Prompt/RAG/向量DB/FineTune ✅
│   ├── Day 8-11:  推理优化/长上下文/多模态/Reasoning ✅
│   └── Day 12-15: Agent/MCP/评估/阶段总结 ✅
│
├── 第二阶段:工程实践 (Day 16-30) ✅
│   ├── Day 16-18: 应用架构/安全/可观测性 ✅
│   ├── Day 19-21: 生产级RAG三部曲 ✅
│   ├── Day 22-25: Agent工程化四部曲 ✅
│   └── Day 26-30: 成本/编排/测试/案例/总结 ✅
│
├── 第三阶段:金融零售AI应用 (Day 31-42) ✅
│   ├── Day 31: 金融AI(1):智能风控与反欺诈 ✅
│   ├── Day 32: 金融AI(2):智能投顾与量化策略 ✅
│   ├── Day 33: 金融AI(3):合规科技与监管AI ✅
│   ├── Day 34: 金融AI(4):信贷全链路AI ✅
│   ├── Day 35: 金融AI总结 — PM视角的AI重塑金融 ✅
│   ├── Day 36: 零售AI(1):推荐系统与个性化 ✅
│   ├── Day 37: 零售AI(2):智能客服与对话系统 ✅
│   ├── Day 38: 零售AI(3):供应链预测与优化 ✅
│   ├── Day 39: 零售AI(4):智能营销与用户增长 ✅
│   ├── Day 40: 零售AI总结 — PM视角零售智能化全景 ✅
│   ├── Day 41: CeFi × DeFi × AI 融合架构(上) ✅
│   └── Day 42: CeFi × DeFi × AI 融合(下) + 职业定位 ✅
│
└── 第四阶段:面试冲刺 (Day 43-50)
    ├── Day 43: 系统设计面试(1):企业LLM平台 ← 你在这里
    ├── Day 44: 系统设计面试(2):生产级RAG系统
    ├── Day 45: 系统设计面试(3):AI Agent系统
    ├── Day 46: 系统设计面试(4):推荐系统
    ├── Day 47-49: 产品/架构面试模拟
    └── Day 50: 总结与作品集

一、面试框架: RESHADED

45分钟系统设计面试的黄金框架,适用于所有AI系统设计题

RESHADED Framework (每步时间预算):

R — Requirements (需求澄清)          5 min
E — Estimation (规模估算)             3 min
S — Storage (存储设计)                3 min
H — High-level Design (高层架构)      8 min
A — API Design (接口设计)             5 min
D — Detailed Design (深入设计)        12 min
E — Evaluation (评估与权衡)           5 min
D — Deployment (部署与运维)           4 min

总计: 45 min

关键原则:
  1. 不要急着画架构 → 先把R和E搞清楚
  2. 面试官关心的是你的思维过程 → 边画边讲Why
  3. 没有完美方案 → 讲清楚Trade-off比答案本身更重要
  4. AI系统特殊性 → 必须涉及模型选择/成本/评估/安全

RESHADED vs 传统系统设计

传统系统设计 (设计Twitter/Uber):
  关注点: 高并发 / 数据一致性 / 可用性 / 分布式存储
  核心难点: Scale(规模) + Consistency(一致性)

AI系统设计 (设计LLM平台/RAG/Agent):
  关注点: 模型选择 / 推理延迟 / 成本控制 / 输出质量 / 安全
  核心难点: Quality(质量) + Cost(成本) + Latency(延迟)

AI系统设计额外关注:
  ├── Model Selection: 不同场景用不同模型
  ├── Cost Engineering: Token计费, 缓存策略
  ├── Quality Assurance: 幻觉检测, 评估循环
  ├── Safety & Guardrails: 内容过滤, PII保护
  └── Observability: Token用量, 延迟分布, 质量指标

二、面试题: 设计一个企业LLM平台

"Design an Enterprise LLM Platform that serves multiple teams across the organization. It should support different use cases like chatbot, code generation, document Q&A, etc."

Step 1: Requirements 需求澄清 (5 min)

功能性需求 (Functional Requirements):
  ├── 多租户: 支持不同团队/部门使用
  ├── 多模型: GPT-4o / Claude / Llama / Gemini 等
  ├── 多用例: Chat / Code Gen / Doc QA / Summarization / Translation
  ├── 对话管理: 多轮对话, 上下文管理
  ├── 知识库: 各团队可上传私有文档(RAG)
  ├── 提示词管理: Prompt版本控制, A/B测试
  └── 用量追踪: 按团队/项目统计用量和成本

非功能性需求 (Non-Functional Requirements):
  ├── 延迟: 首token < 500ms, 流式输出
  ├── 可用性: 99.9% (单个模型不可用时自动降级)
  ├── 安全: PII过滤, 输入/输出审计, RBAC
  ├── 成本: 按部门计费, 总月预算控制
  ├── 扩展: 支持10个→100个团队平滑扩展
  └── 合规: 数据不出境(如有要求), 审计日志

面试时必须问的澄清问题:
  Q1: "用户规模? 多少团队, 每团队多少用户?"
      → 假设: 50个团队, 5000名用户
  Q2: "需要自部署模型还是只调用API?"
      → 假设: 以API为主, 支持自部署(安全敏感场景)
  Q3: "延迟要求? 实时还是异步?"
      → 假设: Chat实时(流式), 批量任务可异步
  Q4: "数据安全等级?"
      → 假设: 金融企业, 需PII过滤, 审计日志, 不允许训练数据被模型提供商使用

Step 2: Estimation 规模估算 (3 min)

用户与请求估算:
  DAU: ~2000 (5000用户, 40%日活)
  每用户每天: ~20次请求
  日请求量: 2000 × 20 = 40,000 requests/day
  峰值QPS: 40000 / 86400 × 5 (峰值系数) ≈ 2.3 QPS
  → 这不是高并发系统, 核心挑战在成本和质量

Token用量估算:
  平均每次请求:
    Input: ~500 tokens (Prompt + Context)
    Output: ~300 tokens
  每日Token: 40000 × 800 = 32M tokens/day
  每月Token: 32M × 30 = ~960M tokens/month ≈ 1B tokens/month

成本估算 (按GPT-4o价格):
  Input: 1B × 0.6 × $2.5/1M = $1,500/month (60% input)
  Output: 1B × 0.4 × $10/1M = $4,000/month (40% output)
  总计: ~$5,500/month (纯API成本)
  加上RAG/向量库/基础设施: ~$10,000/month
  → 成本可控, 但需要预算管理机制

存储估算:
  对话历史: 40K/day × 2KB = 80MB/day → ~2.4GB/month
  文档知识库: 假设50个团队 × 1GB = 50GB
  向量索引: 50GB文档 → ~5GB向量 (10:1压缩)
  审计日志: ~5GB/month

Step 3: Storage 存储设计 (3 min)

存储层设计:

PostgreSQL (主数据库):
  ├── users / teams / projects (用户管理)
  ├── conversations / messages (对话历史)
  ├── prompts / prompt_versions (提示词管理)
  ├── usage_records (用量记录)
  └── audit_logs (审计日志)

Vector Database (向量存储):
  ├── 选型: Qdrant / Weaviate / Pgvector
  ├── 用途: RAG文档检索
  └── 按租户隔离: Collection per tenant

Object Storage (S3/MinIO):
  ├── 原始文档 (PDF/DOCX/etc)
  ├── 处理后的Chunks
  └── 模型输出的缓存

Redis:
  ├── 语义缓存 (Semantic Cache)
  ├── 会话状态 (Session State)
  ├── 速率限制 (Rate Limiting)
  └── 预算计数器 (Budget Counters)

Step 4: High-level Design 高层架构 (8 min)

                    ┌─────────────────────────────────┐
                    │          Client Layer            │
                    │  Web App / API / SDK / Slack Bot │
                    └─────────────┬───────────────────┘
                                  │
                    ┌─────────────▼───────────────────┐
                    │        API Gateway              │
                    │  Auth / Rate Limit / Routing    │
                    └─────────────┬───────────────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          │                       │                       │
┌─────────▼─────────┐ ┌──────────▼──────────┐ ┌──────────▼──────────┐
│  Chat Service     │ │  RAG Service        │ │  Batch Service      │
│  (Streaming)      │ │  (Doc QA)           │ │  (Async Jobs)       │
└─────────┬─────────┘ └──────────┬──────────┘ └──────────┬──────────┘
          │                       │                       │
          └───────────────────────┼───────────────────────┘
                                  │
                    ┌─────────────▼───────────────────┐
                    │    LLM Orchestration Layer      │
                    │  Prompt Mgmt / Context Window   │
                    │  Guardrails / PII Filter        │
                    └─────────────┬───────────────────┘
                                  │
                    ┌─────────────▼───────────────────┐
                    │      Model Router               │
                    │  Route by: cost/latency/quality │
                    │  Fallback / Load Balance        │
                    └─────────────┬───────────────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          │                       │                       │
    ┌─────▼─────┐          ┌─────▼─────┐          ┌─────▼─────┐
    │  OpenAI   │          │  Anthropic│          │  Self-host│
    │  GPT-4o   │          │  Claude   │          │  Llama    │
    └───────────┘          └───────────┘          └───────────┘
核心服务说明:

1. API Gateway:
   ├── 认证: JWT + API Key
   ├── 限流: 按团队/用户配额
   ├── 路由: 根据请求类型分发到对应服务
   └── 审计: 记录所有请求

2. Chat Service:
   ├── 处理实时对话请求
   ├── SSE/WebSocket流式返回
   ├── 上下文窗口管理
   └── 对话历史存取

3. RAG Service:
   ├── 文档上传和处理
   ├── 向量检索
   ├── 上下文注入
   └── 答案生成+引用

4. Batch Service:
   ├── 大批量翻译/摘要
   ├── 异步队列处理
   ├── 结果回调通知
   └── 利用低峰期cheaper pricing

5. LLM Orchestration Layer:
   ├── Prompt模板管理
   ├── System Prompt注入
   ├── Guardrails(输入/输出过滤)
   ├── PII检测与脱敏
   └── 上下文压缩

6. Model Router:
   ├── 基于规则/ML的模型选择
   ├── 故障转移(Provider A挂了用B)
   ├── 成本优化(简单问题用小模型)
   └── 负载均衡

Step 5: API Design 接口设计 (5 min)

核心API:

POST /v1/chat/completions
{
  "model": "auto",          // auto = 智能路由
  "messages": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."}
  ],
  "stream": true,
  "project_id": "team-alpha",
  "options": {
    "temperature": 0.7,
    "max_tokens": 2048,
    "rag_enabled": true,
    "rag_collection": "team-alpha-docs",
    "guardrails": ["pii_filter", "toxicity_filter"]
  }
}

Response (SSE Stream):
data: {"id":"msg_001","delta":{"content":"Here"},"usage":null}
data: {"id":"msg_001","delta":{"content":" is"},"usage":null}
data: {"id":"msg_001","delta":{"content":"..."},"usage":{"input":500,"output":128}}
data: [DONE]

POST /v1/documents/ingest
{
  "project_id": "team-alpha",
  "collection": "team-alpha-docs",
  "documents": [
    {"url": "s3://bucket/file.pdf", "metadata": {"type": "policy"}}
  ],
  "chunking_strategy": "semantic",  // semantic | fixed | sliding
  "chunk_size": 512
}

GET /v1/usage/summary?project_id=team-alpha&period=2026-05
Response:
{
  "total_requests": 12500,
  "total_tokens": {"input": 6250000, "output": 3750000},
  "total_cost_usd": 125.50,
  "budget_remaining_usd": 374.50,
  "by_model": {
    "gpt-4o": {"requests": 3000, "cost": 85.0},
    "claude-sonnet": {"requests": 5000, "cost": 30.0},
    "llama-70b": {"requests": 4500, "cost": 10.5}
  }
}

GET /v1/prompts/{prompt_id}/versions
POST /v1/prompts/{prompt_id}/deploy
POST /v1/prompts/{prompt_id}/ab-test

Step 6: Detailed Design 深入设计 (12 min)

6.1 Model Router — 核心组件

Model Router 决策逻辑:

输入因素:
  ├── 任务类型: chat / code / summary / translation
  ├── 复杂度: 简单问题 vs 复杂推理
  ├── 成本约束: 团队预算剩余
  ├── 延迟要求: 实时 vs 异步
  ├── 安全级别: 是否包含敏感数据
  └── 模型可用性: 当前各Provider状态

路由策略:

Strategy 1: Rule-based (规则路由)
  IF task == "code_gen" → Claude Sonnet (编码能力强)
  IF task == "translation" && simple → Llama-70b (成本低)
  IF task == "complex_reasoning" → GPT-4o / Claude Opus
  IF data_sensitivity == "high" → Self-hosted Llama (数据不出域)
  IF budget_remaining < 20% → 降级到cheaper model

Strategy 2: ML-based (智能路由)
  训练一个轻量分类器:
    Input: 用户Query embedding + 任务元数据
    Output: 最优模型ID
    训练数据: 历史请求的(query, model, quality_score)
    目标: 在质量约束下最小化成本
    延迟: < 5ms (不能成为瓶颈)

Strategy 3: Cascade (级联路由)
  Step 1: 先用小模型(Llama-8B)尝试回答
  Step 2: 用评估器判断答案质量
  Step 3: 质量不达标 → 升级到大模型
  优点: 80%简单问题省70%成本
  缺点: 复杂问题延迟增加

Fallback 故障转移:
  Primary: OpenAI GPT-4o
  Secondary: Anthropic Claude Sonnet
  Tertiary: Self-hosted Llama-70b
  策略: Circuit Breaker(熔断器)
    ├── 5min内失败率 > 30% → 触发熔断
    ├── 自动切换到Secondary
    └── 每30s探测Primary是否恢复

6.2 多租户隔离

多租户设计:

数据隔离层级:
  Level 1 - 逻辑隔离 (Shared DB, Row-level Security):
    ├── 所有团队共享数据库
    ├── 每条记录有 tenant_id
    ├── 查询自动注入 WHERE tenant_id = ?
    └── 适用: 对话历史, 用量记录

  Level 2 - Collection隔离 (向量库):
    ├── 每团队单独Collection
    ├── RAG检索只在自己的Collection内
    └── 适用: 知识库/文档

  Level 3 - 物理隔离 (VIP租户):
    ├── 独立模型实例
    ├── 独立数据库
    └── 适用: 极高安全要求的团队

资源配额管理:
  per_team_config:
    team_id: "team-alpha"
    monthly_budget_usd: 500
    rate_limit_rpm: 100       # requests per minute
    max_tokens_per_request: 8192
    allowed_models: ["gpt-4o", "claude-sonnet", "llama-70b"]
    rag_storage_limit_gb: 5
    data_retention_days: 90

  预算控制:
    ├── Redis计数器: INCR team:{id}:cost:{month} {cost}
    ├── 到达80%: 发通知给团队Admin
    ├── 到达95%: 自动降级到cheaper model
    └── 到达100%: 拒绝请求(或需审批)

6.3 安全与Guardrails

安全架构 (Defense in Depth):

Layer 1 — Input Guardrails (请求进入前):
  ├── PII Detection: 检测身份证/银行卡/手机号
  │   ├── Regex规则(快速)
  │   ├── NER模型(准确)
  │   └── 动作: 脱敏替换 / 拒绝请求
  ├── Prompt Injection Detection: 检测注入攻击
  │   ├── 关键词过滤
  │   ├── LLM-as-Judge检测
  │   └── 动作: 拒绝 + 告警
  ├── Toxicity Filter: 有害内容过滤
  └── Topic Restriction: 只允许工作相关话题

Layer 2 — System Prompt Protection:
  ├── System Prompt不随对话发送给用户
  ├── 防御提取攻击(Do not reveal instructions)
  └── 每个团队独立System Prompt

Layer 3 — Output Guardrails (响应返回前):
  ├── Hallucination Check: RAG场景下验证引用存在
  ├── Compliance Filter: 不允许生成投资建议等
  ├── PII Re-check: 确保输出不包含PII
  └── 格式验证: JSON/代码格式验证

Layer 4 — Audit & Monitoring:
  ├── 所有请求/响应记录(加密存储)
  ├── 异常检测: 批量请求/敏感查询频率
  ├── 合规报告: 月度使用报告
  └── 数据保留策略: 90天后自动清理

6.4 可观测性

LLM平台关键监控指标:

Performance Metrics:
  ├── TTFT (Time to First Token): P50/P95/P99
  ├── TPS (Tokens per Second): 流式生成速率
  ├── E2E Latency: 端到端延迟(含RAG检索)
  └── Error Rate: 按模型/团队/错误类型

Quality Metrics:
  ├── User Satisfaction: 👍/👎 反馈率
  ├── RAG Relevance: 检索结果相关性
  ├── Hallucination Rate: 幻觉检测率
  └── Guardrail Trigger Rate: 安全过滤触发率

Cost Metrics:
  ├── Cost per Request: 每次请求平均成本
  ├── Cost per Team: 各团队支出追踪
  ├── Token Efficiency: 缓存命中率
  └── Budget Burn Rate: 预算消耗速率

Business Metrics:
  ├── DAU / MAU: 活跃用户数
  ├── Adoption Rate: 各团队采用率
  ├── Use Case Distribution: 用例分布
  └── Productivity Impact: 效率提升估算

Dashboard 设计:
  实时面板: TTFT / QPS / Error Rate / Cost Rate
  日报面板: DAU / Token用量 / 质量分数 / 预算消耗
  月报面板: 团队排名 / 趋势分析 / ROI估算

Step 7: Evaluation 评估与权衡 (5 min)

关键Trade-off分析:

Trade-off 1: 质量 vs 成本
  高质量方案: 全部用GPT-4o/Claude Opus → $15K/month
  低成本方案: 全部用Llama-70b自部署 → $3K/month
  我们的方案: 智能路由, 简单用小模型, 复杂用大模型 → $6-8K/month
  → 成本降50%的同时质量损失<5%

Trade-off 2: 延迟 vs 安全
  低延迟: 跳过Guardrails → TTFT ~200ms
  高安全: Input+Output双重过滤 → TTFT ~500ms
  我们的方案: Input过滤同步(必须), Output过滤异步(不阻塞流式)
  → 对于流式输出, 先返回给用户, 异步检查并在必要时截断

Trade-off 3: 数据隔离 vs 运维复杂度
  完全隔离: 每团队独立实例 → 运维N个实例
  完全共享: 单实例多租户 → 可能数据泄露
  我们的方案: 逻辑隔离 + 敏感团队物理隔离
  → 大部分团队共享, 5%高敏感团队独立部署

Trade-off 4: 自研 vs 买服务
  自研: 完全控制, 但需6-12月开发
  买SaaS: 快速上线, 但被锁定+数据风险
  我们的方案: 核心层自研(Router/Guardrails), 基础层用云服务(向量库/模型API)
  → 控制关键路径, 非核心外包

Step 8: Deployment 部署与运维 (4 min)

部署架构:

Kubernetes (推荐):
  ├── Gateway: 2-3 replicas, HPA
  ├── Chat Service: 3-5 replicas, HPA (按QPS)
  ├── RAG Service: 2-3 replicas, HPA
  ├── Batch Service: 1-3 replicas (按队列长度)
  ├── Model Router: 2 replicas (轻量级)
  └── Self-hosted LLM: GPU节点, 独立NodePool

CI/CD Pipeline:
  ├── Prompt变更: Prompt Registry → A/B Test → Gradual Rollout
  ├── 代码变更: PR → Test → Staging → Canary → Production
  └── 模型变更: Shadow Mode → Eval → Gradual Migration

灾备策略:
  ├── Multi-region部署 (Primary + DR)
  ├── 模型Provider故障 → 自动Fallback
  ├── 数据库: 主从复制 + 定时备份
  └── RTO: 5min (切换模型), RPO: 0 (无数据丢失)

扩展路径:
  Phase 1 (当前): 50 teams, API-based
  Phase 2 (6个月后): 100 teams, 加入Fine-tuned models
  Phase 3 (1年后): 500 teams, 加入Agent/Workflow平台

三、参考架构深入

3.1 Prompt管理系统

为什么Prompt管理很重要:
  企业LLM平台中, Prompt是核心业务资产
  ├── 一个好的Prompt值几万美元(节约的人力)
  ├── Prompt变更可能导致输出质量剧变
  ├── 需要版本控制、回滚、A/B测试
  └── 需要团队间共享和权限管理

Prompt Registry设计:
  prompts:
    id: "prompt_001"
    name: "customer-support-v2"
    template: |
      You are a {role} assistant for {company}.
      Guidelines:
      - Be professional and helpful
      - Do not provide financial advice
      - Always cite sources from the knowledge base

      Context: {rag_context}

      User: {user_message}
    variables: ["role", "company", "rag_context", "user_message"]
    versions:
      - v1: {template: "...", created: "2026-01-01", status: "deprecated"}
      - v2: {template: "...", created: "2026-03-01", status: "active", traffic: 90%}
      - v3: {template: "...", created: "2026-05-01", status: "canary", traffic: 10%}
    metrics:
      v2: {satisfaction: 4.2, hallucination: 2.1%, avg_latency: 1.2s}
      v3: {satisfaction: 4.5, hallucination: 1.5%, avg_latency: 1.1s}

A/B测试流程:
  1. 创建新版本Prompt (v3)
  2. 设置流量分配: v2=90%, v3=10%
  3. 收集7天指标数据
  4. 统计显著性检验
  5. 胜出 → 逐步升级到100%
  6. 失败 → 回滚并分析原因

3.2 语义缓存 (Semantic Cache)

为什么需要语义缓存:
  传统缓存: key完全匹配 → 命中率低
  语义缓存: 语义相似的问题复用答案 → 命中率高30-50%

实现方案:

方案A: Embedding + 相似度搜索
  1. 计算Query的Embedding
  2. 在缓存向量库中搜索Top-1
  3. 相似度 > 0.95 → Cache Hit
  4. 相似度 < 0.95 → Cache Miss → 调LLM → 存入缓存

方案B: GPTCache (开源方案)
  ├── Adapter: 接入各种LLM
  ├── Pre-processing: Query规范化
  ├── Embedding: 语义表示
  ├── Cache Storage: 向量+KV存储
  └── Post-processing: 结果适配

缓存策略:
  ├── TTL: 按内容类型设置过期时间
  │   ├── 事实性内容: 24h
  │   ├── 代码生成: 7d (相对稳定)
  │   └── 实时数据相关: 不缓存
  ├── 容量: LRU淘汰 + 重要性加权
  └── 失效: 当底层知识库更新时清除相关缓存

效果估算:
  缓存命中率: 30-40% (企业场景, 很多重复问题)
  成本节省: 30% token费用
  延迟改善: 命中时 < 50ms (vs 1-3s)

3.3 成本控制体系

企业LLM成本控制 — 五层防线:

Layer 1: 智能路由 (节省30-50%)
  ├── 简单问题 → 小模型 (Llama-8B, $0.05/1M tokens)
  ├── 中等问题 → 中模型 (GPT-4o-mini, $0.15/1M tokens)
  └── 复杂问题 → 大模型 (GPT-4o, $2.5-10/1M tokens)

Layer 2: 语义缓存 (节省20-30%)
  ├── 相同/相似问题直接返回缓存结果
  └── 每月节省数千美元API调用

Layer 3: Prompt优化 (节省15-25%)
  ├── Prompt压缩: 去除冗余指令
  ├── Context窗口管理: 只保留最相关的对话历史
  └── 结构化输出: 减少不必要的verbose输出

Layer 4: 批量处理 (节省50%+)
  ├── 利用Batch API (OpenAI批量接口半价)
  ├── 非实时任务延迟处理
  └── 合并多个小请求为一个大请求

Layer 5: 预算管理 (防止失控)
  ├── 团队月度预算上限
  ├── 80%/95%/100%告警阈值
  ├── 自动降级策略
  └── 月度成本复盘会议

成本报表示例:
  ┌─────────────┬──────────┬──────────┬──────────┐
  │ Team        │ Budget   │ Spent    │ Savings  │
  ├─────────────┼──────────┼──────────┼──────────┤
  │ Engineering │ $2,000   │ $1,450   │ $780*    │
  │ Support     │ $1,500   │ $1,200   │ $520*    │
  │ Legal       │ $800     │ $650     │ $290*    │
  │ Marketing   │ $500     │ $380     │ $160*    │
  └─────────────┴──────────┴──────────┴──────────┘
  * Savings = 如果不用路由和缓存的估算成本 - 实际成本

四、常见追问及应答

追问 1: "如何处理模型幻觉?"

回答框架:

1. 预防(减少幻觉发生):
   ├── RAG: 提供事实来源, 要求基于检索结果回答
   ├── Prompt Engineering: 明确指示"如果不确定请说不知道"
   ├── Temperature: 降低temperature (0.1-0.3)
   └── System Prompt: 限定回答范围

2. 检测(发现幻觉):
   ├── Source Verification: 检查回答是否有文档支撑
   ├── Self-Consistency: 同一问题问多次, 答案不一致=可能幻觉
   ├── NLI (Natural Language Inference): 检查回答与源文档是否矛盾
   └── LLM-as-Judge: 用另一个LLM评估回答的事实性

3. 缓解(降低影响):
   ├── Confidence Score: 给每个回答标注置信度
   ├── Citation: 要求回答附带引用来源
   ├── Human-in-the-Loop: 低置信度答案需人工审核
   └── Disclaimer: UI上标注"AI生成, 可能有误"

追问 2: "如何评估平台的整体质量?"

LLM平台质量评估体系:

自动评估 (Automated):
  ├── 功能性: 是否正确完成任务 (Pass/Fail on test cases)
  ├── 相关性: 回答是否相关 (Embedding similarity)
  ├── 忠实度: 是否基于提供的上下文 (NLI Score)
  ├── 安全性: 是否触发Guardrails (Trigger Rate)
  └── 延迟: TTFT / 总延迟 / Token生成速率

人工评估 (Human):
  ├── 用户反馈: 👍/👎 + 可选文字反馈
  ├── 专家评审: 随机抽样人工评分 (1-5分)
  └── 对比评估: A/B测试中Side-by-side比较

综合评分:
  Platform Quality Score =
    0.3 × Task_Completion_Rate +
    0.2 × User_Satisfaction +
    0.2 × Faithfulness +
    0.15 × Safety_Score +
    0.15 × Latency_Score

追问 3: "如何支持Fine-tuned模型?"

Fine-tuning Pipeline集成:

流程:
  1. 团队提交训练数据 (JSONL格式)
  2. 数据质量检查 (格式/去重/PII过滤)
  3. 提交训练任务 (OpenAI FT API / 自部署训练)
  4. 训练完成 → 自动评估 (benchmark suite)
  5. 评估通过 → 注册到Model Registry
  6. 通过Model Router配置为该团队可用

Model Registry:
  models:
    - id: "ft:gpt-4o:team-alpha:customer-support:abc123"
      type: "fine-tuned"
      base_model: "gpt-4o"
      owner: "team-alpha"
      metrics: {accuracy: 0.92, latency_p50: 0.8s}
      status: "active"
      cost_multiplier: 1.5  # fine-tuned模型通常更贵

权限控制:
  ├── Fine-tuned模型只对owner团队可见
  ├── 可选择共享给其他团队
  └── 训练数据不可被其他团队访问

追问 4: "如何处理长文档?"

长文档处理策略:

方案1: Chunking + RAG (推荐):
  ├── 将长文档切分为chunks
  ├── 检索最相关的Top-K chunks
  ├── 只把相关chunks放入Context
  └── 适用: 大部分场景

方案2: Map-Reduce:
  ├── Map: 对每个chunk独立处理
  ├── Reduce: 合并所有chunk的结果
  └── 适用: 全文摘要/信息提取

方案3: 长上下文模型:
  ├── 使用128K/1M context的模型
  ├── 直接放入完整文档
  └── 适用: 需要全局理解的场景(但成本高)

混合策略 (我们的方案):
  IF doc_length < 32K tokens → 直接放入context
  IF doc_length < 200K tokens → 长上下文模型
  IF doc_length > 200K tokens → Chunking + RAG

追问 5: "如果要支持Agent/Workflow怎么扩展?"

扩展到Agent平台:

在现有架构上扩展:
  ┌─────────────────────────────┐
  │     Workflow Engine         │  ← 新增
  │  (DAG/State Machine)        │
  └─────────────┬───────────────┘
                │
  ┌─────────────▼───────────────┐
  │     Agent Runtime           │  ← 新增
  │  (Tool Calling / Memory)    │
  └─────────────┬───────────────┘
                │
  ┌─────────────▼───────────────┐
  │  Tool Registry + Execution  │  ← 新增
  │  (API/DB/Search/Code)       │
  └─────────────┬───────────────┘
                │
  ┌─────────────▼───────────────┐
  │  现有LLM Orchestration      │  ← 复用
  └─────────────────────────────┘

关键新增组件:
  1. Tool Registry: 注册可调用的工具(API/数据库/搜索)
  2. Agent Runtime: 管理Agent循环(Think → Act → Observe)
  3. Workflow Engine: DAG编排多步骤流程
  4. Memory Store: Agent长期记忆和工作记忆
  5. Safety Sandbox: 工具执行的安全沙箱

五、面试评分标准

评分维度 (满分各10分):

1. 需求理解 (10分):
   ├── 能否识别核心需求 vs 非核心需求
   ├── 是否主动问澄清问题
   └── 是否考虑了企业级特有需求(安全/合规/多租户)

2. 架构设计 (10分):
   ├── 分层是否清晰合理
   ├── 组件职责是否单一
   └── 是否考虑了可扩展性

3. 深入设计 (10分):
   ├── 是否深入了关键组件(Router/Guardrails/Cache)
   ├── 是否有具体的技术方案(不只是画框)
   └── 是否考虑了边界情况

4. Trade-off分析 (10分):
   ├── 是否识别了关键权衡
   ├── 是否给出了合理的选择理由
   └── 是否承认了方案的局限性

5. AI特殊性 (10分):
   ├── 模型选择和路由策略
   ├── 成本控制和优化
   ├── 输出质量保障
   └── 安全和Guardrails

优秀候选人的表现:
  ├── 5min内快速明确范围, 不纠结于细节
  ├── 先画高层架构, 再深入1-2个核心组件
  ├── 主动讲Trade-off而不是等面试官问
  ├── 结合实际经验举例说明设计决策
  └── 对AI系统的特殊性有深刻理解(不只是套传统架构)

常见扣分项:
  ├── 不问需求直接画架构
  ├── 画完架构不深入任何组件
  ├── 只考虑Happy Path, 不考虑异常
  ├── 不提成本(企业最关心的)
  └── 安全只是一笔带过

六、面试Tips与模板句

开场模板:
  "Before diving into the design, let me clarify a few requirements..."
  "I'll use the RESHADED framework to structure my approach."

画架构时:
  "Let me start with a high-level architecture, then we can deep dive
   into the components you're most interested in."

讲Trade-off时:
  "There's a trade-off here between X and Y. I'd choose X because..."
  "An alternative approach is... but I prefer the first because..."

被追问不会的:
  "That's a great question. I haven't implemented this before,
   but here's how I'd approach it..."

结尾:
  "To summarize, the key design decisions are:
   1. Smart routing for cost optimization
   2. Multi-layer guardrails for safety
   3. Semantic cache for latency and cost
   And the main trade-off is quality vs cost, which we address
   through the cascading model approach."

七、今日总结

Day 43 核心收获:

1. RESHADED框架:
   系统设计面试的黄金8步, AI系统设计的额外关注点

2. 企业LLM平台设计:
   核心是 Model Router + Multi-tenant + Guardrails + Cost Control

3. 关键Trade-off:
   质量vs成本 / 延迟vs安全 / 隔离vs复杂度 / 自研vs买服务

4. AI系统设计的特殊性:
   传统系统关注Scale+Consistency
   AI系统关注Quality+Cost+Latency

Phase 4 面试冲刺正式开始!
明天: Day 44 — 设计一个生产级RAG系统

参考资源: