AI 网关不是传统 API 网关的简单升级,而是面向 LLM 和 Agent 场景重新设计的流量控制中枢。它解决的核心问题是:如何让 AI 服务像微服务一样可控、可观测、可治理。
为什么需要 AI 网关? 传统 API 网关(如 Nginx、Kong、Envoy)设计用于 REST/gRPC 微服务,但 AI 应用引入了全新的挑战:
传统微服务
AI 服务
请求-响应模式,毫秒级响应
流式输出(SSE),秒级甚至分钟级响应
按请求计费,成本可预测
按 Token 计费,成本波动大
无状态,易于水平扩展
有状态(上下文、KV Cache),扩展复杂
错误明确(4xx/5xx)
错误模糊(幻觉、不安全输出)
认证鉴权即可
需要内容安全、Prompt 注入防护
核心问题:
如何管理多个 LLM 提供商(OpenAI、Anthropic、本地模型)?
如何控制 Token 消耗和成本?
如何防止 Prompt 注入和不安全输出?
如何追踪每个请求的 Token 消耗和延迟?
如何实现模型的灰度发布和 A/B 测试?
这些问题催生了 AI 网关 ——专门为 LLM 和 Agent 流量设计的网关层。
AI 网关的核心能力 1. 多模型统一接入与智能路由 问题 :应用需要调用多个 LLM 提供商,每个提供商的 API 格式不同。
解决方案 :AI 网关提供统一的 OpenAI 兼容 API,屏蔽底层差异。
1 2 3 4 5 response = client.chat.completions.create( model="gpt-4" , messages=[{"role" : "user" , "content" : "Hello" }] )
智能路由策略:
策略
说明
适用场景
按模型路由
根据模型名称路由到对应提供商
多模型混合部署
按成本路由
优先选择成本最低的模型
成本敏感场景
按延迟路由
优先选择延迟最低的模型
实时性要求高
按能力路由
根据任务类型选择最合适的模型
复杂任务用大模型,简单任务用小模型
故障回退
主模型不可用时自动切换到备用模型
高可用要求
配置示例(Envoy AI Gateway):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 apiVersion: gateway.envoyproxy.io/v1alpha1 kind: AIGateway metadata: name: llm-gateway spec: rules: - match: model: "gpt-4" backend: type: OpenAI endpoint: "https://api.openai.com/v1" apiKeySecret: openai-key - match: model: "claude-3" backend: type: Anthropic endpoint: "https://api.anthropic.com/v1" apiKeySecret: anthropic-key - match: model: "local-llama" backend: type: vLLM endpoint: "http://vllm-service:8000/v1"
2. Token 计量与成本控制 问题 :LLM 按 Token 计费,成本难以预测和控制。
解决方案 :AI 网关实时追踪 Token 消耗,实施配额和限流。
核心功能:
Token 计数 :实时统计每个请求的 input/output tokens
配额管理 :为每个用户/租户设置 Token 配额
限流策略 :基于 Token 速率限流(而非请求速率)
成本告警 :Token 消耗超过阈值时告警
账单生成 :按用户/租户/模型生成详细账单
配置示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 rateLimit: type: TokenBased rules: - name: per-user-limit match: header: "x-user-id" limit: tokens: 100000 requests: 100 quota: - name: tenant-a-quota match: header: "x-tenant-id" value: "tenant-a" limit: monthlyTokens: 10000000 action: reject
成本仪表盘示例:
1 2 3 4 5 6 7 8 9 10 用户 A: - 今日消耗:12,345 tokens - 本月消耗:456,789 tokens - 配额剩余:9,543,211 tokens (95%) - 预估成本:$45.67 模型分布: - GPT-4:30% tokens, 60% 成本 - GPT-3.5:50% tokens, 20% 成本 - Local LLaMA:20% tokens, 20% 成本
3. 内容安全与 Prompt 注入防护 问题 :恶意用户可以通过 Prompt 注入操控模型行为,输出不安全内容。
解决方案 :AI 网关在请求和响应两端实施安全检查。
防护机制:
请求端防护(Prompt 注入检测) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 injection_patterns = [ r"ignore previous instructions" , r"you are now" , r"new role:" , r"system prompt:" , r"jailbreak" , ] def check_prompt_injection (prompt: str ) -> bool : for pattern in injection_patterns: if re.search(pattern, prompt, re.IGNORECASE): return True return False if check_prompt_injection(request.messages[-1 ].content): return Response(status=400 , body="Potential prompt injection detected" )
响应端防护(内容过滤) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 unsafe_patterns = [ r"how to (hack|exploit|attack)" , r"illegal activities" , r"personal information:" , r"password:" , ] def check_unsafe_content (response: str ) -> bool : for pattern in unsafe_patterns: if re.search(pattern, response, re.IGNORECASE): return True return False if check_unsafe_content(response.content): response.content = "[Content filtered due to safety concerns]"
PII(个人身份信息)保护 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import redef mask_pii (text: str ) -> str : text = re.sub(r'\b[\w\.-]+@[\w\.-]+\.\w+\b' , '[EMAIL]' , text) text = re.sub(r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b' , '[PHONE]' , text) text = re.sub(r'\b\d{17}[\d|x]\b' , '[ID]' , text) return text response.content = mask_pii(response.content)
4. 可观测性与追踪 问题 :LLM 请求链路复杂,需要端到端的可观测性。
解决方案 :AI 网关收集完整的请求元数据和追踪信息。
关键指标:
指标
说明
用途
tokens.input
输入 Token 数
成本分析
tokens.output
输出 Token 数
成本分析
latency.first_token
首个 Token 延迟
性能监控
latency.total
总延迟
性能监控
model.name
使用的模型
路由分析
user.id
用户标识
用量分析
status.code
状态码
错误监控
追踪示例(OpenTelemetry):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from opentelemetry import tracetracer = trace.get_tracer("ai-gateway" ) def handle_request (request ): with tracer.start_as_current_span("llm-request" ) as span: span.set_attribute("llm.model" , request.model) span.set_attribute("llm.user" , request.user_id) span.set_attribute("llm.tokens.input" , count_tokens(request.messages)) response = call_llm(request) span.set_attribute("llm.tokens.output" , count_tokens(response.content)) span.set_attribute("llm.latency.first_token" , response.first_token_latency) span.set_attribute("llm.latency.total" , response.total_latency) return response
日志格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { "timestamp" : "2025-11-25T10:30:00Z" , "request_id" : "req-123456" , "user_id" : "user-789" , "model" : "gpt-4" , "tokens" : { "input" : 150 , "output" : 200 } , "latency" : { "first_token_ms" : 450 , "total_ms" : 2300 } , "cost" : { "input_usd" : 0.0045 , "output_usd" : 0.012 } , "status" : 200 , "trace_id" : "abc123def456" }
5. 缓存与性能优化 问题 :相同或相似的请求重复调用 LLM,浪费 Token 和增加延迟。
解决方案 :AI 网关实现语义缓存(Semantic Cache)。
语义缓存原理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from sentence_transformers import SentenceTransformerimport numpy as npembedding_model = SentenceTransformer('all-MiniLM-L6-v2' ) cache = {} def semantic_cache_lookup (prompt: str , threshold: float = 0.95 ): """语义相似度缓存查找""" prompt_embedding = embedding_model.encode(prompt) for cached_embedding, cached_response in cache.items(): similarity = cosine_similarity(prompt_embedding, cached_embedding) if similarity >= threshold: return cached_response return None def cosine_similarity (a, b ): return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
缓存策略:
策略
说明
适用场景
精确匹配
完全相同的 Prompt 才命中
严格一致性要求
语义匹配
相似度 > 阈值即命中
通用场景,节省成本
TTL 过期
缓存设置过期时间
时效性要求
用户隔离
不同用户的缓存隔离
多租户场景
性能提升示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 无缓存: - 请求数:1000 - LLM 调用:1000 次 - 平均延迟:2.5s - Token 消耗:500,000 - 成本:$15 有语义缓存(命中率 40%): - 请求数:1000 - LLM 调用:600 次(缓存命中 400 次) - 平均延迟:1.5s(缓存请求 < 100ms) - Token 消耗:300,000 - 成本:$9 节省:40% Token,40% 成本,40% 延迟
6. 模型版本管理与灰度发布 问题 :模型更新需要平滑过渡,避免影响所有用户。
解决方案 :AI 网关支持模型版本管理和流量分割。
灰度发布策略:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 routes: - match: model: "gpt-4" backends: - name: gpt-4-v1 weight: 90 endpoint: "https://api.openai.com/v1" - name: gpt-4-v2 weight: 10 endpoint: "https://api.openai.com/v1" modelOverride: "gpt-4-turbo" routes: - match: model: "gpt-4" header: "x-user-group" value: "control" backend: name: gpt-4-v1 - match: model: "gpt-4" header: "x-user-group" value: "experiment" backend: name: gpt-4-v2
监控指标对比:
1 2 3 4 5 6 7 8 9 10 11 GPT-4 v1(控制组,90% 流量): - 平均延迟:2.3s - 用户满意度:4.2/5 - 错误率:0.5% GPT-4 v2(实验组,10% 流量): - 平均延迟:1.8s(-22%) - 用户满意度:4.5/5(+7%) - 错误率:0.3%(-40%) 结论:v2 性能更优,可以全量发布
AI 网关架构模式 架构 1:独立 AI 网关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ┌──────────┐ │ 应用层 │ └────┬─────┘ │ ┌────▼──────────────┐ │ AI Gateway │ │ (独立部署) │ │ - 路由 │ │ - 限流 │ │ - 缓存 │ │ - 安全 │ └────┬──────────────┘ │ ┌────▼─────┐ │ LLM 服务 │ │ (多模型) │ └──────────┘
优点 :职责清晰,易于管理和扩展缺点 :增加一跳延迟
适用场景 :微服务架构,需要统一管理多个应用的 LLM 调用
架构 2:Sidecar 模式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ┌─────────────────────┐ │ Pod │ │ ┌────────┐ │ │ │ App │ │ │ └───┬────┘ │ │ │ │ │ ┌───▼──────────┐ │ │ │ AI Gateway │ │ │ │ (Sidecar) │ │ │ └───┬──────────┘ │ └──────┼──────────────┘ │ ┌──────▼─────┐ │ LLM 服务 │ └────────────┘
优点 :低延迟,与应用紧密集成缺点 :每个 Pod 都有网关,资源消耗高
适用场景 :对延迟敏感的应用,Kubernetes 环境
架构 3:Service Mesh 集成 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ┌─────────────────────────────┐ │ Service Mesh │ │ ┌──────────────────────┐ │ │ │ Control Plane │ │ │ │ (Istio/Linkerd) │ │ │ └──────────┬───────────┘ │ │ │ │ │ ┌──────────▼───────────┐ │ │ │ Data Plane │ │ │ │ (Envoy Proxy) │ │ │ │ + AI Gateway Filter │ │ │ └──────────┬───────────┘ │ └─────────────┼───────────────┘ │ ┌─────────────▼─────┐ │ LLM 服务 │ └───────────────────┘
优点 :统一的流量管理,复用 Service Mesh 能力缺点 :复杂度高,需要 Service Mesh 基础设施
适用场景 :已有 Service Mesh 的企业,需要统一的流量治理
主流 AI 网关方案对比
方案
类型
核心特性
适用场景
Envoy AI Gateway
开源
CNCF 项目,基于 Envoy,支持 MCP
Kubernetes 环境,需要高度定制
Kong AI Gateway
开源/商业
插件生态丰富,易于扩展
已有 Kong 的企业
APISIX AI Gateway
开源
高性能,插件化
高并发场景
Cloudflare AI Gateway
商业
托管服务,全球 CDN
快速上手,无需运维
Portkey AI Gateway
开源/商业
功能全面,可观测性强
需要完整的 AI 可观测性
LiteLLM
开源
轻量级,易于集成
小型项目,快速原型
选型建议:
快速验证 :Cloudflare AI Gateway(托管服务,5 分钟上手)
生产环境(K8s) :Envoy AI Gateway(CNCF 项目,社区活跃)
已有 Kong :Kong AI Gateway(复用现有基础设施)
完整可观测性 :Portkey(内置丰富的监控和分析)
实践案例:构建企业级 AI 网关 场景描述 某企业需要:
统一管理 3 个 LLM 提供商(OpenAI、Anthropic、本地 vLLM)
控制每月 Token 成本在 $10,000 以内
防止 Prompt 注入和不安全输出
追踪每个部门的 Token 消耗
实现模型的灰度发布
架构设计 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 apiVersion: gateway.envoyproxy.io/v1alpha1 kind: AIGateway metadata: name: enterprise-ai-gateway spec: rules: - match: model: "gpt-4" backend: type: OpenAI endpoint: "https://api.openai.com/v1" apiKeySecret: openai-key - match: model: "claude-3" backend: type: Anthropic endpoint: "https://api.anthropic.com/v1" apiKeySecret: anthropic-key - match: model: "local-llama" backend: type: vLLM endpoint: "http://vllm-service:8000/v1" rateLimit: type: TokenBased rules: - match: header: "x-department" limit: tokens: 1000000 period: monthly filters: - type: PromptInjectionDetection config: action: reject - type: ContentFilter config: categories: [hate , violence , self-harm ] action: mask cache: type: Semantic config: embeddingModel: "text-embedding-ada-002" similarityThreshold: 0.95 ttl: 3600 observability: metrics: enabled: true exportTo: prometheus tracing: enabled: true exportTo: jaeger logging: enabled: true exportTo: elasticsearch
实施效果 成本节约:
语义缓存命中率:35%
月 Token 消耗:从 1500 万降至 975 万(-35%)
月成本:从 $15,000 降至 $9,750(-35%)
安全提升:
拦截 Prompt 注入攻击:127 次/月
过滤不安全输出:45 次/月
PII 脱敏:234 次/月
性能优化:
平均延迟:从 2.8s 降至 1.9s(-32%)
缓存命中延迟:< 100ms
可观测性:
100% 请求追踪
按部门生成详细账单
实时成本告警
最佳实践与建议 1. 分阶段实施 阶段 1:基础接入(0-1 个月)
部署 AI 网关,统一接入多个 LLM
实现基础路由和故障回退
收集 Token 消耗数据
阶段 2:成本控制(1-3 个月)
实施 Token 限流和配额管理
引入语义缓存,降低成本
建立成本监控仪表盘
阶段 3:安全加固(3-6 个月)
启用 Prompt 注入检测
实施内容过滤和 PII 脱敏
建立安全告警机制
阶段 4:高级功能(6-12 个月)
实现模型灰度发布和 A/B 测试
集成完整的可观测性(Metrics、Logs、Traces)
优化路由策略(按成本、延迟、能力)
2. 关键决策点 自建 vs 采购:
因素
自建(开源)
采购(商业)
成本
低(仅基础设施)
高(按用量计费)
定制性
高(完全可控)
低(受限于产品功能)
运维
高(需自行维护)
低(托管服务)
上手速度
慢(需开发)
快(即开即用)
建议 :
小型团队/快速验证:采购商业方案(Cloudflare、Portkey)
大型企业/高度定制:自建开源方案(Envoy、Kong)
缓存策略:
策略
相似度阈值
TTL
适用场景
保守
0.98
1 小时
准确性要求高
平衡
0.95
6 小时
通用场景
激进
0.90
24 小时
成本敏感
建议 :从保守策略开始,逐步调整阈值,监控缓存命中率和用户满意度。
3. 常见陷阱 陷阱 1:过度依赖缓存
问题 :缓存命中率过高,导致模型无法获取新数据
解决 :设置合理的 TTL,定期清除缓存
陷阱 2:安全策略过严
问题 :误拦截正常请求,影响用户体验
解决 :从宽松策略开始,逐步收紧,监控误报率
陷阱 3:忽视可观测性
问题 :上线后无法追踪问题,成本失控
解决 :从第一天就建立完整的可观测性
陷阱 4:单一模型依赖
问题 :某个 LLM 提供商故障,导致服务不可用
解决 :配置多个备用模型,实施故障回退
总结 AI 网关是 AI 原生基础设施的关键组件,它解决了 LLM 和 Agent 场景下的流量治理、成本控制、安全防护和可观测性等核心问题。
核心价值:
统一接入 :屏蔽多模型差异,提供统一 API
成本控制 :Token 计量、限流、语义缓存,降低 30-50% 成本
安全防护 :Prompt 注入检测、内容过滤、PII 脱敏
可观测性 :完整的追踪、指标、日志,支持成本分析和性能优化
灵活路由 :智能路由、灰度发布、故障回退
实施建议:
分阶段推进 :从基础接入到高级功能,逐步演进
工具选型 :小型团队用商业方案,大型企业用开源方案
安全优先 :从第一天就建立安全策略和可观测性
持续优化 :监控缓存命中率、成本、延迟,持续调优
AI 网关不是可选项,而是 AI 原生应用的必需品。没有 AI 网关,AI 服务就像没有 API 网关的微服务——混乱、不可控、成本失控。
参考文献