百炼支持通过API调用大模型,涵盖OpenAI兼容接口、DashScope SDK等接入方式。
如果您已经熟悉大模型调用,也可以直接查看API参考文档通过API使用通义千问。
本文以通义千问为例,引导您完成大模型API调用。您将了解到:
如何获取API Key
如何配置本地开发环境
如何调用通义千问API
账号设置
获取API Key:为了能够通过API调用大模型,您还需要在API Key管理界面创建API Key。请务必妥善保管API Key,避免明文写入代码中造成泄露。
选择开发语言
您可以选择您熟悉的语言或工具,用于后续调用大模型API。
Python
步骤 1:配置 Python 环境
检查您的Python计算环境
配置虚拟环境(可选)
安装 SDK
步骤 2:配置 API Key 到环境变量
Windows
Linux
macOS
步骤 3:调用大模型 API
OpenAI Python SDK
如果您安装完成了Python以及OpenAI的Python SDK,可以参考以下代码发送您的API请求。您可以新建一个python文件,命名为hello_qwen.py
,将以下代码复制到hello_qwen.py
中并保存。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-turbo",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '你是谁?'}
],
temperature=0.8
)
print(completion.choices[0].message.content)
复制完成后,您可以通过命令python hello_qwen.py
运行。运行后您将会看到对应的输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
如果运行失败,您可以将python替换成python3再运行。
DashScope Python SDK
如果您安装完成了Python以及DashScope的Python SDK,可以参考以下代码发送您的API请求。您可以新建一个python文件,命名为hello_qwen.py
,将以下代码复制到hello_qwen.py
中并保存。
from dashscope import Generation
messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '你是谁?'}
]
response = Generation.call(
model="qwen-turbo",
messages=messages,
temperature=0.8,
result_format='message'
)
print(response.output.choices[0].message.content)
复制完成后,您可以通过命令python hello_qwen.py
运行。运行后您将会看到对应的输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
如果运行失败,您可以将python替换成python3再运行。
Node.js
步骤1:配置Node.js环境
百炼兼容OpenAI的接口规范,您可以通过OpenAI SDK调用百炼提供的部分模型服务。
检查您的Node.js计算环境
安装 SDK
步骤 2:配置 API Key 到环境变量
Windows
Linux
macOS
步骤 3:调用大模型 API
您可以新建一个hello_qwen.js
文件,将以下代码复制到文件中。
import OpenAI from "openai";
const openai = new OpenAI(
{
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL:"https://dashscope.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const completion = await openai.chat.completions.create({
messages: [
{role: "system", content: "You are a helpful assistant." },
{role: "user", content: "你是谁?" }
],
model: "qwen-max",
});
console.log(completion.choices[0]['message']['content']);
}
main();
您的package.json文件需要有"type"键,类似于:
{
"type": "module",
"dependencies": {
"openai": "^4.53.2"
}
}
您可以在命令行中运行以下命令来发送API请求:
node hello_qwen.js
运行后您将会看到对应的输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
Java
步骤 1:配置 Java 环境
检查您的Java计算环境
安装SDK
步骤 2:配置 API Key 到环境变量
Windows
Linux
macOS
步骤 3:调用大模型 API
您可以运行以下代码来调用大模型API。
import java.util.Arrays;
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()
.model("qwen-turbo")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.temperature(0.8f)
.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("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}
运行后您将会看到对应的输出结果:
我是阿里云开发的一款超大规模语言模型,我叫通义千问。
curl
步骤 1:配置 curl
检查并安装 curl
步骤 2:配置 API Key 到环境变量
Windows
Linux
macOS
步骤 3:调用大模型 API
您可以通过OpenAI兼容的HTTP方式或DashScope的HTTP方式来调用百炼平台上的模型。
OpenAI兼容-HTTP
您可以运行以下命令发送API请求:
curl --location "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-turbo",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你是谁?"
}
],
"temperature":0.8
}'
发送API请求后,可以得到以下回复:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "我是阿里云开发的一款超大规模语言模型,我叫通义千问。"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 22,
"completion_tokens": 17,
"total_tokens": 39
},
"created": 1722235747,
"system_fingerprint": null,
"model": "qwen-turbo",
"id": "chatcmpl-e0584183-f0c5-9301-ba3c-e80a5b27ee1d"
}
DashScope-HTTP
您可以运行以下命令发送API请求:
curl --location "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen-turbo",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你是谁?"
}
]
},
"parameters": {
"temperature":0.8,
"result_format":"message"
}
}'
发送API请求后,可以得到以下回复:
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "我是阿里云开发的一款超大规模语言模型,我叫通义千问。"
}
}
]
},
"usage": {
"total_tokens": 39,
"output_tokens": 17,
"input_tokens": 22
},
"request_id": "48ba66e5-fa6b-9d46-922c-98fd67af718a"
}
常见问题
通义千问、灵积、DashScope、百炼是什么关系?
通义千问是阿里云研发的大语言模型。
灵积(也称为DashScope)是阿里云推出的模型服务平台,提供了包括通义千问在内的多种模型的调用接口。
百炼是阿里云推出的一站式大模型应用开发平台,同时也集成了灵积来提供模型调用服务。
我如果想调用通义千问模型,是要通过灵积平台还是百炼平台?
通过灵积平台与百炼平台调用通义千问模型都是通过DashScope SDK或OpenAI兼容或HTTP方式实现。两个平台都可以获取到API-KEY,且是同步的。因此您只需在两个平台任选其一创建API-KEY,即可发起通义千问模型的调用。
灵积即将合入百炼,您可以优先选择在百炼控制台创建API-KEY。
下一步
了解百炼支持的模型以及对应的API参考文档,请参考模型列表。
通过Web界面创建大模型应用,请参考0代码构建私有知识问答应用。
通过API创建Agent,请参考Assistant API。
通过对话框与大模型互动,请访问模型体验。
零代码进行大模型微调,请参考模型调优。
部署自己的专有模型,请参考模型部署。