Skip to content

AI 应用架构模式完全指南

"从 Demo 到生产的距离,比想象中更远——好的架构是成功的一半。"

AI 应用架构 是指设计和部署 AI 系统的技术模式与最佳实践。本指南涵盖生产级 LLM 应用的架构设计、部署策略、成本监控和可观测性。

2025 现状

将 AI 从实验推向生产需要在基础设施、算力、数据和人才方面进行大量投资。成熟的架构模式正在成为企业竞争优势。


一、AI 应用架构概述

1.1 架构演进阶段

阶段特点典型形态
Prototype快速验证、单体应用Jupyter Notebook + API
MVP基本功能、简单部署单服务+简单监控
Production高可用、可扩展微服务+完整运维
Enterprise多团队、治理合规平台化+MLOps/LLMOps

1.2 核心架构需求

需求说明关键考量
可扩展性应对负载变化水平扩展、弹性伸缩
可靠性持续稳定服务容错、降级、重试
可观测性理解系统状态日志、指标、追踪
安全性保护数据和系统认证、加密、审计
成本效率控制运营成本资源优化、缓存
可维护性易于更新迭代模块化、版本控制

二、主流架构模式

2.1 架构模式对比

模式适用场景优势复杂度
API-Centric简单问答应用快速部署
RAG 模式知识密集型应用准确可靠
Agent 模式复杂任务自动化灵活强大
Workflow 编排多步骤业务流程可控可审计
微服务大规模企业应用独立扩展
事件驱动实时处理场景解耦高效

2.2 API-Centric 架构

最简单的 LLM 应用架构:

用户请求 → API Gateway → LLM Service → LLM API → 响应
组件职责
API Gateway认证、限流、路由
LLM ServicePrompt 管理、上下文处理
LLM APIOpenAI/Claude/Gemini 等
缓存层减少重复调用

2.3 RAG 架构

适合知识密集型应用:

组件职责技术选型
文档处理解析、分块Unstructured, Docling
向量数据库存储嵌入向量Pinecone, Qdrant, Weaviate
检索服务相似度搜索混合搜索、重排序
生成服务LLM 响应生成GPT-4o, Claude, Gemini
编排层流程控制LangChain, LlamaIndex

2.4 Agentic 架构

适合自主任务执行:

组件职责类比
Agent Core(Model)推理、决策、规划🧠 大脑
Tool Registry工具注册和管理🖐️ 双手
Orchestration Layer管理操作循环、记忆、策略执行🔌 神经系统
Memory Store短期/长期记忆💾 记忆
Executor工具调用执行⚡ 肌肉
Deployment Services托管、监控、日志、管理🦵 身体与腿

Agent 部署与服务

在本地构建 Agent 适合原型开发,但生产部署需要完整的服务支持:

服务类别说明技术选型
会话管理维护对话历史和状态Redis, PostgreSQL
记忆持久化跨会话持久存储向量数据库 + KV 存储
日志与追踪记录 Agent 决策轨迹OpenTelemetry, Langfuse
安全与合规数据隐私、数据驻留VPC, 加密
API 网关认证、限流、路由Kong, API Gateway

部署选项

选项适用场景工具
托管平台快速部署、一站式Vertex AI Agent Engine
容器化控制度高、DevOps 集成Cloud Run, GKE, Docker
Serverless弹性扩展、按需计费Cloud Functions

Google 建议

对于初次部署,使用托管平台的 deploy 命令快速上线。生产就绪需要更大投入,包括 CI/CD 和自动化测试。

2.5 微服务架构

企业级 AI 应用:

服务职责扩展策略
Gateway Service入口、认证水平扩展
Prompt Service提示词管理按需扩展
Embedding Service向量化GPU 弹性
Retrieval Service检索读副本扩展
Generation ServiceLLM 调用按模型分组
Orchestration Service流程编排事件驱动

三、生产部署策略

3.1 部署模式

模式说明适用场景
Serverless按需计算、自动扩缩流量波动大
ContainerDocker/K8s 部署标准企业环境
VM 部署虚拟机直接部署简单场景
边缘部署本地/边缘设备低延迟、隐私
混合部署云+边缘组合综合需求

3.2 部署策略

策略说明风险级别
蓝绿部署两套环境切换
金丝雀发布小流量验证
滚动更新逐步替换实例
A/B 测试对比不同版本效果
影子模式生产流量复制测试

3.3 部署检查清单

阶段检查项
部署前安全扫描、性能测试、回滚计划
部署中健康检查、指标监控、告警就绪
部署后功能验证、性能基线、错误率监控

3.4 Kubernetes 部署示例

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: llm-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: llm-service
  template:
    metadata:
      labels:
        app: llm-service
    spec:
      containers:
      - name: llm-service
        image: llm-service:v1.0
        resources:
          requests:
            memory: "1Gi"
            cpu: "500m"
          limits:
            memory: "2Gi"
            cpu: "1000m"
        env:
        - name: OPENAI_API_KEY
          valueFrom:
            secretKeyRef:
              name: llm-secrets
              key: openai-key
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080

四、LLMOps 实践

4.1 LLMOps vs MLOps

方面MLOpsLLMOps
模型来源自建训练调用 API + 微调
核心资产模型权重Prompt + Context
版本控制模型版本Prompt + 配置版本
评估方式精确指标人类评估 + 自动评估
关键挑战特征工程Prompt 工程、RAG 优化

4.2 LLMOps 核心组件

组件职责推荐工具
Prompt 管理版本控制、A/B 测试Langfuse, PromptLayer
模型路由多模型调度LiteLLM, OpenRouter
评估系统自动化评估RAGAS, Braintrust
监控追踪可观测性LangSmith, Arize
成本管理用量分析自建 + 平台工具

4.3 Prompt 版本管理

python
# Prompt 模板管理示例
class PromptManager:
    def __init__(self):
        self.prompts = {}
        self.versions = {}
    
    def register(self, name: str, template: str, version: str):
        """注册 Prompt 模板"""
        key = f"{name}:{version}"
        self.prompts[key] = template
        if name not in self.versions:
            self.versions[name] = []
        self.versions[name].append(version)
    
    def get(self, name: str, version: str = "latest") -> str:
        """获取 Prompt 模板"""
        if version == "latest":
            version = self.versions[name][-1]
        return self.prompts[f"{name}:{version}"]
    
    def rollback(self, name: str, version: str):
        """回滚到指定版本"""
        # 实现版本回滚逻辑
        pass

4.4 模型路由策略

策略说明适用场景
成本优先优先使用便宜模型预算敏感
质量优先优先使用最强模型质量关键
智能路由根据任务复杂度选择平衡场景
负载均衡分散到多个提供商高可用
故障转移主模型失败时切换容错

五、可观测性

5.1 LLM 可观测性三支柱

支柱内容关键指标
日志Prompt、响应、元数据完整交互记录
指标延迟、吞吐量、成本性能和业务指标
追踪请求完整链路端到端调用链

5.2 关键监控指标

类别指标告警阈值
延迟P50/P95/P99 响应时间P99 > 5s
可用性成功率< 99.5%
吞吐量QPS接近容量限制
Token 用量输入/输出 Token超预算
成本每请求成本环比增长 >20%
质量幻觉率、相关性低于基线

5.3 LLM 交互日志结构

python
@dataclass
class LLMInteractionLog:
    # 请求信息
    request_id: str
    timestamp: datetime
    user_id: str
    session_id: str
    
    # 模型信息
    model: str
    model_version: str
    provider: str
    
    # 输入输出
    prompt: str
    prompt_template_id: str
    completion: str
    
    # 性能指标
    latency_ms: int
    input_tokens: int
    output_tokens: int
    total_tokens: int
    
    # 成本
    cost_usd: float
    
    # 质量指标(可选)
    user_feedback: Optional[int]
    auto_eval_score: Optional[float]

5.4 可观测性工具详细对比

工具类型开源核心能力最佳场景
LangSmith专用 LLM深度 LangChain 集成、Agent 调试、Prompt PlaygroundLangChain 项目
Langfuse专用 LLM全链路追踪、成本追踪、自托管、OpenTelemetry需自托管、预算敏感
Arize Phoenix专用 LLMRAG 分析、漂移检测、Notebook 集成RAG 应用、ML 团队
Arize AX企业级Phoenix 企业版、SSO/RBAC、托管服务企业大规模部署
Braintrust专用 LLM评估、Prompt Playground、实验追踪评估驱动开发
Helicone专用 LLM代理模式、低侵入、成本分析快速集成
Datadog通用 APM企业级、全栈监控、LLM Observability 插件已有 Datadog 用户
Grafana通用监控灵活仪表盘、开源、可扩展自建监控体系

选择建议:

  • LangChain 项目 → LangSmith(最佳集成)
  • 需要自托管 → Langfuse(开源、可控)
  • RAG 重度应用 → Arize Phoenix(RAG 分析强)
  • 快速集成 → Helicone(代理模式无需改代码)

5.5 追踪集成示例

python
from langfuse import Langfuse
from openai import OpenAI

langfuse = Langfuse()
client = OpenAI()

def generate_with_tracing(prompt: str, user_id: str):
    # 创建追踪
    trace = langfuse.trace(
        name="chat-generation",
        user_id=user_id,
        metadata={"source": "api"}
    )
    
    # 创建生成 span
    generation = trace.generation(
        name="openai-chat",
        model="gpt-4o",
        input=prompt
    )
    
    try:
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[{"role": "user", "content": prompt}]
        )
        
        output = response.choices[0].message.content
        
        # 记录输出
        generation.end(
            output=output,
            usage={
                "input": response.usage.prompt_tokens,
                "output": response.usage.completion_tokens
            }
        )
        
        return output
        
    except Exception as e:
        generation.end(status_message=str(e), level="ERROR")
        raise

六、成本监控与优化

6.1 成本构成分析

成本项占比(典型)优化空间
LLM API 调用40-60%
Embedding API10-20%
向量数据库10-15%
计算资源15-25%
存储5-10%

6.2 成本优化策略详解

策略类别策略节省幅度实施难度说明
Token 优化Prompt 精简20-40%删除冗余词、用列表代替段落
Token 优化RAG 上下文裁剪50-70%只传必要上下文
Token 优化输出长度限制10-30%max_tokens 控制
模型选择智能路由50-80%简单任务用小模型
模型选择模型量化30-50%(自托管)8-bit/4-bit 量化
缓存语义缓存30-70%相似查询复用
缓存Embedding 缓存40-60%避免重复嵌入
批处理请求聚合15-25%批量 API 调用
部署自托管50-80%免 API 费用

6.3 缓存策略详解

缓存类型原理适用场景节省幅度工具
精确匹配查询完全相同高重复查询100%(命中时)Redis
语义缓存Embedding 相似度匹配意图相似查询30-70%GPTCache, Redis+向量
KV 缓存存储 Transformer 中间状态长对话、连续生成20-40%vLLM 内置
Embedding 缓存缓存文档向量RAG 应用40-60%向量数据库
部分响应缓存缓存中间结果多步骤工作流10-30%自建

语义缓存实现示例:

python
import numpy as np
from openai import OpenAI
import redis

client = OpenAI()
cache = redis.Redis()

def semantic_cache_query(query: str, threshold: float = 0.92):
    """语义缓存查询"""
    # 1. 生成查询 embedding
    query_embedding = client.embeddings.create(
        model="text-embedding-3-small",
        input=query
    ).data[0].embedding
    
    # 2. 搜索相似缓存
    cached_items = cache.hgetall("semantic_cache")
    for key, value in cached_items.items():
        cached = json.loads(value)
        similarity = np.dot(query_embedding, cached["embedding"])
        if similarity >= threshold:
            return cached["response"], True  # 命中缓存
    
    # 3. 未命中,调用 LLM
    response = call_llm(query)
    
    # 4. 存入缓存
    cache.hset("semantic_cache", query, json.dumps({
        "embedding": query_embedding,
        "response": response
    }))
    
    return response, False

6.4 成本监控仪表盘

指标维度告警条件
日成本总计/按模型/按用户超预算 20%
单请求成本按模型/按功能异常偏高
Token 效率输入/输出比比例异常
缓存命中率按缓存类型低于 30%
成本趋势周/月对比增长过快

七、高可用与容错

7.1 高可用设计原则

原则说明
冗余多实例、多区域部署
隔离故障域隔离
降级核心功能优先保障
限流保护后端服务
熔断快速失败、避免级联

7.2 容错策略

策略说明实现方式
超时控制避免无限等待设置合理超时
重试机制处理瞬时故障指数退避
降级响应主服务不可用时缓存响应/简化模型
多提供商避免单点依赖OpenAI+Claude+Gemini
限流保护防止过载令牌桶/滑动窗口

7.3 降级方案示例

python
class LLMService:
    def __init__(self):
        self.primary = OpenAI()
        self.fallback_models = ["gpt-4o-mini", "gpt-3.5-turbo"]
        self.cache = RedisCache()
    
    async def generate(self, prompt: str) -> str:
        # 1. 检查缓存
        cached = await self.cache.get(prompt)
        if cached:
            return cached
        
        # 2. 尝试主模型
        try:
            return await self._call_model("gpt-4o", prompt)
        except Exception as e:
            logger.warning(f"Primary model failed: {e}")
        
        # 3. 尝试降级模型
        for model in self.fallback_models:
            try:
                return await self._call_model(model, prompt)
            except Exception as e:
                logger.warning(f"Fallback {model} failed: {e}")
        
        # 4. 最终降级
        return "抱歉,服务暂时不可用,请稍后重试。"

八、安全与合规

8.1 生产安全检查清单

类别检查项
认证授权API Key 加密存储、最小权限原则
数据安全传输加密、敏感数据脱敏
输入验证Prompt 注入防护、输入长度限制
输出过滤内容安全审核、PII 过滤
审计日志完整的操作记录
访问控制基于角色的权限管理

8.2 合规要求

法规关键要求应对措施
GDPR数据保护、删除权数据最小化、审计
EU AI Act高风险 AI 合规风险评估、文档化
SOC 2安全控制控制实施、审计
HIPAA健康数据保护加密、访问控制

九、工具与平台

9.1 LLMOps 平台详细对比

平台开源核心功能特点适用场景
LangSmith追踪、Prompt、评估LangChain 深度集成、Agent 调试LangChain 项目
Langfuse追踪、成本、评估自托管、OpenTelemetry、50+ 集成开源优先团队
Arize Phoenix追踪、RAG 分析、漂移检测ML 监控背景、Notebook 友好RAG/ML 团队
Braintrust评估、实验、Prompt评估为核心、A/B 测试评估驱动开发
Weights & Biases实验追踪、评估ML 实验管理背景ML 团队
TrueFoundry端到端 LLMOps完整平台、多模型服务企业级
Dify低代码开发、RAG可视化构建、快速原型非技术团队
Helicone代理监控、成本无侵入集成快速接入

9.2 基础设施选型

组件推荐选型备选方案
容器编排KubernetesDocker Compose
API 网关Kong, NginxAWS API Gateway
消息队列Redis, RabbitMQKafka
监控Prometheus + GrafanaDatadog
日志ELK StackLoki
追踪Jaeger, ZipkinDatadog APM

十、2025-2026 趋势

趋势说明
平台化 LLMOps一站式 LLM 运维平台
AI 基础设施即代码声明式 AI 资源管理
智能成本优化AI 驱动的成本优化
边云协同云端+边缘混合部署
自动化评估LLM as Judge 评估
Agent 运维体系专门的 Agent 监控治理

核心建议

  1. 渐进式演进:从简单架构开始,按需复杂化
  2. 可观测性优先:第一天就部署完整监控
  3. 成本意识:持续监控和优化成本
  4. 安全内建:安全考量融入设计阶段
  5. 自动化运维:减少人工干预,提高效率

← 返回 AI 知识库