Alibaba Cloud Model Studio の Qwen モデルは、OpenAI 互換インターフェイスをサポートしています。既存の OpenAI コードを Model Studio サービスに移行するには、API キー、BASE_URL、およびモデル名を調整してください。
OpenAI 互換に関する情報
BASE_URL
BASE_URL は、モデルサービスのネットワークエンドポイントです。このアドレスを使用して、サービスの機能にアクセスできます。OpenAI 互換インターフェイスを用いて Model Studio サービスを呼び出す場合、BASE_URL を設定する必要があります。
OpenAI SDK またはその他の OpenAI 互換 SDK を使用して呼び出しを行う場合、BASE_URL を以下のように設定します:
シンガポール: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 米国 (バージニア): https://dashscope-us.aliyuncs.com/compatible-mode/v1 中国 (北京): https://dashscope.aliyuncs.com/compatible-mode/v1 中国 (香港): https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1HTTP リクエストを使用して呼び出しを行う場合、完全なアクセスエンドポイントを以下のように設定します:
シンガポール: POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions 米国 (バージニア): POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions 中国 (北京): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions 中国 (香港): https://cn-hongkong.aliyuncs.com/compatible-mode/v1/chat/completions
サポートされるモデル一覧
以下の表では、OpenAI 互換インターフェイスでサポートされる Qwen シリーズのモデルを示します。
グローバル
商用
Qwen-Max シリーズ: qwen3-max、qwen3-max-preview、qwen3-max-2025-09-23 以降のスナップショット版
Qwen-Plus シリーズ: qwen-plus、qwen-plus-latest、qwen-plus-2025-01-25 以降のスナップショット版
Qwen-Flash シリーズ: qwen-flash、qwen-flash-2025-07-28 以降のスナップショット版
オープンソース
qwen3-next-80b-a3b-thinking、qwen3-next-80b-a3b-instruct、qwen3-235b-a22b-thinking-2507、qwen3-235b-a22b-instruct-2507、qwen3-30b-a3b-thinking-2507、qwen3-30b-a3b-instruct-2507、qwen3-235b-a22b、qwen3-32b、qwen3-30b-a3b、qwen3-14b、qwen3-8b
国際
Commercial Edition
Qwen-Max シリーズ: qwen3-max、qwen3-max-preview、qwen3-max-2025-09-23 以降のスナップショット版、qwen-max、qwen-max-latest、qwen-max-2025-01-25 以降のスナップショット版
Qwen-Plus シリーズ: qwen3.5-plus、qwen3.5-plus-2026-02-15 以降のスナップショット版、qwen-plus、qwen-plus-latest、qwen-plus-2025-01-25 以降のスナップショット版
Qwen-Flash シリーズ: qwen3.5-flash、qwen3.5-flash-2026-02-23 以降のスナップショット版、qwen-flash、qwen-flash-2025-07-28
Qwen-Turbo シリーズ: qwen-turbo、qwen-turbo-latest、qwen-turbo-2024-11-01 以降のスナップショット版
Qwen-Coder シリーズ: qwen3-coder-plus、qwen3-coder-plus-2025-07-22 以降のスナップショット版、qwen3-coder-flash、qwen3-coder-flash-2025-07-28 以降のスナップショット版
QwQ シリーズ: qwq-plus
オープンソース
qwen3.5-397b-a17b、qwen3.5-120b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
qwen3-next-80b-a3b-thinking、qwen3-next-80b-a3b-instruct、qwen3-235b-a22b-thinking-2507、qwen3-235b-a22b-instruct-2507、qwen3-30b-a3b-thinking-2507、qwen3-30b-a3b-instruct-2507、qwen3-235b-a22b、qwen3-32b、qwen3-30b-a3b、qwen3-14b、qwen3-8b、qwen3-4b、qwen3-1.7b、qwen3-0.6b
qwen2.5-14b-instruct-1m、qwen2.5-7b-instruct-1m、qwen2.5-72b-instruct、qwen2.5-32b-instruct、qwen2.5-14b-instruct、qwen2.5-7b-instruct
米国
商用モデル
Qwen-Plus シリーズ: qwen-plus-us、qwen-plus-2025-12-01-us 以降のスナップショット版
Qwen-Flash シリーズ: qwen-flash-us、qwen-flash-2025-07-28-us
中国本土
商用
Qwen-Max シリーズ: qwen3-max、qwen3-max-preview、qwen3-max-2025-09-23 以降のスナップショット版、qwen-max、qwen-max-latest、qwen-max-2024-09-19 以降のスナップショット版
Qwen-Plus シリーズ: qwen3.5-plus、qwen3.5-plus-2026-02-15、qwen3.5-flash、qwen3.5-flash-2026-02-23 以降のスナップショット版、qwen-plus、qwen-plus-latest、qwen-plus-2024-12-20 以降のスナップショット版
Qwen-Flash シリーズ: qwen-flash、qwen-flash-2025-07-28 以降のスナップショット版
Qwen-Turbo シリーズ: qwen-turbo、qwen-turbo-latest、qwen-turbo-2025-04-28 以降のスナップショット版
Qwen-Coder シリーズ: qwen3-coder-plus、qwen3-coder-plus-2025-07-22 以降のスナップショット版、qwen3-coder-flash、qwen3-coder-flash-2025-07-28 以降のスナップショット版、qwen-coder-plus、qwen-coder-plus-latest、qwen-coder-plus-2024-11-06、qwen-coder-turbo、qwen-coder-turbo-latest、qwen-coder-turbo-2024-09-19
QwQ シリーズ: qwq-plus、qwq-plus-latest、qwq-plus-2025-03-05
Qwen-Math モデル: qwen-math-plus、qwen-math-plus-latest、qwen-math-plus-2024-08-16 以降のスナップショット版、qwen-math-turbo、qwen-math-turbo-latest、qwen-math-turbo-2024-09-19
オープンソース
qwen3.5-397b-a17b、qwen3.5-120b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
qwen3-next-80b-a3b-thinking、qwen3-next-80b-a3b-instruct、qwen3-235b-a22b-thinking-2507、qwen3-235b-a22b-instruct-2507、qwen3-30b-a3b-thinking-2507、qwen3-30b-a3b-instruct-2507、qwen3-235b-a22b、qwen3-32b、qwen3-30b-a3b、qwen3-14b、qwen3-8b、qwen3-4b、qwen3-1.7b、qwen3-0.6b
qwen2.5-14b-instruct-1m、qwen2.5-7b-instruct-1m、qwen2.5-72b-instruct、qwen2.5-32b-instruct、qwen2.5-14b-instruct、qwen2.5-7b-instruct、qwen2.5-3b-instruct、qwen2.5-1.5b-instruct、qwen2.5-0.5b-instruct
香港 (中国)
Qwen-Max シリーズ: qwen3-max、qwen3-max-2026-01-23 以降のスナップショット版
Qwen-Plus シリーズ: qwen-plus、qwen-plus-2025-01-25 以降のスナップショット版
Qwen-Flash シリーズ: qwen3.5-flash、qwen3.5-flash-2026-02-23 以降のスナップショット版
OpenAI SDK を使用した呼び出し
前提条件
ご利用のコンピューターに Python 環境がインストールされていることを確認してください。
最新版の OpenAI SDK をインストールします。
# 次のコマンドが失敗した場合は、pip を pip3 に置き換えてください。 pip install -U openaiModel Studio を有効化し、API キーを取得する必要があります。詳細については、「API キーの取得」をご参照ください。
API キーの漏洩リスクを低減するため、環境変数として設定することを推奨します。詳細については、「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/en/model-studio/get-api-key をご参照ください。
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、この行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
# 以下はシンガポールリージョン向けの base_url です。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus", # この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルの一覧については、https://www.alibabacloud.com/help/en/model-studio/getting-started/models をご参照ください。
messages=[{'role': 'system', 'content': 'あなたは親切なアシスタントです。'},
{'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": "qwen-plus",
"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/en/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下はシンガポールリージョン向けの base_url です。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus", # この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルの一覧については、https://www.alibabacloud.com/help/en/model-studio/getting-started/models をご参照ください。
messages=[{'role': 'system', 'content': 'あなたは親切なアシスタントです。'},
{'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":"qwen-plus","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":"qwen-plus","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":"qwen-plus","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":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":" Cloudです。私の名前はQwenです。","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","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":"停止","index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[],"created":1719286190,"model":"qwen-plus","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/en/model-studio/get-api-key をご参照ください。
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下はシンガポールリージョン向けの base_url です。
base_url="https://dashscope-intl.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="qwen-plus", # この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルの一覧については、https://www.alibabacloud.com/help/en/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} ラウンドの LLM 出力:{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} ラウンドの LLM 出力:{assistant_output}\n")
print(f"最終的な回答:{assistant_output['content']}")
if __name__ == '__main__':
call_with_messages()「杭州と北京の天気はどうですか?今何時ですか?」と入力すると、プログラムは以下の出力を生成します:

入力パラメーター
入力パラメーターは、OpenAI インターフェイスと整合しています。現在サポートされているパラメーターは以下のとおりです:
パラメーター | 型 | デフォルト値 | 説明 |
model | 文字列 | - | model パラメーターを使用して、使用するモデルを指定します。利用可能なモデルの一覧については、「サポートされるモデル一覧」をご参照ください。 |
messages | 配列 | - | ユーザーとモデル間の会話履歴です。配列内の各要素は |
top_p (省略可) | 浮動 | - | 生成プロセス中の核サンプリングにおける確率しきい値です。たとえば、このパラメーターを 0.8 に設定した場合、累積確率が 0.8 以上となる最小のトークン集合が候補セットとして保持されます。有効範囲は (0, 1.0) です。値が大きいほどランダム性が高まり、値が小さいほど決定論的になります。 |
temperature (省略可) | 浮動小数点数 | - | モデルの応答のランダム性および多様性を制御します。具体的には、temperature 値は、テキスト生成時の各候補語の確率分布に対する平滑化の程度を制御します。temperature 値が高いほど、確率分布のピークが低くなり、低確率の単語が選択されやすくなるため、生成結果の多様性が高まります。temperature 値が低いほど、確率分布のピークが高くなり、高確率の単語が選択されやすくなるため、生成結果はより決定論的になります。 有効範囲は [0, 2) です。意味がないため、このパラメーターを 0 に設定しないことを推奨します。 |
プレゼンスペナルティ (任意) | 浮動 | - | モデル生成中のシーケンス全体の繰り返しを制御します。presence_penalty を増加させることで、モデルが生成するコンテンツの繰り返しを減らすことができます。有効範囲は [-2.0, 2.0] です。 説明 このパラメーターは、現時点では Qwen 商用モデルおよび qwen1.5 以降のオープンソースモデルでのみサポートされています。 |
n (省略可) | 整数 | 1 | 生成する応答の数です。有効範囲は n の値を大きく設定しても、入力トークンの消費量は増えませんが、出力トークンの消費量は増えます。 この機能は、現時点では qwen-plus モデルでのみサポートされており、tools パラメーターを渡す場合は固定値 1 となります。 |
max_tokens (省略可) | 整数 | - | モデルが生成できる最大トークン数を指定します。たとえば、モデルの最大出力長が 2k の場合、この値を 1k に設定することで、モデルが過度に長いコンテンツを生成することを防げます。 モデルによって出力制限が異なります。詳細については、モデル一覧をご参照ください。 |
seed (省略可) | 整数 | - | 生成時に使用される乱数シードで、モデルが生成するコンテンツのランダム性を制御します。シードには符号なし 64 ビット整数が使用可能です。 |
stream (省略可) | ブール値 | False | ストリーミング出力の使用を制御します。ストリームモードで結果が出力される場合、インターフェイスはジェネレーターを返します。結果を取得するには、反復処理を行う必要があります。各出力は、その時点で生成された増分シーケンスです。 |
stop (省略可) | 文字列または配列 | None | stop パラメーターは、コンテンツ生成プロセスを正確に制御します。モデルが指定された文字列またはトークン ID を含むようになる直前に、自動的に生成を停止します。stop パラメーターは文字列または配列のいずれかになります。
|
tools (省略可) | 配列 | None | モデルが呼び出せるツールのライブラリを指定します。関数呼び出しフローでは、モデルがこのライブラリから 1 つのツールを選択します。tools 配列内の各ツールは、以下の構造を持ちます:
関数呼び出しフローでは、関数呼び出しラウンドを開始する場合でも、ツール関数の実行結果をモデルに送信する場合でも、tools パラメーターを設定する必要があります。現在サポートされているモデルには、qwen-turbo、qwen-plus、qwen-max があります。 説明 tools パラメーターは、stream=True と同時に使用することはできません。 |
stream_options (省略可) | オブジェクト | None | このパラメーターは、ストリーミング出力モードでトークン使用量を表示するかどうかを設定するために使用されます。このパラメーターは、stream が True に設定されている場合にのみ有効です。ストリーミング出力モードでトークン数をカウントするには、このパラメーターを |
応答パラメーター
応答パラメーター | データ型 | 説明 | 備考 |
id | 文字列 | この呼び出しに対してシステムが生成した ID です。 | - |
model | 文字列 | この呼び出しで使用されたモデルの名前です。 | - |
system_fingerprint | 文字列 | モデルが実行時に使用した構成バージョンです。現時点ではサポートされておらず、空文字列 "" を返します。 | - |
choices | 配列 | モデルが生成したコンテンツの詳細です。 | - |
choices[i].finish_reason | 文字列 | 以下の 3 つのケースがあります:
| |
choices[i].message | オブジェクト | モデルが出力したメッセージです。 | |
choices[i].message.role | 文字列 | モデルのロールで、固定値として assistant です。 | |
choices[i].message.content | 文字列 | モデルが生成したテキストです。 | |
choices[i].index | 整数 | 生成結果のシーケンス番号で、デフォルトは 0 です。 | |
created | 整数 | 現在生成された結果の UNIX タイムスタンプ(秒単位)です。 | - |
usage | オブジェクト | 課金情報で、このリクエストで消費されたトークンデータを示します。 | - |
usage.prompt_tokens | 整数 | ユーザー入力テキストをトークンに変換した後の長さです。 | - |
usage.completion_tokens | 整数 | モデル生成応答をトークンに変換した後の長さです。 | - |
usage.total_tokens | 整数 | 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 キーの漏洩リスクを低減するため、環境変数として設定することを推奨します。詳細については、「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/en/model-studio/get-api-key をご参照ください。
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、この行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # これはシンガポールリージョン向けの base_url です。
model="qwen-plus" # この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルの一覧については、https://www.alibabacloud.com/help/en/model-studio/getting-started/models をご参照ください。
)
messages = [
{"role":"system","content":"あなたは親切なアシスタントです。"},
{"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 キーはリージョンごとに異なります。API キーの取得方法については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
api_key=os.getenv("DASHSCOPE_API_KEY"), # 環境変数を設定していない場合は、この行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # これはシンガポールリージョン向けの base_url です。
model="qwen-plus", # この例では qwen-plus を使用しています。必要に応じてモデル名を変更できます。モデルの一覧については、https://www.alibabacloud.com/help/en/model-studio/getting-started/models をご参照ください。
stream_usage=True
)
messages = [
{"role":"system","content":"あなたは親切なアシスタントです。"},
{"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": "です。私の名前は Tongyi", "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 API を使用した呼び出し
HTTP インターフェイスを介して Alibaba Cloud Model Studio サービスを呼び出し、OpenAI サービスへの HTTP 呼び出しと同じ構造の応答を受け取ることができます。
前提条件
Model Studio を有効化し、API キーを取得する必要があります。詳細については、「API キーの取得」をご参照ください。
API キーの漏洩リスクを低減するため、環境変数として設定することを推奨します。詳細については、「API キーを環境変数として設定(この方法は非推奨となり、今後「API キーの設定」に統合されます)」をご参照ください。コード内に API キーを直接設定することも可能ですが、これは漏洩リスクを高めます。
API 呼び出しの送信
シンガポール: POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
米国 (バージニア): POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
中国 (北京): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
中国 (香港): POST https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1/chat/completionsリクエストの例
以下の例では、cURL コマンドを使用して API を呼び出す方法を示します。
API キーを環境変数として設定していない場合は、$DASHSCOPE_API_KEY を API キーに置き換えてください。
非ストリーミング出力
# これはシンガポールリージョン向けの base_url です。
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-plus",
"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": "qwen-plus",
"id": "chatcmpl-xxx"
}ストリーミング出力
ストリーミング出力を使用するには、リクエストボディで stream パラメーターを true に設定します。
# これはシンガポールリージョン向けの base_url です。
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-plus",
"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":"qwen-plus","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":"qwen-plus","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":"qwen-plus","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":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: {"choices":[{"delta":{"content":" Cloud です。私の名前は Qwen です。"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","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":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}
data: [DONE]
入力パラメーターの詳細については、「入力パラメーター」をご参照ください。
エラー応答の例
リクエストが失敗した場合、出力にはエラーの原因を示すコードとメッセージが含まれます。
{
"error": {
"message": "不正な API キーが指定されました。 ",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}ステータスコードの説明
エラーコード | 説明 |
400 - 不正なリクエストエラー | 不正なリクエストです。詳細については、エラーメッセージをご確認ください。 |
401 - 不正な API キーが指定されました | 不正な API キーです。 |
429 - リクエストのレート制限に達しました | レート制限を超えました(例:秒間クエリ数 (QPS) や分間クエリ数 (QPM))。 |
429 - 利用限度を超えたため、プランおよび課金の詳細を確認してください | 利用限度を超えました、またはアカウントの支払い遅延があります。 |
500 - サーバーでリクエストの処理中にエラーが発生しました | サーバー側でエラーが発生しました。 |
503 - エンジンが現在過負荷状態です。しばらくしてから再度お試しください | サーバーが過負荷状態です。しばらくしてから再度お試しください。 |