跳到正文

接入 DashScope 上游

DashScope 是阿里云的 AI 服务,涵盖文本生成、多模态、文本向量、重排序、ASR 等多种模型。本章教你建一个 dashscope 上游 + qwen-turbo 模型,用 OpenAI SDK 调用,并简单覆盖其他 kind 变体。

前置

  • 网关已运行(http://localhost:7890),能登录控制台
  • 一个阿里云 DashScope API key

1. 建 dashscope 上游

控制台 → 上游服务新建

字段说明
名称dashscope上游唯一标识
协议dashscope决定执行器与请求 schema
基础 URLhttps://dashscope.aliyuncs.com上游真实地址,结尾不带 /
API Key阿里云 key点「添加」可加多把,按权重分布
启用

保存。

2. 建 qwen-turbo 模型

在上游 dashscope 行点 展开 → 模型子表 → 新建模型

字段说明
名称qwen-turbo对外暴露给客户端的模型名
上游dashscope选刚建的上游
上游模型 IDqwen-turboDashScope 真实模型名
协议dashscope(继承上游)也可在模型层覆盖
启用

保存。

DashScope 不同类型模型有不同端点,由 kind 字段选择。文本生成(如 qwen-turboqwen-plusqwen-max)走默认端点 /api/v1/services/aigc/text-generation/generation,不需要指定 kind。其他变体见下表。

3. 配密钥组放行

控制台 → 访问密钥密钥组 页签 → 新建

字段说明
名称default分组名
模型qwen-turbo,或 *(全部)决定该组密钥能调哪些模型
启用

4. 签发访问密钥

控制台 → 访问密钥新建

字段说明
名称my-app-key密钥的标识,用于管理与审计
API 密钥点「生成」自动生成一串,客户端调用时带的凭证
分组default决定这把密钥能访问哪些模型
启用

5. 用 OpenAI SDK 调用

python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:7890/v1",
    api_key="<你的访问密钥>",
)

resp = client.chat.completions.create(
    model="qwen-turbo",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

网关自动把 OpenAI 请求格式翻译成 DashScope 格式,发给 https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation,响应翻译回 OpenAI 格式。

6. 或用 curl

bash
curl http://localhost:7890/v1/chat/completions \
  -H "Authorization: Bearer <你的访问密钥>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-turbo",
    "messages": [{"role":"user","content":"你好"}]
  }'

收到回复即跑通。

其他 kind 变体

DashScope 文本生成走默认端点,其他类型模型用 kind 字段切换端点。下表概览,完整字段说明见 上游与模型字段

kind端点适用模型
(默认)/api/v1/services/aigc/text-generation/generationqwen-turbo、qwen-plus、qwen-max
dashscope-multimodal/api/v1/services/aigc/multimodal-generation/generationqwen-vl-chat-v1、qwen-vl-plus、qwen-audio、fun-asr-flash
dashscope-text-embedding/api/v1/services/embeddings/text-embedding/text-embeddingtext-embedding-v4
dashscope-rerank文本重排序端点gte-rerank
dashscope-audio-asr异步语音 ASRfun-asr

视频生成(direct_path)

视频生成等异步模型需要 direct_path = true + 完整端点 URL:

json
{
  "name": "wanx2.1-t2v",
  "upstream": ["dashscope"],
  "upstream_model_id": "wanx2.1-t2v",
  "protocol": "dashscope",
  "direct_path": true,
  "base_url": "https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis"
}

异步模型还需在 extra_config 设置:{"dashscope": {"async_mode": true}}

文本向量(独立 upstream)

文本向量模型使用百炼 MaaS 域名,需配置独立 upstream:

json
{
  "name": "text-embedding-v4",
  "upstream": ["dashscope-maas"],
  "upstream_model_id": "text-embedding-v4",
  "protocol": "dashscope",
  "kind": "dashscope-text-embedding"
}

客户端用标准 OpenAI /v1/embeddings 协议发请求,网关自动翻译为 DashScope 格式。

透传 vs 翻译

DashScope 客户端可走两路:

  • 透传POST /v1/services/{*rest},请求体原样发给 DashScope 上游
  • 翻译POST /v1/chat/completions,网关把 OpenAI 格式翻译成 DashScope 格式

透传适合 DashScope 原生 SDK 或想完全绕过翻译的场景;翻译适合 OpenAI SDK 直接接入。

常见问题

Q:客户端报 400 unsupported_feature? 该「客户端协议 → 上游协议」组合没有翻译器。检查 协议互通矩阵。OpenAI → dashscope 是支持的。

Q:客户端报 401 / 403 / 404?

  • 401:访问密钥没带对
  • 403 model_access_denied:密钥组「模型」列表没包含 qwen-turbo
  • 404 model_not_found:模型名拼错,或被设了 hide_name

Q:客户端报 502 bad_gateway? 上游不通。检查 DashScope 的 base_urlhttps://dashscope.aliyuncs.com,结尾不带 /)、API key 是否正确、是否在阿里云白名单里。

Q:调视频/图像生成模型报 404? 异步模型需要 direct_path = true + 完整端点 URL + extra_config.dashscope.async_mode = true。详见 上游与模型字段

下一步上游与模型字段 看上游/模型完整字段与所有 kind 变体;端点 · 认证 · 协议互通 看完整端点;客户端接入与网关差异 看各 SDK 接法。