百炼支持通过API调用大模型,涵盖OpenAI兼容接口、DashScope SDK等接入方式。
如果您已经熟悉大模型调用,也可以直接查看API参考文档文本生成-通义千问。
本文以通义千问为例,引导您完成大模型API调用。您将了解到:
如何获取 API Key
如何配置本地开发环境
如何调用通义千问 API
账号设置
注册账号:如果没有阿里云账号,您需要先注册阿里云账号。
使用RAM账号时,请由主账号所有者将其添加至主账号空间(授予访客/管理员角色)。详情请参见用户管理。
开通百炼:使用阿里云主账号前往百炼控制台,如果页面顶部显示以下消息,您需要开通百炼的模型服务,以获得免费额度。如果未显示该消息,则表示您已经开通。
如果开通服务时提示“您尚未进行实名认证”,请先进行实名认证。
获取API Key:前往API-KEY页面,单击创建我的API-KEY,然后在已创建的API Key操作列,单击查看,获取API KEY,用于通过API调用大模型。
创建新的API Key时,归属业务空间推荐选择主账号空间。使用子空间API Key需由主账号管理员为对应子空间开通模型授权(如本文使用
通义千问-Plus
模型),详情请参见授权子业务空间模型调用和部署。
配置API Key到环境变量
建议您把API Key配置到环境变量,从而避免在代码里显式地配置API Key,降低泄漏风险。
选择开发语言
选择您熟悉的语言或工具,用于调用大模型API。
步骤 1:配置Python环境
步骤 2:调用大模型API
如果您安装完成了Python以及OpenAI的Python SDK,可以参考以下步骤发送您的API请求。
新建一个文件,命名为
hello_qwen.py
。将以下代码复制到
hello_qwen.py
中并保存。import os from openai import OpenAI try: client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx", api_key=os.getenv("DASHSCOPE_API_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) completion = client.chat.completions.create( model="qwen-plus", # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models messages=[ {'role': 'system', 'content': 'You are a helpful assistant.'}, {'role': 'user', 'content': '你是谁?'} ] ) print(completion.choices[0].message.content) except Exception as e: print(f"错误信息:{e}") print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
通过命令行运行
python hello_qwen.py
或python3 hello_qwen.py
。若提示
No such file or directory
,则需在文件名前指定具体文件路径。运行后您将会看到输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
如果您安装完成了Python以及DashScope的Python SDK,可以参考以下步骤发送您的API请求。
新建一个文件,命名为
hello_qwen.py
。将以下代码复制到
hello_qwen.py
中并保存。import os from dashscope import Generation messages = [ {'role': 'system', 'content': 'You are a helpful assistant.'}, {'role': 'user', 'content': '你是谁?'} ] response = Generation.call( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx", api_key=os.getenv("DASHSCOPE_API_KEY"), model="qwen-plus", # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models messages=messages, result_format="message" ) if response.status_code == 200: print(response.output.choices[0].message.content) else: print(f"HTTP返回码:{response.status_code}") print(f"错误码:{response.code}") print(f"错误信息:{response.message}") print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
通过命令行运行
python hello_qwen.py
或python3 hello_qwen.py
。本示例使用的运行命令需在Python文件所在目录执行,如果想要在任意位置执行,请在文件名前指定具体文件路径。
运行后您将会看到输出结果:
我是来自阿里云的大规模语言模型,我叫通义千问。
步骤 1:配置Node.js环境
步骤 2:调用大模型API
新建一个
hello_qwen.mjs
文件。将以下代码复制到文件中。
import OpenAI from "openai"; try { const openai = new OpenAI( { // 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx", apiKey: process.env.DASHSCOPE_API_KEY, baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1" } ); const completion = await openai.chat.completions.create({ model: "qwen-plus", //模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: "你是谁?" } ], }); console.log(completion.choices[0].message.content); } catch (error) { console.log(`错误信息:${error}`); console.log("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code"); }
通过命令行运行以下命令来发送API请求:
node hello_qwen.mjs
本示例使用的运行命令需在
hello_qwen.mjs
文件所在目录执行,如果想要在任意位置执行,请在文件名前指定具体文件路径。请确保已在
hello_qwen.mjs
文件所在目录中安装了SDK,如果SDK与文件不在同一目录下,则会报错Cannot find package 'openai' imported from xxx
。
运行成功后您将会看到输出结果:
我是来自阿里云的语言模型,我叫通义千问。
步骤 1:配置Java环境
步骤 2:调用大模型API
您可以运行以下代码来调用大模型API。
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("你是谁?")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
.model("qwen-plus")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("错误信息:"+e.getMessage());
System.out.println("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code");
}
System.exit(0);
}
}
运行后您将会看到对应的输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
您可以通过OpenAI兼容的HTTP方式或DashScope的HTTP方式来调用百炼平台上的模型。模型列表请参考:模型列表。
若没有配置环境变量,请用百炼API Key将:-H "Authorization: Bearer $DASHSCOPE_API_KEY" \ 换为:-H "Authorization: Bearer sk-xxx" \ 。
您可以运行以下命令发送API请求:
发送API请求后,可以得到以下回复:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "我是来自阿里云的大规模语言模型,我叫通义千问。"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 22,
"completion_tokens": 16,
"total_tokens": 38
},
"created": 1728353155,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-39799876-eda8-9527-9e14-2214d641cf9a"
}
您可以运行以下命令发送API请求:
发送API请求后,可以得到以下回复:
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是来自阿里云的大规模语言模型,我叫通义千问。"
}
}
]
},
"usage": {
"total_tokens": 38,
"output_tokens": 16,
"input_tokens": 22
},
"request_id": "87f776d7-3c82-9d39-b238-d1ad38c9b6a9"
}
调用大模型API
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type RequestBody struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
}
func main() {
// 创建 HTTP 客户端
client := &http.Client{}
// 构建请求体
requestBody := RequestBody{
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
Model: "qwen-plus",
Messages: []Message{
{
Role: "system",
Content: "You are a helpful assistant.",
},
{
Role: "user",
Content: "你是谁?",
},
},
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
// 创建 POST 请求
req, err := http.NewRequest("POST", "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
// 设置请求头
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey := "sk-xxx"
apiKey := os.Getenv("DASHSCOPE_API_KEY")
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
// 发送请求
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// 读取响应体
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
// 打印响应内容
fmt.Printf("%s\n", bodyText)
}
<?php
// 设置请求的URL
$url = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';
// 若没有配置环境变量,请用百炼API Key将下行替换为:$apiKey = "sk-xxx";
$apiKey = getenv('DASHSCOPE_API_KEY');
// 设置请求头
$headers = [
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json'
];
// 设置请求体
$data = [
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
"model" => "qwen-plus",
"messages" => [
[
"role" => "system",
"content" => "You are a helpful assistant."
],
[
"role" => "user",
"content" => "你是谁?"
]
]
];
// 初始化cURL会话
$ch = curl_init();
// 设置cURL选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// 执行cURL会话
$response = curl_exec($ch);
// 检查是否有错误发生
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
// 关闭cURL资源
curl_close($ch);
// 输出响应结果
echo $response;
?>
using System.Net.Http.Headers;
using System.Text;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
// 若没有配置环境变量,请用百炼API Key将下行替换为:string? apiKey = "sk-xxx";
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("API Key 未设置。请确保环境变量 'DASHSCOPE_API_KEY' 已设置。");
return;
}
string url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
string jsonContent = @"{
""model"": ""qwen-plus"",
""messages"": [
{
""role"": ""system"",
""content"": ""You are a helpful assistant.""
},
{
""role"": ""user"",
""content"": ""你是谁?""
}
]
}";
// 发送请求并获取响应
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// 输出结果
Console.WriteLine(result);
}
private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
{
using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
{
// 设置请求头
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// 发送请求并获取响应
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// 处理响应
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"请求失败: {response.StatusCode}";
}
}
}
}
API参考
常见问题
免费额度用完后如何购买 Token?
A:您可以访问费用与成本中心,确保您的账户没有欠费即可调用通义千问模型。
调用通义千问模型会自动扣费,出账周期为一小时,消费明细请前往账单详情进行查看。
调用大模型API后报错Model.AccessDenied
,如何处理?
A:该报错是因为您使用子业务空间的API Key,子业务空间无法访问主账号空间的应用或模型。使用子空间API Key需由主账号管理员为对应子空间开通模型授权(如本文使用通义千问-Plus
模型)。详细操作步骤请参见授权子业务空间模型调用和部署。
如何接入 Chatbox 、 Cherry Studio或 Dify?
A:请根据您的使用情况参考以下步骤:
此处以使用较多的工具为例,其它大模型工具接入的方法较为类似。
添加模型
打开设置界面,单击模型供应商,找到 OpenAI-API-compatible 卡片,单击添加模型。
API 设置
对话测试
进入应用,在右上角的模型选择位置选择 OpenAI-API-compatible 下的新增模型,即可开始对话。
下一步
查看更多模型 | 示例代码以 qwen-plus 模型为例,百炼还支持其他通义千问模型与 DeepSeek、Llama 等第三方模型,支持的模型以及对应的API参考文档请参见模型列表。 |
了解进阶用法 | 示例代码仅完成了简单问答,如果您想了解通义千问 API 的更多用法,如流式输出(Stream)、结构化输出(JSON Mode)、工具调用(Function Call)等,请参见文本生成目录。 |
0代码创建大模型知识库应用 | 请参见0代码构建私有知识问答应用。 |
通过代码创建大模型应用 | 请参见Assistant API。 |
在线体验大模型 | 如果您想像通义官网一样,通过对话框与大模型互动,请访问模型体验。 通义官网将通义千问 API 与联网搜索、网页解析等工具进行了集成,与直接调用通义千问 API 效果略有差异。 |
0代码进行大模型微调 | 通常来说,对大模型微调需要有人工智能知识背景与工程能力,百炼提供了0代码对大模型进行微调的功能,您仅需提供数据集即可。详情请参见在控制台使用模型调优。 |
- 本页导读 (1)
- 账号设置
- 配置API Key到环境变量
- 选择开发语言
- API参考
- 常见问题
- 免费额度用完后如何购买 Token?
- 调用大模型API后报错Model.AccessDenied,如何处理?
- 如何接入 Chatbox 、 Cherry Studio或 Dify?
- 下一步