すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:OpenAI 互換 - チャット

最終更新日:Sep 09, 2026

Model Studio 上の Qwen モデルは、OpenAI 互換インターフェイスをサポートしています。API キー、ベース URL、モデル名を変更するだけで、既存の OpenAI コードを Model Studio に移行できます。

互換性情報

BASE_URL

BASE_URL は、モデルサービスにアクセスするためのネットワークエンドポイントです。Model Studio で 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 経由で呼び出す場合は、次の完全なエンドポイントを使用します。

シンガポール: 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

重要Model Studio は、パフォーマンスと安定性を向上させるために、北京、シンガポール、香港 (中国) リージョンにワークスペース固有のドメイン名を導入しました。新しいドメイン名に移行してください。

  • 北京リージョン: 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、または接続エラーで失敗した場合は、次の構成を確認してください。

クロスリージョン呼び出し

Model Studio の API キーは、作成されたリージョンにバインドされています。あるリージョンのベース URL を呼び出すときは、その同じリージョンで作成された API キーを使用する必要があります。別のリージョンの API キーは認証エラーで拒否されます。

このルールは、中国 (北京)、米国 (バージニア)、シンガポール、日本 (東京)、および中国 (香港) を含む、エンドポイントを提供するすべてのリージョンに適用されます。呼び出すエンドポイントのリージョンのコンソールで API キーを作成します。

たとえば、中国 (北京) リージョンで作成された API キーを使用して米国 (バージニア) のエンドポイントを呼び出すと、リクエストは HTTP 401 を返し、エラーメッセージ Incorrect API key provided とエラーコード invalid_api_key が表示されます。このエラーは、API キーが無効であるか権限がないことを示すのではなく、API キーとエンドポイントが異なるリージョンに属していることを示します。

サポート対象モデル

対応モデル:Qwen 大規模言語モデル(商用およびオープンソース版)、Qwen-VL、Qwen-Coder、Qwen-Omni、Qwen-Math、DeepSeek、Kimi、GLM、MiniMax。

Qwen-Audio は OpenAI 互換プロトコルをサポートしていません。代わりに DashScope プロトコルを使用してください。

OpenAI SDK 経由での呼び出し

前提条件

  • ご利用のマシンに Python がインストールされていること。
  • 最新バージョンの OpenAI SDK がインストールされていること。
# 以下のコマンドが失敗した場合は、pip を pip3 に置き換えてください
pip install -U openai
  • Model Studio を有効化し、API キーを取得していること。手順については、「API キーの取得」をご参照ください。
  • (推奨) キーの漏洩リスクを減らすために、API キーを環境変数として設定します。コード内で直接設定することもできますが、これにより漏洩のリスクが高まります
  • サポート対象モデルのリストから使用したいモデルを選択していること。

使用方法

以下の例は、OpenAI SDK を使用して Model Studio 上の Qwen モデルにアクセスする方法を示しています。

非ストリーミングの例

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各リージョンで APIキーは異なります。APIキーの取得:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、この行を Alibaba Cloud 百炼の APIキーで置き換えてください: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": "私は Alibaba Cloud の大規模事前学習モデル、Qwen です。",
                "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 キーは異なります。API キーの取得:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # 環境変数を設定していない場合は、次の行を Alibaba Cloud 百練の API キーに置き換えてください: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,
        # 以下の設定により、ストリーム出力の最後の行にトークン使用量情報が表示されます。
        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":"Alibaba","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":" Cloud の大規模言語モデル","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":"、通義千問 (Qwen) です。","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}}

ツール呼び出しの例

以下の例は、OpenAI 互換インターフェイスを介したツール呼び出し (関数呼び出し) を示しており、天気照会ツールと時刻照会ツールを使用しています。このサンプルコードは、マルチターンのツール呼び出しをサポートしています。

from openai import OpenAI
from datetime import datetime
import json
import os

client = OpenAI(
    # APIキーはリージョンごとに異なります。 APIキーの取得方法については、https://www.alibabacloud.com/help/zh/model-studio/get-api-key をご参照ください。
    # 環境変数が設定されていない場合は、次の行をAlibaba Cloud百炼のAPIキーに置き換えてください: 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",
)

# ツールリストを定義します。モデルは、使用するツールを選択する際に、ツールの名前と説明を参照します。
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('入力してください:'),  # 質問の例: "今何時ですか?" "1時間後は何時ですか?" "北京の天気はどうですか?"
                "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:  # モデルがツールを呼び出す必要がないと判断した場合、アシスタントの応答が直接出力され、モデルの2回目の呼び出しは不要です。
        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 インターフェイスに準拠しています。次の表に、現在サポートされているパラメーターを示します。

パラメーター

タイプ

デフォルト

説明

model

string

-

使用するモデル。利用可能なモデルについては、「サポート対象モデル」をご参照ください。

messages

array

-

ユーザーとモデル間の会話履歴。各配列要素のフォーマットは {"role": role, "content": content} です。有効なロール: system、user、assistant。messages[0] のみが system ロールをサポートします。通常、user と assistant ロールは交互に現れ、最後の要素は user ロールでなければなりません。

top_p (オプション)

float

-

核サンプリングの確率のしきい値。たとえば、値が 0.8 の場合、累積確率が 0.8 以上の最小のトークンセットのみが保持されます。有効な値: (0, 1.0)。値が高いほどランダム性が増し、低いほど決定性が増します。

temperature (オプション)

float

-

モデルの応答のランダム性と多様性をコントロールします。値が高いほど確率分布が平坦化され、より多様な出力を得るために低確率のトークンが選択されやすくなります。値が低いほど分布がシャープになり、より決定的な出力を得るために高確率のトークンが優先されます。有効な値: [0, 2)。値 0 は推奨されません。

presence_penalty (オプション)

float

-

生成されるシーケンス全体での繰り返しをコントロールします。値が高いほど繰り返しが減少します。有効な値: [-2.0, 2.0]。

Qwen 商用モデルおよびオープンソースモデル qwen1.5 以降でのみサポートされています。

n (オプション)

integer

1

生成する応答の数。有効な値: 1-4。複数の応答が必要なシナリオ (クリエイティブライティングや広告コピーなど) では、より大きな n の値を設定します。> n の値を大きくしても入力トークンの消費量は増加しませんが、出力トークンの消費量は増加します。> 現在、qwen-plus でのみサポートされています。tools パラメーターが指定されている場合、n は 1 に固定されます。

max_tokens (オプション)

integer

-

モデルが生成できるトークンの最大数。たとえば、モデルが最大 2k の出力トークンをサポートしている場合、これを 1k に設定して応答が長くなりすぎるのを防ぐことができます。モデルによって出力制限は異なります。詳細については、モデルリストをご参照ください。

seed (オプション)

integer

-

生成用のランダムシードで、モデル出力のランダム性をコントロールするために使用されます。符号なし 64 ビット整数をサポートします。

stream (オプション)

boolean

False

ストリーミング出力を使用するかどうかをコントロールします。ストリーミングが有効な場合、インターフェイスはジェネレーターを返します。それを反復処理して結果を取得します。各出力は生成された増分シーケンスです。

stop (オプション)

string or array

None

コンテンツ生成の正確な停止をコントロールします。モデルが指定された文字列または token_id を生成しようとすると、生成は自動的に停止します。文字列または配列型を指定できます。文字列型の場合: モデルが指定されたストップワードを生成しようとすると生成が停止します。配列型の場合: 配列要素は token_id、文字列、または token_id の配列にすることができます。生成されたトークンまたはその token_id が stop の要素と一致すると、生成が停止します。

stop が配列型の場合、token_id と文字列を要素として混在させることはできません。

tools (オプション)

array

None

モデルが呼び出し可能なツールライブラリ。関数呼び出しフロー中、モデルはこのライブラリから 1 つのツールを選択します。各ツールは次の構造を持ちます: type (文字列、現在 "function" のみサポート)、function (キーを持つオブジェクト: namedescriptionparameters)。name フィールドは関数名です (文字、数字、アンダースコア、ハイフン、最大 64 文字)。description フィールドは、モデルがいつ、どのように関数を呼び出すべきかを説明します。parameters フィールドは、関数パラメーターを記述する有効な JSON スキーマです。空の場合、関数は入力を受け取りません。parameters 内の type フィールドは、一般的な JSON スキーマタイプをサポートします: stringnumberintegerbooleanarray、および objectarray 型を使用する場合、items で要素の型を指定します。関数呼び出しの開始ターンとツール結果の送信ターンの両方で tools パラメーターが必要です。現在サポートされているモデル: qwen-turbo、qwen-plus、qwen-max。

tools パラメーターは stream=True と同時に使用することはできません。

stream_options (オプション)

object

None

ストリーミング出力でトークン使用量を表示するかどうかを設定します。stream が True の場合にのみ有効です。ストリーミングモードでトークンをカウントするには、stream_options={"include_usage": True} を設定します。

応答パラメーター

パラメーター

タイプ

説明

id

string

このリクエストに対してシステムが生成した ID。

-

model

string

このリクエストに使用されたモデル名。

-

system_fingerprint

string

モデルランタイムが使用する構成バージョン。現在サポートされておらず、空の文字列を返します。

-

choices

array

モデルが生成したコンテンツの詳細。

-

choices[i].finish_reason

string

生成が停止した理由。値: null (まだ生成中)、stop (停止条件により停止)、length (最大長を超えたため停止)。

-

choices[i].message

object

モデルが出力したメッセージ。

-

choices[i].message.role

string

モデルのロール。固定値: assistant。

-

choices[i].message.content

string

モデルが生成したテキスト。

-

choices[i].index

integer

生成された結果のシーケンス番号。デフォルト: 0。

-

created

integer

生成された結果のタイムスタンプ (秒単位)。

-

usage

object

このリクエストのトークン消費量を示す課金情報。

-

usage.prompt_tokens

integer

ユーザー入力テキストのトークン数。

-

usage.completion_tokens

integer

モデルが生成した応答のトークン数。

-

usage.total_tokens

integer

usage.prompt_tokens と usage.completion_tokens の合計。

-

langchain_openai SDK 経由での呼び出し

前提条件

  • ご利用のマシンに Python がインストールされていること。
  • langchain_openai SDK がインストールされていること。
# 以下のコマンドが失敗した場合は、pip を pip3 に置き換えてください
pip install -U langchain_openai
  • Model Studio を有効化し、API キーを取得していること。手順については、「API キーの取得」をご参照ください。
  • (推奨) キーの漏洩リスクを減らすために、API キーを環境変数として設定します。コード内で直接設定することもできますが、これにより漏洩のリスクが高まります
  • サポート対象モデルのリストから使用したいモデルを選択していること。

使用方法

以下の例は、langchain_openai SDK を使用して Model Studio 上の Qwen モデルにアクセスする方法を示しています。

非ストリーミング出力

非ストリーミング出力では invoke メソッドを使用します。

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # API キーはリージョンごとに異なります。API キーを取得するには、https://www.alibabacloud.com/help/zh/model-studio/get-api-key をご参照ください。
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、この行を Alibaba Cloud Bailian の API キーに置き換えてください: api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1", # 以下はシンガポールリージョンの base_url です。呼び出す際に、{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンごとに異なります。
        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": "私は Alibaba Cloud の大規模言語モデル、通義千問 (Qwen) です。",
    "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"),  # 環境変数を設定していない場合は、この行をAlibaba Cloud 百錬のAPI Keyに置き換えてください:api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",   # 以下はシンガポールリージョンのbase_urlです。呼び出し時に、{WorkspaceId}を実際のビジネスワークスペースIDに置き換えてください。各リージョンでURLは異なります。
        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": "Alibaba", "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": " Cloud", "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": "義千問 (Qwen) です。", "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 リクエストを介して Model Studio を呼び出し、OpenAI の HTTP 応答と同じ構造で応答を受け取ることができます。

前提条件

  • Model Studio を有効化し、API キーを取得していること。手順については、「API キーの取得」をご参照ください。
  • (推奨) キーの漏洩リスクを減らすために、API キーを環境変数として設定します。コード内で直接設定することもできますが、これにより漏洩のリスクが高まります

エンドポイント

シンガポール: 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

リクエストの例

以下の例では、cURL コマンドを使用して API を呼び出します。

注記API キーを環境変数として設定していない場合は、$DASHSCOPE_API_KEY を実際の API キーに置き換えてください。

非ストリーミング出力

# 以下はシンガポールリージョンの 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": "あなたは役に立つアシスタントです。"
        },
        {
            "role": "user",
            "content": "あなたは誰ですか?"
        }
    ]
}'

以下の出力が返されます。

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "私は Alibaba Cloud の大規模言語モデル、通義千問 (Qwen) です。"
            },
            "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": "あなたは役に立つアシスタントです。"
        },
        {
            "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":"Alibaba"},"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":" Cloud の大規模言語モデル"},"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":"、通義千問 (Qwen) です。"},"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]

パラメーターの詳細については、「リクエストパラメーター」をご参照ください。

エラー応答

リクエストが失敗した場合、応答には原因を示す codemessage フィールドが含まれます。

{
    "error": {
        "message": "Incorrect API key provided. ",
        "type": "invalid_request_error",
        "param": null,
        "code": "invalid_api_key"
    }
}

サードパーティクライアントの設定

OpenAI 互換プロトコルをサポートするサードパーティクライアントから Model Studio のモデルを呼び出すことができます。以下の手順では、Zhipu クライアントを例として使用します。

  1. クライアントのプロバイダー設定で、[カスタムプロバイダー] を選択します。

  2. ベース URL: OpenAI SDK がご利用のリージョンで使用するベース URL を入力します。各リージョンのベース URL については、「BASE_URL」をご参照ください。ベース URL は /compatible-mode/v1 で終わり、/chat/completions は含みません。ベース URL はリージョンごとに異なるため、API キーのリージョンに対応するものを使用してください。

    たとえば、シンガポール リージョンでは、https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 を入力します。 {WorkspaceId} を、お使いのワークスペース ID に置き換えます。この ID は、Model Studio コンソールのワークスペース詳細ページで確認できます。 レガシの https://dashscope.aliyuncs.com ドメインは引き続き利用可能ですが、可能な限りワークスペース固有のドメインを使用してください。

  3. API キー: ベース URL が指すリージョンの Model Studio API キーを入力します。API キーは、Model Studio コンソールのAPI キー管理ページで作成および取得できます。

  4. モデル名: OpenAI 互換プロトコルをサポートする大規模言語モデルの名前を入力します。選択可能なモデルについては、「サポート対象モデル」をご参照ください。例: qwen3-vl-32b-thinking。このモデル名は一例であり、モデルが無料クォータを提供することを示すものではありません。

  5. 設定を保存し、会話を開始して、サードパーティクライアントがモデルを呼び出せることを確認します。

呼び出しが HTTP 400 を返し、error.messagecurrent user api does not support http call に、error.typeinvalid_request_error に設定されることがあります。このエラーは、入力したモデルが OpenAI 互換インターフェイスを介した HTTP 呼び出しをサポートしていないことを意味します。「サポート対象モデル」のモデルに置き換えて、再度試してください。たとえば、qvq-max はこの呼び出しメソッドをサポートしていません。

エラーコード

エラーコード

説明

400 - Invalid Request Error

リクエストが無効です。詳細については、エラーメッセージをご参照ください。

401 - Incorrect API key provided

API キーが正しくありません。

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

サーバーが過負荷です。後でもう一度お試しください。