跳到主要内容

Qwen(阿里云)

本指南将 AISIX AI 网关连接到阿里云 Qwen,使应用可以通过网关的 OpenAI 兼容 API 调用 Qwen 模型。AISIX 将 DashScope 凭证保存在网关侧,通过调用方 API Key 和允许列表授权模型访问,并应用与其他模型别名相同的限流和用量核算控制。

阿里云百炼(DashScope)提供 OpenAI 兼容端点,因此 Qwen 使用 openai 适配器并搭配 DashScope 的 api_base

前提条件

以下示例使用自托管 AISIX 网关。配置上游前,请准备以下内容:

  • 一个运行中的 AISIX 网关,Admin API 和代理 API 可用。命令使用快速开始监听地址,如有需要请替换。
  • 网关 config.yaml 中的 Admin Key。
  • 来自阿里云百炼的、与你计划使用的区域对应的 DashScope API Key。

配置 Qwen 上游

为 Qwen 后端路由创建服务提供方密钥、模型别名和调用方 API Key。示例使用新加坡区域端点。

创建服务提供方密钥

DashScope API Key 与区域绑定。请将密钥与同一区域的 OpenAI 兼容 API 根地址配对:

  • 新加坡:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
  • 北京:https://dashscope.aliyuncs.com/compatible-mode/v1

一个区域签发的 API Key 无法用于另一区域的端点。如果需要同时路由到两个区域,请为每个区域创建一个服务提供方密钥。

阿里云也在逐步推出按工作空间划分的端点,因此请在百炼控制台和阿里云的 OpenAI 兼容参考中确认你账号当前的 base URL。

创建用于存储 DashScope 凭证和 API 根地址的服务提供方密钥:

# 请替换为实际值
export AISIX_ADMIN_KEY="YOUR_ADMIN_KEY"
export DASHSCOPE_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" \
--data-binary @- <<EOF
{
"display_name": "qwen-prod",
"provider": "qwen",
"adapter": "openai",
"secret": "${DASHSCOPE_API_KEY}",
"api_base": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
EOF

providerqwen

adapteropenai,因为 DashScope 的兼容模式接受 OpenAI Chat Completions 请求。

secret 存储 DashScope API Key,遵循服务提供方凭证中的凭证处理行为。

api_base 必填,且已包含 /compatible-mode/v1 路径。请使用与你 DashScope 区域匹配的根地址。

复制返回的服务提供方密钥 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" \
--data-binary @- <<EOF
{
"display_name": "qwen-plus-prod",
"provider": "qwen",
"model_name": "qwen-plus",
"provider_key_id": "${PROVIDER_KEY_ID}"
}
EOF

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

model_name 是 Qwen 模型 ID,例如 qwen-plusqwen-maxqwen-turbo

provider_key_id 将别名关联到 Qwen 服务提供方密钥。

创建调用方 API Key

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

# 请替换为实际值
export AISIX_API_KEY="YOUR_CALLER_API_KEY"

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" \
--data-binary @- <<EOF
{
"key_hash": "${CALLER_KEY_HASH}",
"allowed_models": ["qwen-plus-prod"]
}
EOF

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": "qwen-plus-prod",
"messages": [
{
"role": "user",
"content": "Say hello from Qwen."
}
]
}'

网关会返回回显面向调用方别名 qwen-plus-prod 的 OpenAI 兼容响应。请在百炼用量页面确认该请求。如果 AISIX 返回上游认证错误,请检查服务提供方密钥的 secret,并确认密钥和 base URL 来自同一区域。

下一步

你现在已将 AISIX 连接到 Qwen,并验证了模型别名。接下来可继续阅读: