跳到主要内容
版本:3.10.x

将流量路由到 OpenAI

OpenAI 提供 GPT-4o、o1 等模型,可用于聊天补全、向量嵌入等任务。本指南介绍如何使用 ai-proxy 插件,通过 API7 网关将流量路由到 OpenAI。

前置条件

  • 安装 Docker

  • 安装 cURL,用于发送请求并验证服务。

  • 拥有一个正在运行的 API7 网关实例。

  • 从控制台获取令牌,并保存到环境变量:

    export API_KEY=your-dashboard-token # 请替换为你的控制台令牌
  • {gateway_group_id} 替换为网关组 ID。如果正在按照快速入门操作,请使用 default

  • 如果使用 Admin API 示例,请创建或复用一个服务。如果尚无服务,请按照创建或复用服务操作,然后将其 ID 保存到环境变量:

    export SERVICE_ID=your-service-id # 请替换为你的服务 ID

获取 OpenAI API Key(API 密钥)

创建 OpenAI 账户并生成 API Key,然后将 API Key 保存到环境变量:

export OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx # 请替换为你的 OpenAI API Key

将 OpenAI 配置为服务提供方

创建一个启用 ai-proxy 插件的路由:

curl -k "https://localhost:7443/apisix/admin/routes?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
--data-binary @- <<EOF
{
"id": "openai-route",
"service_id": "$SERVICE_ID",
"paths": ["/openai"],
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": {
"header": {
"Authorization": "Bearer $OPENAI_API_KEY"
}
},
"options": {
"model": "gpt-4o"
}
}
}
}
EOF

❶ 将服务提供方设置为 openai

❷ 在 Authorization 请求头中附加 OpenAI API Key。

❸ 将默认模型设置为 gpt-4o

使用 OpenAI 进行多模型路由

使用 ai-proxy-multi 插件在多个 OpenAI 模型之间分发流量。以下示例将 80% 的流量路由到经济型 gpt-4o-mini,将 20% 的流量路由到高级 gpt-4o,并在出现 HTTP 429 和 5xx 错误时自动故障转移:

curl -k "https://localhost:7443/apisix/admin/routes?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
--data-binary @- <<EOF
{
"id": "openai-multi-route",
"service_id": "$SERVICE_ID",
"paths": ["/openai"],
"plugins": {
"ai-proxy-multi": {
"fallback_strategy": ["http_429", "http_5xx"],
"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
}
]
}
}
}
EOF

fallback_strategy 启用自动故障转移。当实例返回 HTTP 429(限流)或 5xx(服务器错误)时,网关会在其他实例上重试。

❷ 分配权重 8,使约 80% 的流量进入 gpt-4o-mini

❸ 为高级 gpt-4o 实例分配权重 2,处理其余 20% 的流量。

有关故障转移和基于优先级的路由等更多策略,请参阅多模型路由和故障转移

验证配置

发送聊天补全请求:

curl "http://127.0.0.1:9080/openai" -X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "system", "content": "You are a computer scientist." },
{ "role": "user", "content": "Explain in one sentence what a Turing machine is." }
]
}'

你应收到类似以下内容的响应:

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"model": "gpt-4o-2024-08-06",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A Turing machine is an abstract mathematical model of computation that defines an idealized machine capable of simulating any algorithm."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 22,
"completion_tokens": 24,
"total_tokens": 46
}
}

要启用流式响应,请在请求体中设置 "stream": true。使用 proxy-buffering 插件禁用 NGINX proxy_buffering,避免服务器发送事件(SSE)被缓冲。

后续步骤

你已经了解如何通过 API7 网关将流量路由到 OpenAI。有关可用模型和端点的更多信息,请参阅 OpenAI API 参考