百煉支持通過API調用大模型,涵蓋OpenAI兼容接口、DashScope SDK等接入方式。
如果您已經熟悉大模型調用,也可以直接查看API參考文檔通義千問。
本文以通義千問為例,引導您完成大模型API調用。您將了解到:
如何獲取API Key
如何配置本地開發環境
如何調用通義千問API
賬號設置
注冊賬號:如果沒有阿里云賬號,您需要先注冊阿里云賬號。
開通百煉:前往百煉控制臺,如果頁面頂部顯示以下消息,您需要開通百煉的模型服務,以獲得免費額度。如果未顯示該消息,則表示您已經開通。
獲取API Key:在控制臺的右上角選擇API-KEY,然后創建API Key,用于通過API調用大模型。
配置API Key到環境變量
建議您把API Key配置到環境變量,從而避免在代碼里顯式地配置API Key,降低泄漏風險。
Linux系統
添加永久性環境變量
如果您希望API Key環境變量在當前用戶的所有新會話中生效,可以添加永久性環境變量。
執行以下命令來將環境變量設置追加到
~/.bashrc
文件中。# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY echo "export DASHSCOPE_API_KEY='YOUR_DASHSCOPE_API_KEY'" >> ~/.bashrc
也可以手動修改
~/.bashrc
文件。執行以下命令,打開
~/.bashrc
文件。nano ~/.bashrc
在配置文件中添加以下內容。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
在nano編輯器中,按Ctrl + X,接著按Y,再按Enter以保存并關閉文件。
執行以下命令,使變更生效。
source ~/.bashrc
重新打開一個終端窗口,運行以下命令檢查環境變量是否生效。
echo $DASHSCOPE_API_KEY
添加臨時性環境變量
如果您僅希望在當前會話中使用該環境變量,可以添加臨時性環境變量。
執行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
執行以下命令,驗證該環境變量是否生效。
echo $DASHSCOPE_API_KEY
macOS系統
添加永久性環境變量
如果您希望API Key環境變量在當前用戶的所有新會話中生效,可以添加永久性環境變量。
在終端中執行以下命令,查看默認Shell類型。
echo $SHELL
根據默認Shell類型進行操作。
Zsh
執行以下命令來將環境變量設置追加到
~/.zshrc
文件中。# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY echo "export DASHSCOPE_API_KEY='YOUR_DASHSCOPE_API_KEY'" >> ~/.zshrc
也可以手動修改
~/.zshrc
文件。執行以下命令,打開Shell配置文件。
nano ~/.zshrc
在配置文件中添加以下內容。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
在nano編輯器中,按Ctrl + X,接著按Y,再按Enter以保存并關閉文件。
執行以下命令,使變更生效。
source ~/.zshrc
重新打開一個終端窗口,運行以下命令檢查環境變量是否生效。
echo $DASHSCOPE_API_KEY
Bash
執行以下命令來將環境變量設置追加到
~/.bash_profile
文件中。# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY echo "export DASHSCOPE_API_KEY='YOUR_DASHSCOPE_API_KEY'" >> ~/.bash_profile
也可以手動修改
~/.bash_profile
文件。執行以下命令,打開Shell配置文件。
nano ~/.bash_profile
在配置文件中添加以下內容。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
在nano編輯器中,按Ctrl + X,接著按Y,再按Enter以保存并關閉文件。
執行以下命令,使變更生效。
source ~/.bash_profile
重新打開一個終端窗口,運行以下命令檢查環境變量是否生效。
echo $DASHSCOPE_API_KEY
添加臨時性環境變量
如果您僅希望在當前會話中使用該環境變量,可以添加臨時性環境變量。
執行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY export DASHSCOPE_API_KEY="YOUR_DASHSCOPE_API_KEY"
執行以下命令,驗證該環境變量是否生效。
echo $DASHSCOPE_API_KEY
Windows系統
在Windows系統中,您可以使用CMD或PowerShell運行命令。
CMD
添加永久性環境變量
如果您希望API Key環境變量在當前用戶的所有新會話中生效,可以按如下操作。
在CMD中運行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY setx DASHSCOPE_API_KEY "YOUR_DASHSCOPE_API_KEY"
打開一個新的CMD窗口。
在新的CMD窗口運行以下命令,檢查環境變量是否生效。
echo %DASHSCOPE_API_KEY%
添加臨時性環境變量
如果您僅希望在當前會話中使用該環境變量,可以在CMD中運行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY
set DASHSCOPE_API_KEY=YOUR_DASHSCOPE_API_KEY
您可以在當前會話運行以下命令檢查環境變量是否生效。
echo %DASHSCOPE_API_KEY%
PowerShell
添加永久性環境變量
如果您希望API Key環境變量在當前用戶的所有新會話中生效,可以按如下操作。
在PowerShell中運行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY [Environment]::SetEnvironmentVariable("DASHSCOPE_API_KEY", "YOUR_DASHSCOPE_API_KEY", [EnvironmentVariableTarget]::User)
打開一個新的PowerShell窗口。
在新的PowerShell窗口運行以下命令,檢查環境變量是否生效。
echo $env:DASHSCOPE_API_KEY
添加臨時性環境變量
如果您僅希望在當前會話中使用該環境變量,可以在PowerShell中運行以下命令。
# 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY
$env:DASHSCOPE_API_KEY = "YOUR_DASHSCOPE_API_KEY"
您可以在當前會話運行以下命令檢查環境變量是否生效。
echo $env:DASHSCOPE_API_KEY
選擇開發語言
選擇您熟悉的語言或工具,用于調用大模型API。
Python
步驟 1:配置Python環境
檢查您的Python版本
您可以在終端中輸入以下命令查看當前計算環境是否安裝了Python:
# 如果運行失敗,您可以將python替換成python3再運行
python -V
您的Python需要為3.8或以上版本。如果您沒有安裝Python,或Python環境不滿足3.8或以上版本,請您參考安裝Python進行安裝。
配置虛擬環境(可選)
如果您的Python已安裝完成,可以創建一個虛擬環境來安裝OpenAI Python SDK或DashScope Python SDK,這可以幫助您避免與其它項目發生依賴沖突。
創建虛擬環境
您可以運行以下命令,創建一個命名為.venv的虛擬環境:
# 如果運行失敗,您可以將python替換成python3再運行 python -m venv .venv
激活虛擬環境
如果您使用windows系統,請運行以下命令來激活虛擬環境:
.venv\Scripts\activate
如果您使用macOS或者Linux系統,請運行以下命令來激活虛擬環境:
source .venv/bin/activate
安裝模型調用SDK
您可以通過OpenAI的Python SDK或DashScope的Python SDK來調用百煉平臺上的模型。
安裝OpenAI Python SDK
通過運行以下命令安裝OpenAI Python SDK:
pip3 install -U openai
安裝DashScope Python SDK
通過運行以下命令安裝DashScope Python SDK:
pip3 install -U dashscope
步驟 2:調用大模型API
OpenAI Python SDK
如果您安裝完成了Python以及OpenAI的Python SDK,可以參考以下代碼發送您的API請求。您可以新建一個python文件,命名為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", # 模型列表:http://bestwisewords.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("請參考文檔:http://bestwisewords.com/zh/model-studio/developer-reference/error-code")
復制完成后,您可以通過命令行運行python hello_qwen.py
或python3 hello_qwen.py
。運行后您將會看到輸出結果:
我是阿里云開發的一款超大規模語言模型,我叫通義千問。
DashScope Python SDK
如果您安裝完成了Python以及DashScope的Python SDK,可以參考以下代碼發送您的API請求。您可以新建一個Python文件,命名為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", # 模型列表:http://bestwisewords.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("請參考文檔:http://bestwisewords.com/zh/model-studio/developer-reference/error-code")
復制完成后,您可以通過命令python hello_qwen.py
運行。運行成功后您可以看到對應的輸出結果:
我是阿里云開發的一款超大規模語言模型,我叫通義千問。
如果運行失敗,您可以將python替換成python3再運行。
Node.js
步驟 1:配置Node.js環境
檢查Node.js安裝狀態
安裝模型調用SDK
您可以在終端運行以下命令:
npm install --save openai
# 或者
yarn add openai
如果安裝失敗,您可以通過配置鏡像源的方法來完成安裝,如:
npm config set registry https://registry.npmmirror.com/
配置鏡像源后,您可以重新運行安裝SDK的命令。
步驟 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", //模型列表:http://bestwisewords.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("請參考文檔:http://bestwisewords.com/zh/model-studio/developer-reference/error-code");
}
您可以通過命令行運行以下命令來發送API請求:
node hello_qwen.mjs
運行成功后您將會看到輸出結果:
我是阿里云開發的一款超大規模語言模型,我叫通義千問。
Java
步驟 1:配置Java環境
檢查您的Java版本
您可以在終端運行以下命令:
java -version
為了使用DashScope Java SDK,您的Java需要在Java 8或以上版本。您可以查看打印信息中的第一行確認Java版本,例如打印信息:openjdk version "16.0.1" 2021-04-20
表明當前Java版本為Java 16。如果您當前計算環境沒有Java,或版本低于Java 8,請前往Java下載進行下載與安裝。
安裝模型調用SDK
如果您的環境中已安裝Java,請安裝DashScope Java SDK。SDK的版本請參考:DashScope Java SDK。執行以下命令來添加 Java SDK 依賴,并將 the-latest-version
替換為最新的版本號。
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>the-latest-version</version>
</dependency>
// https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: 'the-latest-version'
步驟 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"))
// 模型列表:http://bestwisewords.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("請參考文檔:http://bestwisewords.com/zh/model-studio/developer-reference/error-code");
}
System.exit(0);
}
}
運行后您將會看到對應的輸出結果:
我是阿里云開發的一款超大規模語言模型,我叫通義千問。
curl
您可以通過OpenAI兼容的HTTP方式或DashScope的HTTP方式來調用百煉平臺上的模型。模型列表請參考:模型列表。
若沒有配置環境變量,請用百煉API Key將:-H "Authorization: Bearer $DASHSCOPE_API_KEY" \ 換為:-H "Authorization: Bearer sk-xxx" \ 。
OpenAI兼容-HTTP
您可以運行以下命令發送API請求:
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你是誰?"
}
]
}'
發送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"
}
DashScope-HTTP
您可以運行以下命令發送API請求:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-plus",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你是誰?"
}
]
},
"parameters": {
"result_format":"message"
}
}'
發送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{
// 模型列表:http://bestwisewords.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 = '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 = [
// 模型列表:http://bestwisewords.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_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";
// 模型列表:http://bestwisewords.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參考文檔,請參考模型列表。
通過Web界面創建大模型應用,請參考0代碼構建私有知識問答應用。
通過API創建Agent,請參考Assistant API。
通過對話框與大模型互動,請訪問模型體驗。
零代碼進行大模型微調,請參考在控制臺使用模型調優。
部署自己的專有模型,請參考模型部署。