Skip to main content
工具包/架構

OpenAI Chat介面相容

阿里雲百鍊的千問模型支援 OpenAI 相容介面,您只需調整 API Key、BASE_URL 和模型名稱,即可將原有 OpenAI 代碼遷移至阿里雲百鍊服務使用。

相容OpenAI需要資訊

BASE_URL

BASE_URL表示模型服務的網路訪問點或地址。通過該地址,您可以訪問服務提供的功能或資料。在Web服務或API的使用中,BASE_URL通常對應於服務的具體操作或資源的URL。當您使用OpenAI相容介面來使用阿里雲百鍊模型服務時,需要配置BASE_URL。
  • 當您通過OpenAI SDK或其他OpenAI相容的SDK調用時,需要配置的BASE_URL如下:
新加坡:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
維吉尼亞:https://dashscope-us.aliyuncs.com/compatible-mode/v1
北京:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
中國香港:https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1
日本(東京):https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1
  • 當您通過HTTP請求調用時,需要配置的完整訪問endpoint如下:
新加坡:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
維吉尼亞:POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
北京:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
中國香港:POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions
日本(東京):POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
阿里雲百鍊為華北2(北京)、新加坡、中國香港地區推出了業務空間專屬網域名稱,能夠為推理請求提供卓越的效能和更高的穩定性,建議遷移至新網域名稱:
  • 華北2(北京)地區:從 https://dashscope.aliyuncs.com 遷移至 https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • 新加坡地區:從 https://dashscope-intl.aliyuncs.com 遷移至 https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
  • 中國香港地區:從 https://cn-hongkong.dashscope.aliyuncs.com 遷移至 https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com
其中 {WorkspaceId} 為您的業務空間 ID,可在阿里雲百鍊控制台的業務空間詳情頁面查看。現有網域名稱仍可正常使用。
調用失敗排查:通過 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。
# 如果下述命令報錯,請將pip替換為pip3
pip install -U openai
  • 您需要開通阿里雲百鍊模型服務並獲得API-KEY,詳情請參考:擷取與配置 API Key
  • 我們推薦您將API-KEY配置到環境變數中以降低API-KEY的泄露風險,配置方法可參考配置API Key到環境變數。您也可以在代碼中配置API-KEY,但是泄露風險會提高
  • 請選擇您需要使用的模型:支援的模型列表

使用方式

您可以參考以下樣本來使用OpenAI SDK訪問百鍊服務上的千問模型。

非流式調用樣本

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您沒有配置環境變數,請用阿里雲百鍊API Key將本行替換為:api_key="sk-xxx"
        # 以下為新加坡地區base_url,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此處以qwen-plus為例,可按需更換模型名稱。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是誰?'}]
        )
    print(completion.model_dump_json())

if __name__ == '__main__':
    get_response()
運行代碼可以獲得以下結果:
{
    "id": "chatcmpl-xxx",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "我是來自阿里雲的超大規模預訓練模型,我叫千問。",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null
            }
        }
    ],
    "created": 1716430652,
    "model": "qwen3.8-max",
    "object": "chat.completion",
    "system_fingerprint": null,
    "usage": {
        "completion_tokens": 18,
        "prompt_tokens": 22,
        "total_tokens": 40
    }
}

流式調用樣本

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # 如果您沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下為新加坡地區base_url,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",

    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此處以qwen-plus為例,可按需更換模型名稱。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是誰?'}],
        stream=True,
        # 通過以下設定,在流式輸出的最後一行展示token使用資訊
        stream_options={"include_usage": True}
        )
    for chunk in completion:
        print(chunk.model_dump_json())

if __name__ == '__main__':
    get_response()
運行代碼可以獲得以下結果:
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":"assistant","tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"我是","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"來自","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"阿里","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"雲的大規模語言模型","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":",我叫千問。","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":null,"tool_calls":null},"finish_reason":"stop","index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":{"completion_tokens":16,"prompt_tokens":22,"total_tokens":38}}

function call樣本

此處以天氣查詢工具與時間查詢工具為例,向您展示通過OpenAI介面相容實現function call的功能。範例程式碼可以實現多輪工具調用。
from openai import OpenAI
from datetime import datetime
import json
import os

client = OpenAI(
    # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下為新加坡地區base_url,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# 定義工具列表,模型在選擇使用哪個工具時會參考工具的name和description
tools = [
    # 工具1 擷取當前時刻的時間
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "當你想知道現在的時間時非常有用。",
            # 因為擷取目前時間無需輸入參數,因此parameters為空白字典
            "parameters": {}
        }
    },
    # 工具2 擷取指定城市的天氣
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "當你想查詢指定城市的天氣時非常有用。",
            "parameters": {
                "type": "object",
                "properties": {
                    # 查詢天氣時需要提供位置,因此參數設定為location
                    "location": {
                        "type": "string",
                        "description": "城市或縣區,比如北京市、杭州市、餘杭區等。"
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# 類比天氣查詢工具。返回結果樣本:“北京今天是雨天。”
def get_current_weather(location):
    return f"{location}今天是雨天。 "

# 查詢目前時間的工具。返回結果樣本:“目前時間:2024-04-15 17:15:18。“
def get_current_time():
    # 擷取當前日期和時間
    current_datetime = datetime.now()
    # 格式化當前日期和時間
    formatted_time = current_datetime.strftime('%Y-%m-%d %H:%M:%S')
    # 返回格式化後的目前時間
    return f"目前時間:{formatted_time}。"

# 封裝模型響應函數
def get_response(messages):
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此處以qwen-plus為例,可按需更換模型名稱。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=messages,
        tools=tools
        )
    return completion.model_dump()

def call_with_messages():
    print('\n')
    messages = [
            {
                "content": input('請輸入:'),  # 提問樣本:"現在幾點了?" "一個小時後幾點" "北京天氣如何?"
                "role": "user"
            }
    ]
    print("-"*60)
    # 模型的第一輪調用
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\n{i}輪大模型輸出資訊:{first_response}\n")
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    # 如果不需要調用工具,則直接返回最終答案
    if assistant_output['tool_calls'] == None:  # 如果模型判斷無需調用工具,則將assistant的回複直接列印出來,無需進行模型的第二輪調用
        print(f"無需調用工具,我可以直接回複:{assistant_output['content']}")
        return
    # 如果需要調用工具,則進行模型的多輪調用,直到模型判斷無需調用工具
    while assistant_output['tool_calls'] != None:
        # 如果判斷需要調用查詢天氣工具,則執行查詢天氣工具
        if assistant_output['tool_calls'][0]['function']['name'] == 'get_current_weather':
            tool_info = {"name": "get_current_weather", "role":"tool"}
            # 提取位置參數資訊
            location = json.loads(assistant_output['tool_calls'][0]['function']['arguments'])['location']
            tool_info['content'] = get_current_weather(location)
        # 如果判斷需要調用查詢時間工具,則執行查詢時間工具
        elif assistant_output['tool_calls'][0]['function']['name'] == 'get_current_time':
            tool_info = {"name": "get_current_time", "role":"tool"}
            tool_info['content'] = get_current_time()
        print(f"工具輸出資訊:{tool_info['content']}\n")
        print("-"*60)
        messages.append(tool_info)
        assistant_output = get_response(messages)['choices'][0]['message']
        if  assistant_output['content'] is None:
            assistant_output['content'] = ""
        messages.append(assistant_output)
        i += 1
        print(f"第{i}輪大模型輸出資訊:{assistant_output}\n")
    print(f"最終答案:{assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

輸入參數配置

輸入參數與OpenAI的介面參數對齊,當前已支援的參數如下:
參數類型預設值說明
modelstring
使用者使用model參數指明對應的模型,可選的模型請見支援的模型列表
messagesarray
使用者與模型的對話歷史。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(可選)integer1產生響應的個數,取值範圍是1-4。對於需要產生多個響應的情境(如創意寫作、廣告文案等),可以設定較大的 n 值。
設定較大的 n 值不會增加輸入 Token 消耗,會增加輸出 Token 的消耗。
當前僅支援 qwen-plus 模型,且在傳入 tools 參數時固定為1。
max_tokens(可選)integer
指定模型可產生的最大token個數。例如模型最大輸出長度為2k,您可以設定為1k,防止模型輸出過長的內容。不同的模型有不同的輸出上限,具體請參見模型列表。
seed(可選)integer
產生時使用的隨機數種子,用於控制模型產生內容的隨機性。seed支援無符號64位整數。
stream(可選)booleanFalse用於控制是否使用流式輸出。當以stream模式輸出結果時,介面返回結果為generator,需要通過迭代擷取結果,每次輸出為當前產生的增量序列。
stop(可選)string or arrayNonestop參數用於實現內容產生過程的精確控制,在模型產生的內容即將包含指定的字串或token_id時自動停止。stop可以為string類型或array類型。
  • string類型 當模型將要產生指定的stop詞語時停止。 例如將stop指定為"你好",則模型將要產生“你好”時停止。
  • array類型 array中的元素可以為token_id或者字串,或者元素為token_id的array。當模型將要產生的token或其對應的token_id在stop中時,模型產生將會停止。以下為stop為array時的樣本(tokenizer對應模型為qwen-turbo): 1.元素為token_id: token_id為108386和104307分別對應token為“你好”和“天氣”,設定stop為[108386,104307],則模型將要產生“你好”或者“天氣”時停止。 2.元素為字串: 設定stop為["你好","天氣"],則模型將要產生“你好”或者“天氣”時停止。 3.元素為array: token_id為108386和103924分別對應token為“你好”和“啊”,token_id為35946和101243分別對應token為“我”和“很好”。設定stop為[[108386, 103924],[35946, 101243]],則模型將要產生“你好啊”或者“我很好”時停止。
    stop為array類型時,不可以將token_id和字串同時作為元素輸入,比如不可以指定stop為["你好",104307]
tools(可選)arrayNone用於指定可供模型調用的工具庫,一次function call流程模型會從中選擇其中一個工具。tools中每一個tool的結構如下:
  • type,類型為string,表示tools的類型,當前僅支援function。
  • function,類型為object,索引值包括name,description和parameters:
    • name:類型為string,表示工具函數的名稱,必須是字母、數字,可以包含底線和短劃線,最大長度為64。
    • description:類型為string,表示工具函數的描述,供模型選擇何時以及如何調用工具函數。
    • parameters:類型為object,表示工具的參數描述,需要是一個合法的JSON Schema。JSON Schema的描述可以見連結。如果parameters參數為空白,表示function沒有入參。 parameters中各屬性的type支援JSON Schema定義的常見類型,包括stringnumberintegerbooleanarrayobject等。當屬性類型為array時,需要通過items欄位指定數組元素的類型。樣本如下:
{
    "type": "object",
    "properties": {
        "command": {
            "type": "array",
            "items": {"type": "string"},
            "description": "要執行的命令,例如['ls', '-l']"
        }
    },
    "required": ["command"]
}
在function call流程中,無論是發起function call的輪次,還是向模型提交工具函數的執行結果,均需設定tools參數。當前支援的模型包括qwen-turbo、qwen-plus和qwen-max。
tools暫時無法與stream=True同時使用。
stream_options(可選)objectNone該參數用於配置在流式輸出時是否展示使用的token數目。只有當stream為True的時候該參數才會啟用生效。若您需要統計流式輸出模式下的token數目,可將該參數配置為stream_options={"include_usage":True}

返回參數說明

返回參數

資料類型

說明

備忘

id

string

系統產生的標識本次調用的id。

model

string

本次調用的模型名。

system_fingerprint

string

模型運行時使用的配置版本,當前暫時不支援,返回為空白字串“”。

choices

array

模型產生內容的詳情。

choices[i].finish_reason

string

有三種情況:

  • 正在產生時為null;

  • 因觸發輸入參數中的stop條件而結束為stop;

  • 因產生長度過長而結束為length。

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。
# 如果下述命令報錯,請將pip替換為pip3
pip install -U langchain_openai
  • 您需要開通阿里雲百鍊模型服務並獲得API-KEY,詳情請參考:擷取與配置 API Key
  • 我們推薦您將API-KEY配置到環境變數中以降低API-KEY的泄露風險,詳情可參考配置API Key到環境變數。您也可以在代碼中配置API-KEY,但是泄露風險會提高
  • 請選擇您需要使用的模型:支援的模型列表

使用方式

您可以參考以下樣本來通過langchain_openai SDK使用阿里雲百鍊的千問模型。

非流式輸出

非流式輸出使用invoke方法實現,請參考以下範例程式碼:
from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您沒有配置環境變數,請用阿里雲百鍊API Key將本行替換為:api_key="sk-xxx"
        # 以下為新加坡地區base_url,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
        model="qwen3.8-max"  # 此處以qwen-plus為例,可按需更換模型名稱。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是誰?"}
    ]
    response = llm.invoke(messages)
    print(response.json())

if __name__ == "__main__":
    get_response()
運行代碼,可以得到以下結果:
{
    "content": "我是來自阿里雲的大規模語言模型,我叫千問。",
    "additional_kwargs": {},
    "response_metadata": {
        "token_usage": {
            "completion_tokens": 16,
            "prompt_tokens": 22,
            "total_tokens": 38
        },
        "model_name": "qwen-plus",
        "system_fingerprint": "",
        "finish_reason": "stop",
        "logprobs": null
    },
    "type": "ai",
    "name": null,
    "id": "run-xxx",
    "example": false,
    "tool_calls": [],
    "invalid_tool_calls": []
}

流式輸出

流式輸出使用stream方法實現,無需在參數中配置stream參數。
from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您沒有配置環境變數,請用阿里雲百鍊API Key將本行替換為:api_key="sk-xxx"
        # 以下為新加坡地區base_url,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
        model="qwen3.8-max",   # 此處以qwen-plus為例,可按需更換模型名稱。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        stream_usage=True
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是誰?"},
    ]
    response = llm.stream(messages)
    for chunk in response:
        print(chunk.model_dump_json())

if __name__ == "__main__":
    get_response()
運行代碼,可以得到以下結果:
{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "我是", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "來自", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "阿里", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "雲", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "的大規模語言模型", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": ",我叫通", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "義千問。", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {"finish_reason": "stop"}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": {"input_tokens": 22, "output_tokens": 16, "total_tokens": 38}, "tool_call_chunks": []}
關於輸入參數的配置,可以參考輸入參數配置,相關參數在ChatOpenAI對象中定義。

通過HTTP介面調用

您可以通過HTTP介面來調用阿里雲百鍊服務,獲得與通過HTTP介面調用OpenAI服務相同結構的返回結果。

前提條件

  • 您需要開通阿里雲百鍊模型服務並獲得API-KEY,詳情請參考:擷取與配置 API Key
  • 我們推薦您將API-KEY配置到環境變數中以降低API-KEY的泄露風險,配置方法可參考配置API Key到環境變數。您也可以在代碼中配置API-KEY,但是泄露風險會提高

提交介面調用

新加坡:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
美國(維吉尼亞):POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
華北2(北京):POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
中國香港:POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions

請求樣本

以下樣本展示通過cURL命令來調用API的指令碼。
如果您沒有配置API-KEY為環境變數,需將$DASHSCOPE_API_KEY更改為您的API-KEY*。*

非流式輸出

# 以下為新加坡地區URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是誰?"
        }
    ]
}'
運行命令可得到以下結果:
{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "我是來自阿里雲的大規模語言模型,我叫千問。"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 11,
        "completion_tokens": 16,
        "total_tokens": 27
    },
    "created": 1715252778,
    "system_fingerprint": "",
    "model": "qwen3.8-max",
    "id": "chatcmpl-xxx"
}

流式輸出

如果您需要使用流式輸出,請在請求體中指定stream參數為true。
# 以下為新加坡地區URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是誰?"
        }
    ],
    "stream":true
}'
運行命令可得到以下結果:
data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"finish_reason":null,"delta":{"content":"我是"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"來自"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"阿里"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"雲的大規模語言模型"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":",我叫千問。"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":""},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: [DONE]
輸入參數的詳情請參考輸入參數配置

異常響應樣本

在訪問請求出錯的情況下,輸出的結果中會通過 code 和 message 指明出錯原因。
{
    "error": {
        "message": "Invalid API-key provided.",
        "type": "invalid_request_error",
        "param": null,
        "code": "invalid_api_key"
    }
}

第三方用戶端配置

除 SDK 與 HTTP 直接調用外,您還可以在支援 OpenAI 相容協議的第三方大模型用戶端中接入阿里雲百鍊。以智譜用戶端為例,按以下步驟填寫配置後即可發起模型調用:
  1. 在用戶端的服務商設定中選擇自訂服務商
  2. 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 網域名稱仍可正常使用,但建議優先使用業務空間專屬網域名稱。
  3. API Key:填寫對應地區的百鍊 API Key。您可以在百鍊控制台API Key管理頁面建立並擷取 API Key。
  4. 模型名稱:填寫支援 OpenAI 相容協議的大語言模型名稱。可選模型以本文“相容OpenAI需要資訊”中支援的模型列表部分為準;例如 qwen3-vl-32b-thinking 僅作為模型名稱樣本,不表示免費額度承諾。
  5. 儲存配置後發起一次對話,驗證第三方用戶端是否可以正常調用模型。
如果調用返回 HTTP 400,且 error.messagecurrent user api does not support http callerror.typeinvalid_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

服務端負載過高,可重試。