配置多模型路由与自动故障转移
本文介绍如何使用 ai-proxy-multi 插件在多个模型和服务提供方之间分配 AI 流量,并配置加权负载均衡、优先级路由和自动故障转移。
场景概述
只依赖单一模型服务会带来可用性、配额和成本风险。多模型路由可以把业务调用从“绑定某个模型”调整为“面向能力选择模型”,常见场景包括:
- 成本优化:常规请求优先走低成本模型,复杂请求或失败场景回退到高质量模型。
- 高可用:当某个模型服务不可用、延迟过高或配额耗尽时自动切换。
- 容量分摊:在多个模型服务之间分散流量,降低单个服务的配额压力。
前提条件
加权负载均衡
以下示例按权重在两个 OpenAI 模型之间分配流量:
- Admin API
- ADC
curl "http://127.0.0.1:7080/apisix/admin/routes?gateway_group_id=default" -X PUT \
-H "X-API-KEY: $ADMIN_API_KEY" \
-d '{
"id": "multi-model-weighted",
"service_id": "'"$SERVICE_ID"'",
"paths": ["/ai"],
"plugins": {
"ai-proxy-multi": {
"balancer": {
"algorithm": "roundrobin"
},
"instances": [
{
"name": "gpt-4o-mini",
"provider": "openai",
"auth": { "header": { "Authorization": "Bearer '"$OPENAI_API_KEY"'" } },
"options": { "model": "gpt-4o-mini" },
"weight": 8
},
{
"name": "gpt-4o",
"provider": "openai",
"auth": { "header": { "Authorization": "Bearer '"$OPENAI_API_KEY"'" } },
"options": { "model": "gpt-4o" },
"weight": 2
}
]
}
}
}'
adc.yaml
services:
- name: Multi Model Service
routes:
- name: multi-model-weighted
uris:
- /ai
plugins:
ai-proxy-multi:
balancer:
algorithm: roundrobin
instances:
- name: gpt-4o-mini
provider: openai
auth:
header:
Authorization: Bearer ${OPENAI_API_KEY}
options:
model: gpt-4o-mini
weight: 8
- name: gpt-4o
provider: openai
auth:
header:
Authorization: Bearer ${OPENAI_API_KEY}
options:
model: gpt-4o
weight: 2
自动故障转移
可以为关键模型配置备用模型或备用服务提供方。建议将主模型和备用模型分成不同实例,并结合健康检查、超时和重试策略使用。
{
"instances": [
{
"name": "primary-openai",
"provider": "openai",
"priority": 0
},
{
"name": "fallback-deepseek",
"provider": "deepseek",
"priority": 1
}
]
}
优先级较低的数值通常代表更高优先级。实际生产配置中,请结合插件版本支持的字段和模型服务 SLA 验证行为。
运行建议
- 先在测试环境用低风险路由验证模型响应格式、延迟和错误处理。
- 为每个实例记录模型名、服务提供方、延迟、错误率和令牌用量。
- 将模型切换事件写入日志或告警系统,便于排查质量波动。
- 对不同业务线使用不同路由或消费者组,避免共享配额互相影响。