跳到主要内容

兼容 OpenAI 的公开服务提供方上游

本指南将说明如何把 AISIX AI 网关连接到公开的 OpenAI 兼容模型厂商,例如 DeepSeek、Groq、Mistral、Together.ai、Fireworks 或 Perplexity。

当应用需要继续使用 OpenAI 兼容 API 调用 AISIX,而厂商凭证、上游主机和模型映射由 AISIX 处理时,可以使用该配置。

对于私有或自托管 OpenAI 兼容服务器,请改用自定义端点

准备工作

请先准备以下内容:

  • 一个 Admin API 位于 :3001、代理 API 位于 :3000 的网关。
  • 网关 config.yaml 中的 Admin Key。
  • 来自厂商 API 参考的厂商 API Key、模型 ID 和 OpenAI 兼容 base URL。以下示例使用 DeepSeek 和 https://api.deepseek.com

配置公开服务提供方上游

为厂商上游路由创建服务提供方密钥、模型别名和调用方 API Key。示例使用 DeepSeek;替换厂商标签、base URL、凭证和模型 ID 后,同样结构也适用于其它 OpenAI 兼容厂商。

创建服务提供方密钥

为 OpenAI 兼容厂商端点创建服务提供方密钥:

export AISIX_ADMIN_KEY="admin-local-only-change-me"
export VENDOR_API_KEY="YOUR_PROVIDER_API_KEY"

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/provider_keys" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "deepseek-prod",
"provider": "deepseek",
"adapter": "openai",
"secret": "'"${VENDOR_API_KEY}"'",
"api_base": "https://api.deepseek.com"
}'

provider 标识公开厂商。

adapter 选择 OpenAI 兼容上游格式。

secret 存储厂商 API Key。

api_base 指向厂商的 OpenAI 兼容 base URL。

复制返回的服务提供方密钥 ID。AISIX 会在 api_base 后追加端点路径,因此当厂商要求 /v1/openai/v1 等专属前缀时,需要把它包含在 api_base 中。不要依赖 AISIX 猜测公开厂商 URL。

服务提供方密钥 secret 的处理方式遵循服务提供方凭证中说明的凭证处理行为。

创建模型

将面向调用方的别名映射到厂商模型 ID:

export PROVIDER_KEY_ID="YOUR_PROVIDER_KEY_ID"

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/models" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"display_name": "deepseek-flash-prod",
"provider": "deepseek",
"model_name": "deepseek-v4-flash",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}'

display_name 是调用方在 model 中发送的别名。

model_name 是厂商期望的模型 ID。

provider_key_id 将模型别名关联到你创建的服务提供方密钥。

只有当预算核算或用量报告需要计算该别名的 token 成本时,才添加 cost 块。参见模型别名

创建调用方 API Key

选择应用发送给 AISIX 的明文调用方 API Key,然后为 Admin 资源计算哈希:

export AISIX_API_KEY="sk-deepseek-caller"

CALLER_KEY_HASH=$(printf '%s' "${AISIX_API_KEY}" | shasum -a 256 | awk '{print $1}')

创建可访问厂商模型别名的 API Key 资源:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/apikeys" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"key_hash": "'"${CALLER_KEY_HASH}"'",
"allowed_models": ["deepseek-flash-prod"]
}'

allowed_models 必须与已创建的模型别名匹配。

验证上游

通过 AISIX 代理发送 chat completions 请求:

curl -sS -X POST "http://127.0.0.1:3000/v1/chat/completions" \
-H "Authorization: Bearer ${AISIX_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-flash-prod",
"messages": [
{"role": "user", "content": "Say hello from DeepSeek."}
]
}'

响应应为 OpenAI 兼容 chat completions 响应,并回显面向调用方的别名。如果厂商提供日志、指标、请求 ID 或用量记录,请用它们确认请求已到达预期上游账号和模型。

如果网关返回上游认证错误,请检查服务提供方密钥的 secret。如果返回上游路由错误,请检查 api_basemodel_name 中的厂商模型 ID。

行为与限制

本指南适用于接受 OpenAI chat completions 请求的厂商。使用不同请求格式的厂商需要原生适配器。参见适配器协议族

默认情况下,AISIX 不会标准化 OpenAI 信封之外的厂商专属响应扩展。如果厂商在自定义字段中返回 reasoning 内容,请在服务提供方密钥上使用 response.reasoning_field 覆盖项。

下一步

你已经将 OpenAI 兼容厂商配置为上游服务提供方。对于其它公开厂商,可以按相同模式替换厂商标签、base URL、凭证和模型 ID。