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

Alibaba Cloud Model Studio:OpenAI チャットインターフェイス互換性

最終更新日:Mar 18, 2026

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/v1
  • HTTP リクエストを使用して呼び出しを行う場合、完全なアクセスエンドポイントを以下のように設定します:

    シンガポール: 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 openai
  • Model Studio を有効化し、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()

杭州と北京の天気はどうですか?今何時ですか?」と入力すると、プログラムは以下の出力を生成します:

2024-06-26_10-04-56 (1).gif

入力パラメーター

入力パラメーターは、OpenAI インターフェイスと整合しています。現在サポートされているパラメーターは以下のとおりです:

パラメーター

デフォルト値

説明

model

文字列

-

model パラメーターを使用して、使用するモデルを指定します。利用可能なモデルの一覧については、「サポートされるモデル一覧」をご参照ください。

messages

配列

-

ユーザーとモデル間の会話履歴です。配列内の各要素は {"role": Role, "content": Content} の形式です。現在利用可能なロールは system、user、assistant です。system ロールは messages[0] のみでサポートされています。ほとんどの場合、user と assistant のロールは交互に指定する必要があります。また、messages の最後の要素のロールは user でなければなりません。

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

生成する応答の数です。有効範囲は 1~4 です。クリエイティブライティングや広告コピーなど、複数の応答が必要なシナリオでは、n の値を大きく設定できます。

n の値を大きく設定しても、入力トークンの消費量は増えませんが、出力トークンの消費量は増えます。
この機能は、現時点では qwen-plus モデルでのみサポートされており、tools パラメーターを渡す場合は固定値 1 となります。

max_tokens (省略可)

整数

-

モデルが生成できる最大トークン数を指定します。たとえば、モデルの最大出力長が 2k の場合、この値を 1k に設定することで、モデルが過度に長いコンテンツを生成することを防げます。

モデルによって出力制限が異なります。詳細については、モデル一覧をご参照ください。

seed (省略可)

整数

-

生成時に使用される乱数シードで、モデルが生成するコンテンツのランダム性を制御します。シードには符号なし 64 ビット整数が使用可能です。

stream (省略可)

ブール値

False

ストリーミング出力の使用を制御します。ストリームモードで結果が出力される場合、インターフェイスはジェネレーターを返します。結果を取得するには、反復処理を行う必要があります。各出力は、その時点で生成された増分シーケンスです。

stop (省略可)

文字列または配列

None

stop パラメーターは、コンテンツ生成プロセスを正確に制御します。モデルが指定された文字列またはトークン ID を含むようになる直前に、自動的に生成を停止します。stop パラメーターは文字列または配列のいずれかになります。

  • 文字列型

    モデルが指定されたストップワードを生成しようとするときに停止します。

    たとえば、stop を "hello" に設定した場合、モデルは "hello" を生成しようとするときに停止します。

  • 配列型

    配列内の要素は、トークン ID、文字列、またはトークン ID の配列のいずれかになります。生成されるトークンまたは対応するトークン ID が stop リストに含まれている場合、モデルの生成は停止します。以下に、stop が配列の場合の例を示します(トークナイザーは qwen-turbo モデルに対応):

    1. 要素がトークン ID の場合:

    トークン ID 108386 および 104307 はそれぞれトークン "hello" および "weather" に対応します。stop を [108386,104307] に設定した場合、モデルは "hello" または "weather" を生成しようとするときに停止します。

    2. 要素が文字列の場合:

    stop を ["hello","weather"] に設定した場合、モデルは "hello" または "weather" を生成しようとするときに停止します。

    3. 要素が配列の場合:

    トークン ID 108386 および 103924 はそれぞれトークン "hello" および "ah" に対応し、トークン ID 35946 および 101243 はそれぞれトークン "I" および "am fine" に対応します。stop を [[108386, 103924],[35946, 101243]] に設定した場合、モデルは "hello ah" または "I am fine" を生成しようとするときに停止します。

    説明

    stop が配列の場合、その要素はすべてトークン ID またはすべて文字列である必要があります。たとえば、["こんにちは", 104307] のように混在させることはできません。

tools (省略可)

配列

None

モデルが呼び出せるツールのライブラリを指定します。関数呼び出しフローでは、モデルがこのライブラリから 1 つのツールを選択します。tools 配列内の各ツールは、以下の構造を持ちます:

  • type:文字列。ツールのタイプを示します。現在は function のみがサポートされています。

  • function:オブジェクト。キーには name、description、parameters があります:

    • name:文字列。ツール関数の名前を示します。英字、数字、アンダースコア、ハイフンのみ使用可能で、最大長は 64 文字です。

    • description:文字列。ツール関数の説明を示します。モデルがいつ・どのようにツール関数を呼び出すかを判断するために使用されます。

    • parameters:オブジェクト。ツールのパラメーター説明を示します。有効な JSON Schema である必要があります。JSON Schema の説明については、この リンク をご参照ください。parameters パラメーターが空の場合、関数に入力パラメーターがないことを意味します。

関数呼び出しフローでは、関数呼び出しラウンドを開始する場合でも、ツール関数の実行結果をモデルに送信する場合でも、tools パラメーターを設定する必要があります。現在サポートされているモデルには、qwen-turbo、qwen-plus、qwen-max があります。

説明

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

stream_options (省略可)

オブジェクト

None

このパラメーターは、ストリーミング出力モードでトークン使用量を表示するかどうかを設定するために使用されます。このパラメーターは、stream が True に設定されている場合にのみ有効です。ストリーミング出力モードでトークン数をカウントするには、このパラメーターを stream_options={"include_usage":True} として設定できます。

応答パラメーター

応答パラメーター

データ型

説明

備考

id

文字列

この呼び出しに対してシステムが生成した ID です。

-

model

文字列

この呼び出しで使用されたモデルの名前です。

-

system_fingerprint

文字列

モデルが実行時に使用した構成バージョンです。現時点ではサポートされておらず、空文字列 "" を返します。

-

choices

配列

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

-

choices[i].finish_reason

文字列

以下の 3 つのケースがあります:

  • 生成中は null;

  • 入力パラメーター内のストップ条件により生成が終了した場合は stop;

  • 長さが長すぎるため、生成が終了しました。

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

使用方法

以下のサンプルコードを使用して、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 呼び出しと同じ構造の応答を受け取ることができます。

前提条件

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 - エンジンが現在過負荷状態です。しばらくしてから再度お試しください

サーバーが過負荷状態です。しばらくしてから再度お試しください。