兼容OpenAI需要信息
BASE_URL
BASE_URL表示模型服务的网络访问点或地址。通过该地址,您可以访问服务提供的功能或数据。在Web服务或API的使用中,BASE_URL通常对应于服务的具体操作或资源的URL。当您使用OpenAI兼容接口来使用阿里云百炼模型服务时,需要配置BASE_URL。
- 当您通过OpenAI SDK或其他OpenAI兼容的SDK调用时,需要配置的BASE_URL如下:
- 当您通过HTTP请求调用时,需要配置的完整访问endpoint如下:
调用失败排查:通过 OpenAI 兼容接口调用时,如遇到 404、401、403 或连接失败等错误,请依次检查以下配置:
跨地域调用
百炼 API Key 按地域绑定。调用某个地域的 base_url 时,必须使用在同一地域创建的 API Key;使用其他地域的 API Key 调用该地域 endpoint 会被鉴权拒绝。
该规则适用于所有提供 endpoint 的地域,包括华北2(北京)、美国(弗吉尼亚)、新加坡和日本(东京),以及中国香港。请在所调用 endpoint 对应地域的控制台中创建 API Key。
使用北京地域 API Key 调用弗吉尼亚地域 endpoint 时,返回 HTTP 401,错误信息为 Incorrect API key provided,错误码为 invalid_api_key。该错误表示 API Key 与 endpoint 所属地域不匹配,而非 API Key 失效或权限不足。
支持的模型列表
支持的模型:Qwen 大语言模型(商业版、开源版)、Qwen-VL、Qwen-Coder、Qwen-Omni、Qwen-Math、DeepSeek、Kimi、GLM、MiniMax。
三方直供模型仅在中国站的华北2(北京)地域可用,调用前需先在百炼控制台开通对应服务(以 SiliconFlow DeepSeek 为例:搜索 deepseek → 找到 SiliconFlow DeepSeek 模型卡片 → 单击立即开通 → 确认授权)。
Qwen-Audio不支持OpenAI兼容协议,仅支持DashScope协议。
通过OpenAI SDK调用
前提条件
- 请确保您的计算机上安装了Python环境。
- 请安装最新版OpenAI SDK。
- 您需要开通阿里云百炼模型服务并获得API-KEY,详情请参考:获取与配置 API Key。
- 我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄露风险,配置方法可参考配置API Key到环境变量。您也可以在代码中配置API-KEY,但是泄露风险会提高。
- 请选择您需要使用的模型:支持的模型列表。
使用方式
您可以参考以下示例来使用OpenAI SDK访问百炼服务上的千问模型。
非流式调用示例
流式调用示例
function call示例
此处以天气查询工具与时间查询工具为例,向您展示通过OpenAI接口兼容实现function call的功能。示例代码可以实现多轮工具调用。
输入参数配置
输入参数与OpenAI的接口参数对齐,当前已支持的参数如下:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| model | string | 用户使用model参数指明对应的模型,可选的模型请见支持的模型列表。 | |
| messages | array | 用户与模型的对话历史。array中的每个元素形式为{"role":角色, "content": 内容}。角色当前可选值:system、user、assistant,其中,仅messages[0]中支持role为system,一般情况下,user和assistant需要交替出现,且messages中最后一个元素的role必须为user。 | |
| top_p(可选) | float | 生成过程中的核采样方法概率阈值,例如,取值为0.8时,仅保留概率加起来大于等于0.8的最可能token的最小集合作为候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越小,生成的确定性越高。 | |
| temperature(可选) | float | 用于控制模型回复的随机性和多样性。具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。取值范围: [0, 2),不建议取值为0,无意义。 | |
| presence_penalty(可选) | float | 用户控制模型生成时整个序列中的重复度。提高presence_penalty时可以降低模型生成的重复度,取值范围[-2.0, 2.0]。 目前仅在千问商业模型和qwen1.5及以后的开源模型上支持该参数。 | |
| n(可选) | integer | 1 | 生成响应的个数,取值范围是1-4。对于需要生成多个响应的场景(如创意写作、广告文案等),可以设置较大的 n 值。设置较大的 n 值不会增加输入 Token 消耗,会增加输出 Token 的消耗。 当前仅支持 qwen-plus 模型,且在传入 tools 参数时固定为1。 |
| max_tokens(可选) | integer | 指定模型可生成的最大token个数。例如模型最大输出长度为2k,您可以设置为1k,防止模型输出过长的内容。不同的模型有不同的输出上限,具体请参见模型列表。 | |
| seed(可选) | integer | 生成时使用的随机数种子,用于控制模型生成内容的随机性。seed支持无符号64位整数。 | |
| stream(可选) | boolean | False | 用于控制是否使用流式输出。当以stream模式输出结果时,接口返回结果为generator,需要通过迭代获取结果,每次输出为当前生成的增量序列。 |
| stop(可选) | string or array | None | stop参数用于实现内容生成过程的精确控制,在模型生成的内容即将包含指定的字符串或token_id时自动停止。stop可以为string类型或array类型。
|
| tools(可选) | array | None | 用于指定可供模型调用的工具库,一次function call流程模型会从中选择其中一个工具。tools中每一个tool的结构如下:
tools暂时无法与stream=True同时使用。 |
| stream_options(可选) | object | None | 该参数用于配置在流式输出时是否展示使用的token数目。只有当stream为True的时候该参数才会激活生效。若您需要统计流式输出模式下的token数目,可将该参数配置为stream_options={"include_usage":True}。 |
返回参数说明
返回参数 | 数据类型 | 说明 | 备注 |
|---|---|---|---|
id | string | 系统生成的标识本次调用的id。 | 无 |
model | string | 本次调用的模型名。 | 无 |
system_fingerprint | string | 模型运行时使用的配置版本,当前暂时不支持,返回为空字符串“”。 | 无 |
choices | array | 模型生成内容的详情。 | 无 |
choices[i].finish_reason | string | 有三种情况:
| |
choices[i].message | object | 模型输出的消息。 | |
choices[i].message.role | string | 模型的角色,固定为assistant。 | |
choices[i].message.content | string | 模型生成的文本。 | |
choices[i].index | integer | 生成的结果序列编号,默认为0。 | |
created | integer | 当前生成结果的时间戳(s)。 | 无 |
usage | object | 计量信息,表示本次请求所消耗的token数据。 | 无 |
usage.prompt_tokens | integer | 用户输入文本转换成token后的长度。 | 无 |
usage.completion_tokens | integer | 模型生成回复转换为token后的长度。 | 无 |
usage.total_tokens | integer | usage.prompt_tokens与usage.completion_tokens的总和。 | 无 |
通过langchain_openai SDK调用
前提条件
- 请确保您的计算机上安装了Python环境。
- 通过运行以下命令安装langchain_openai SDK。
- 您需要开通阿里云百炼模型服务并获得API-KEY,详情请参考:获取与配置 API Key。
- 我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄露风险,详情可参考配置API Key到环境变量。您也可以在代码中配置API-KEY,但是泄露风险会提高。
- 请选择您需要使用的模型:支持的模型列表。
使用方式
您可以参考以下示例来通过langchain_openai SDK使用阿里云百炼的千问模型。
非流式输出
非流式输出使用invoke方法实现,请参考以下示例代码:
流式输出
流式输出使用stream方法实现,无需在参数中配置stream参数。
通过HTTP接口调用
您可以通过HTTP接口来调用阿里云百炼服务,获得与通过HTTP接口调用OpenAI服务相同结构的返回结果。
前提条件
- 您需要开通阿里云百炼模型服务并获得API-KEY,详情请参考:获取与配置 API Key。
- 我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄露风险,配置方法可参考配置API Key到环境变量。您也可以在代码中配置API-KEY,但是泄露风险会提高。
提交接口调用
请求示例
以下示例展示通过cURL命令来调用API的脚本。
非流式输出
流式输出
如果您需要使用流式输出,请在请求体中指定stream参数为true。
异常响应示例
在访问请求出错的情况下,输出的结果中会通过 code 和 message 指明出错原因。
第三方客户端配置
除 SDK 与 HTTP 直接调用外,您还可以在支持 OpenAI 兼容协议的第三方大模型客户端中接入阿里云百炼。以智谱客户端为例,按以下步骤填写配置后即可发起模型调用:
- 在客户端的服务商设置中选择自定义服务商。
-
Base URL:填写本文“兼容OpenAI需要信息”中 BASE_URL 部分所在地域对应的 OpenAI SDK 形式地址,即以
/compatible-mode/v1结尾、不含/chat/completions的地址。各地域的 Base URL 不同,需与 API Key 所属地域保持一致。 例如,新加坡地域填写https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1。其中,{WorkspaceId}为您的业务空间 ID,可在阿里云百炼控制台的业务空间详情页面查看。原https://dashscope.aliyuncs.com域名仍可正常使用,但建议优先使用业务空间专属域名。 - API Key:填写对应地域的百炼 API Key。您可以在百炼控制台API Key管理页面创建并获取 API Key。
-
模型名称:填写支持 OpenAI 兼容协议的大语言模型名称。可选模型以本文“兼容OpenAI需要信息”中支持的模型列表部分为准;例如
qwen3-vl-32b-thinking仅作为模型名称示例,不表示免费额度承诺。 - 保存配置后发起一次对话,验证第三方客户端是否可以正常调用模型。
error.message 为 current user api does not support http call、error.type 为 invalid_request_error,说明当前填写的模型不支持通过 OpenAI 兼容接口进行 HTTP 调用。请更换为支持的模型列表中的模型后重试,例如不要使用已确认不支持该调用方式的 qvq-max。
状态码说明
错误码 | 说明 |
|---|---|
400 - Invalid Request Error | 输入请求错误,细节请参见具体报错信息。 |
401 - Invalid API-key provided | API key不正确。 |
429 - Rate limit reached for requests | QPS、QPM等超限。 |
429 - You exceeded your current quota, please check your plan and billing details | 额度超限或者欠费。 |
500 - The server had an error while processing your request | 服务端错误。 |
503 - The engine is currently overloaded, please try again later | 服务端负载过高,可重试。 |