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 | - | ユーザーとモデル間の会話履歴。各配列要素のフォーマットは |
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 | 生成する応答の数。有効な値: |
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 つのツールを選択します。各ツールは次の構造を持ちます: tools パラメーターは stream=True と同時に使用することはできません。 |
stream_options (オプション) | object | None | ストリーミング出力でトークン使用量を表示するかどうかを設定します。stream が 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]
パラメーターの詳細については、「リクエストパラメーター」をご参照ください。
エラー応答
リクエストが失敗した場合、応答には原因を示す code と message フィールドが含まれます。
{
"error": {
"message": "Incorrect API key provided. ",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}
サードパーティクライアントの設定
OpenAI 互換プロトコルをサポートするサードパーティクライアントから Model Studio のモデルを呼び出すことができます。以下の手順では、Zhipu クライアントを例として使用します。
-
クライアントのプロバイダー設定で、[カスタムプロバイダー] を選択します。
-
ベース 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ドメインは引き続き利用可能ですが、可能な限りワークスペース固有のドメインを使用してください。 -
API キー: ベース URL が指すリージョンの Model Studio API キーを入力します。API キーは、Model Studio コンソールのAPI キー管理ページで作成および取得できます。
-
モデル名: OpenAI 互換プロトコルをサポートする大規模言語モデルの名前を入力します。選択可能なモデルについては、「サポート対象モデル」をご参照ください。例:
qwen3-vl-32b-thinking。このモデル名は一例であり、モデルが無料クォータを提供することを示すものではありません。 -
設定を保存し、会話を開始して、サードパーティクライアントがモデルを呼び出せることを確認します。
呼び出しが HTTP 400 を返し、error.message が current user api does not support http call に、error.type が invalid_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 | サーバーが過負荷です。後でもう一度お試しください。 |