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

Alibaba Cloud Model Studio:レスポンスの作成

最終更新日:Sep 11, 2026

OpenAI 互換の Responses API を使用して Qwen モデルを呼び出します。このトピックでは、入出力パラメーターについて説明し、呼び出し例を示します。

OpenAI Chat Completions API に対する利点:
  • 組み込みツール:Web 検索、Web スクレイピング、コードインタープリター、Text-to-Image、Image-to-Image、ナレッジベース検索などの組み込みツールを使用して、複雑なタスクでより良い結果を得ることができます。詳細については、「ツール呼び出し」をご参照ください。
  • より柔軟な入力:直接的な文字列入力とチャット形式のメッセージ配列の両方をサポートします。
  • 簡素化されたコンテキスト管理:最後のレスポンスから previous_response_id を渡すことで、メッセージ履歴配列を手動で構築する必要がなくなります。
  • 便利なコンテキストキャッシュ:リクエストヘッダーに x-dashscope-session-cache: enable (デフォルト値:disable) を追加して、サーバー側での対話コンテキストの自動キャッシュを有効にします。これにより、コードの変更を必要とせずに、マルチターン対話の推論レイテンシとコストを削減できます。詳細については、「セッションキャッシュ」をご参照ください。

互換性と制限事項

この API は、開発者の移行コストを削減するために OpenAI と互換性がありますが、パラメーター、機能、および動作が異なります。

基本原則:このドキュメントに明示的に記載されているパラメーターのみが処理されます。記載されていない OpenAI パラメーターはすべて無視されます。

以下の主な違いは、迅速な適応に役立ちます:

  • サポートされていないパラメーター:この API は、非同期実行パラメーター background など、一部の OpenAI API パラメーターをサポートしていません。API は現在、同期呼び出しのみをサポートしています。
  • 推論労力制御reasoning.effort パラメーターを使用して、モデルの推論労力を制御します。使用方法の詳細については、このパラメーターの説明をご参照ください。

シンガポール

SDK 呼び出し設定の base_urlhttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 です。

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses

China (Beijing)

SDK 呼び出し設定の base_urlhttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses

米国 (バージニア)

SDK 呼び出し設定 base_urlhttps://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/responses

ドイツ (フランクフルト)

SDK 呼び出し設定 base_urlhttps://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1/responses

中国 (香港)

SDK 呼び出し設定 base_urlhttps://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/responses

日本 (東京)

SDK 呼び出し設定 base_urlhttps://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1

HTTP リクエストエンドポイント:POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1/responses

{WorkspaceId} を実際の ワークスペース ID に置き換えてください。

重要Alibaba Cloud 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} は、Alibaba Cloud Model Studio コンソールの [ワークスペース詳細] ページで確認できるワークスペース ID です。既存のドメインは引き続き完全に機能します。

重要OpenAI 互換の Responses API のレガシー URL パス /api/v2/apps/protocols/compatible-mode/v1/responses は間もなく非推奨になります。できるだけ早く新しいパス /compatible-mode/v1/responses に移行してください。

リクエストボディ

model string (必須)

使用するモデルの ID。

サポートされているモデル

qwen3.8-max, qwen3.8-flash, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen3.7-max-2026-05-17, qwen3.7-max-preview, qwen3-max, qwen3-max-2026-01-23, qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.5-plus, qwen3.5-plus-2026-04-20, qwen3.5-plus-2026-02-15, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.6-flash-2026-04-16, qwen3.5-flash, qwen3.5-flash-2026-02-23, qwen3.8-2.4t-a95b, qwen3.8-27b, qwen3.6-35b-a3b, qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b, deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash, deepseek-v4-flash-0731, glm-5.2, kimi-k3

重要上記リスト外のAlibaba Cloud Model Studio直接提供テキスト生成モデルは基本的な互換機能のみをサポートします。Agent機能(組み込みツールなど)は制限されます。

input string or array (必須)

モデルへの入力。以下のフォーマットがサポートされています:

  • string:プレーンテキスト、例:"Hello"
  • array:対話のターン順に並べられたメッセージの配列。

配列要素のタイプ

EasyInputMessage object

メッセージの作成者の role とメッセージのペイロードの content を持つオブジェクト。

プロパティ

role string (必須)

メッセージの作成者のロール。有効な値:userassistantsystemdeveloper

content string or array (必須)

メッセージのコンテンツ。入力がプレーンテキストの場合は string、構造化されたコンテンツ配列の場合は array です。rolesystem または developer の場合、配列要素のタイプは input_text です。roleuser の場合、配列要素のタイプは input_textinput_image、または input_file です。roleassistant の場合、配列要素のタイプは output_text です。

Responses API は現在、ビデオまたはオーディオ入力をサポートしていません。これらのデータ型を渡すには、Chat Completions API または DashScope API を使用してください。

コンテンツ配列の項目

type string (必須)

コンテンツタイプを指定します。有効な値は input_textinput_image (user ロールのみ)、input_file (user ロールのみ、PDF と画像をサポート)、および output_text (assistant ロールのみ) です。

text string

テキストコンテンツ。typeinput_text または output_text の場合に必須です。

image_url string

URL または Base64 エンコードされたデータをサポートします。typeinput_image の場合に必須です。Base64 の場合は、完全なデータ URI を提供してください。例:data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...

file_url string

ファイルの公開 URL。typeinput_file の場合に必須です。PDF ファイル (最大 100 MB) と画像ファイル (最大 20 MB) をサポートします。現在、qwen3.5-ocr のみでサポートされています。

PDF のページ数の上限は ocr_optionstask によって決まります。taskdocument_parsing を指定した場合は最大 50 ページ、task を指定しない場合または他のタスクを指定した場合は最大 10 ページです。

type string (任意)

message に固定されています。

ResponseOutputMessage object (任意)

モデルの出力メッセージ。対話を続けるには、以前のレスポンスの output 配列から message オブジェクトを input に渡すことができます。EasyInputMessage とは異なり、このオブジェクトには idstatus、および構造化された content を含む完全な出力構造が含まれます。

プロパティ

type string (必須)

message に固定されています。

id string (必須)

以前のレスポンスからの出力メッセージの一意の識別子。

role string (必須)

assistant に固定されています。

status string (必須)

メッセージステータス。有効な値:in_progresscompletedincomplete

content array (必須)

コンテンツの配列。要素は output_text オブジェクトです。

プロパティ

type string (必須)

output_text に固定されています。

text string (必須)

レスポンステキスト。

annotations array (任意)

アノテーション情報。

関数呼び出し object (任意)

モデルが外部ツールを呼び出すことを決定したときに生成される構造化された命令。

プロパティ

type string (必須)

function_call に固定されています。

id string (任意)

以前のレスポンスからの関数呼び出しの一意の識別子。

name string (必須)

ツール関数の名前。

arguments string (必須)

ツール呼び出しの引数 (JSON 文字列形式)。

call_id string (必須)

ツール呼び出しの識別子。これはモデルによって返される call_id と一致する必要があります。

status string (任意)

ステータス。有効な値:in_progresscompletedincomplete

関数呼び出しの出力 object (任意)

ツール呼び出しの出力。メッセージリストでは、このオブジェクトはリクエストの失敗を防ぐために、対応する function_call メッセージの直後になければなりません

プロパティ

type string (必須)

function_call_output に固定されています。

id string (任意)

関数呼び出しの出力の一意の識別子。

call_id string (必須)

ツール呼び出し識別子は、モデルによって返される call_id と一致する必要があります。

output string (必須)

ツール関数の実行結果。

status string (任意)

ステータス。有効な値:in_progresscompletedincomplete

Reasoning object (任意)

モデルの推論プロセス。以前のレスポンスの output から reasoning アイテムを input に渡すことで、後続のターンでこのプロセスを続けることができます。

プロパティ

type string (必須)

reasoning に固定されています。

id string (必須)

以前のレスポンスからの推論コンテンツの一意の識別子。

summary array (必須)

推論のまとめコンテンツ。

プロパティ

type string (必須)

summary_text に固定されています。

text string (必須)

まとめテキスト。

status string (任意)

ステータス。有効な値:in_progresscompletedincomplete

Web Search Call object (任意)

Web 検索呼び出しオブジェクト。以前のレスポンスの出力から web_search_call アイテムを入力に渡すことで、マルチターン対話で検索結果のコンテキストを提供できます。

プロパティ

type string (必須)

常に web_search_call です。

id string (必須)

以前のレスポンスからの検索呼び出しの一意の識別子。

status string (必須)

検索ステータス。有効な値:in_progresssearchingcompletedfailed

action object (必須)

検索アクションの詳細。search タイプのみがサポートされています。

プロパティ

type string (必須)

検索タイプ。常に search です。

queries array (任意)

検索クエリのリスト。各要素は文字列です。

sources array (任意)

検索結果ソースのリスト。

プロパティ

type string (必須)

ソースタイプ。常に url です。

url string (必須)

ソース URL。

instructionsstring (任意)

コンテキストの冒頭にシステム命令として挿入されます。previous_response_id が使用される場合、前のターンで指定された instructions は現在のターンのコンテキストに渡されません。

previous_response_id string (任意)

前のレスポンスの一意の ID。レスポンスの id は 7 日間有効です。このパラメーターを使用してマルチターン対話を作成できます。サーバー側は自動的にそのターンの入力と出力を取得し、コンテキストとして結合します。input メッセージ配列と previous_response_id の両方を提供する場合、input 内の新しいメッセージは履歴コンテキストに追加されます。このパラメーターは conversation と一緒に使用することはできません。

conversation string (任意)

現在のレスポンスが属する対話 (「Conversations API」をご参照ください)。対話の履歴は自動的にコンテキストとして含まれます。このリクエストの入力と出力は、完了時に会話に追加されます。previous_response_id と一緒に使用することはできません。

stream boolean (任意) デフォルトは false

ストリーミング出力を有効にします。true に設定すると、モデルはリアルタイムでレスポンスをストリーミングします。

store boolean (任意) デフォルトは true

このセッションで生成されたモデルのレスポンスを保存するかどうかを指定します。

  • false:レスポンスは保存されず、後続の呼び出しで previous_response_id を介して参照することはできません。
  • true:レスポンスは保存されます。現在のモデルのレスポンスは、previous_response_id および後続の API 呼び出しで参照できます。

tools array (任意)

モデルがレスポンスを生成する際に呼び出すことができるツールの配列。組み込みツールとカスタム function ツールの両方をサポートし、一緒に使用できます。

最良の結果を得るには、code_interpreterweb_search、および web_extractor ツールを有効にしてください。

プロパティ

Web 検索

最新の情報をインターネットで検索します。関連ドキュメント:Web 検索

プロパティ

type string (必須)

web_search に固定されています。

例:[{"type": "web_search"}]

Web エクストラクタ

Web ページにアクセスし、コンテンツを抽出します。web_search ツールと一緒に使用する必要があります。qwen3-max および qwen3-max-2026-01-23 モデルの場合、推論モードも有効にする必要があります。関連ドキュメント:Web 抽出

プロパティ

type string (必須)

web_extractor に固定されています。

例:[{"type": "web_search"}, {"type": "web_extractor"}]

コードインタープリター

サンドボックス環境でコードを実行して、データ分析などのタスクを実行します。qwen3-max および qwen3-max-2026-01-23 モデルの場合、推論モードも有効にする必要があります。関連ドキュメント:コードインタープリター

プロパティ

type string (必須)

code_interpreter に固定されています。

例:[{"type": "code_interpreter"}]

Web 検索画像

テキストの説明に基づいて画像を検索します。関連ドキュメント:テキストによる画像検索

プロパティ

type string (必須)

web_search_image に固定されています。

例:[{"type": "web_search_image"}]

画像検索

入力画像に基づいて類似または関連する画像を検索します。入力には画像の URL を含める必要があります。関連ドキュメント:Image-to-Image 検索

プロパティ

type string (必須)

image_search に固定されています。

例:[{"type": "image_search"}]

ファイル検索

指定されたナレッジベースを検索して知識を取得します。関連ドキュメント:ナレッジ取得

プロパティ

type string (必須)

file_search に固定されています。

vector_store_ids array(必須)

検索するナレッジベースの ID。現在、提供できるナレッジベース ID は 1 つだけです。

例:[{"type": "file_search", "vector_store_ids": ["your_knowledge_base_id"]}]

MCP 呼び出し

Model Context Protocol (MCP) を介して外部サービスを呼び出します。関連ドキュメント:MCP

プロパティ

type string (必須)

mcp に固定されています。

server_protocol string (必須)

MCP サービスとの通信プロトコル、例:"sse"

server_label string (必須)

MCP サービスを識別するために使用されるラベル。

server_description string (任意)

サービスの説明。モデルがその機能を理解し、いつ使用するかを判断するのに役立ちます。

server_url string (必須)

MCP サービスエンドポイントの URL。

headers object (任意)

リクエストヘッダー。認証 (例:Authorization) などの情報を運ぶために使用されます。

例:

mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "AMap MCP サーバーは、15 のコア API をカバーする地理情報サービスの完全なスイートを提供します。これには、カスタムマップ生成、ナビゲーション、配車サービス、ジオコーディング、逆ジオコーディング、IP ベースの位置情報、天気クエリ、サイクリング、ウォーキング、運転、公共交通機関のルート計画、距離測定、さまざまな検索機能が含まれます。",
    "server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer <your-mcp-server-token>"
    }
}
カスタムツール関数

モデルが開発者定義の関数を呼び出すことを許可します。モデルがツールを呼び出す必要があると判断した場合、レスポンスはタイプ function_call の出力アイテムを返します。関連ドキュメント:関数呼び出し

プロパティ

type string (必須)

function に設定する必要があります。

namestring(必須)

ツールの名前。文字、数字、アンダースコア (_)、ハイフン (-) のみを含めることができ、最大長は 64 トークンです。

descriptionstring(必須)

ツールの説明。モデルがいつ、どのように呼び出すかを決定するのに役立ちます。

parameters object (任意)

ツールのパラメーター定義。有効な JSON Schema オブジェクトである必要があります。parameters が空の場合、ツールは引数を取らない (例:時間クエリツール)。

ツール呼び出しの精度を向上させるために、parameters を定義することを推奨します。

例:

[{
  "type": "function",
  "name": "get_weather",
  "description": "指定された都市の天気情報を取得する",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "都市の名前"
      }
    },
    "required": ["city"]
  }
}]

tool_choice string or object (任意) デフォルトは auto

モデルがツールを選択して呼び出す方法を制御します。このパラメーターは、文字列モードオブジェクトモードの 2 つのフォーマットをサポートします。

文字列モード
  • auto:モデルがツールを呼び出すかどうかを決定します。
  • none:モデルがどのツールも呼び出さないようにします。
  • required:モデルにツールを強制的に呼び出させます。これは、tools リストにツールが 1 つだけ含まれている場合にのみ使用できます。
オブジェクトモード

モデルが選択して呼び出すツールを特定のセットに制限します。

プロパティ

mode string (必須)

  • auto:モデルは、提供されたリストからツールを呼び出すかどうかを自動的に決定します。
  • required:モデルに、提供されたリストからツールを強制的に呼び出させます。これは、tools リストにツールが 1 つだけ含まれている場合にのみ使用できます。

tools array(必須)

モデルが呼び出すことを許可されているツール定義のリスト。

[
  { "type": "function", "name": "get_weather" }
]

typestring (必須)

ツール設定のタイプ。allowed_tools に固定されています。

temperaturefloat(任意)

サンプリング温度。生成されるテキストの多様性を制御します。

値が高いほど出力はよりランダムで多様になり、値が低いほどより集中的で決定論的になります。

値の範囲:[0, 2)

temperaturetop_p はどちらも生成されるテキストの多様性を制御します。これらのパラメーターのいずれか一方のみを一度に使用することを推奨します。詳細については、「概要」をご参照ください。

top_pfloat(任意)

Top-p サンプリングの確率のしきい値。生成されるテキストの多様性を制御します。

値が高いほど出力はよりランダムで多様になり、値が低いほどより集中的で決定論的になります。

値の範囲:(0, 1.0]

temperaturetop_p はどちらも生成されるテキストの多様性を制御します。これらのパラメーターのいずれか一方のみを一度に使用することを推奨します。詳細については、「概要」をご参照ください。

enable_thinking boolean (任意)

推論モードを有効または無効にします。有効にすると、モデルは応答する前に推論ステップを実行します。推論プロセスは、タイプ reasoning の出力アイテムとして返されます。推論モードを有効にする場合、複雑なタスクで最良の結果を得るために、組み込みツールも有効にすることを推奨します。

有効な値:

  • true:推論モードを有効にします。
  • false:推論モードを無効にします。

さまざまなモデルのデフォルト値については、「サポートされているモデル」をご参照ください。

このパラメーターは標準の OpenAI パラメーターではありません。Python SDK では、extra_body={"enable_thinking": True} を使用して渡します。Node.js SDK と curl では、トップレベルパラメーターとして enable_thinking: true を使用します。enable_thinking は非推奨になるため、代わりに reasoning.effort を使用することを推奨します。

reasoning object (任意)

モデルの推論労力を制御します。モデルは返信する前に推論ステップを実行し、推論プロセスはタイプ reasoning の出力アイテムを介して返されます。

プロパティ

effort string (任意):推論労力のレベル。デフォルトは xhigh です。

7 つの増分レベルをサポートします:noneminimallowmediumhighxhigh、および max。この値を下げると、応答速度が向上し、推論トークンの消費が削減されます。

xhighmax レベルは、China (Beijing)シンガポール でのみサポートされています。

reasoning.effortenable_thinking よりも優先されます。enable_thinking は非推奨になるため、reasoning.effort を使用することを推奨します。

ocr_options object (任意)

OCR 組み込みタスクパラメーター。qwen3.5-ocr モデルにのみ適用されます。このパラメーターを使用して、組み込み OCR タスク (情報抽出やテキストのローカライズなど) を呼び出します。組み込みタスクの結果は、レスポンスの ocr_result フィールドで返されます。

PDF ファイルを解析する場合、サポートされるページ数は task の値によって決まります。document_parsing を指定した場合は最大 50 ページ、task を指定しない場合または他のタスクを指定した場合は最大 10 ページです。

このパラメーターは標準の OpenAI パラメーターではありません。Python SDK では、extra_body={"ocr_options": {...}} を使用して渡します。Node.js SDK と curl では、トップレベルパラメーターとして ocr_options を使用します。

max_output_tokens integer (任意)

  • Qwen3.8 シリーズ:モデルのレスポンスコンテンツと Chain-of-Thought コンテンツの両方を合わせた合計トークンの最大数。
  • その他のモデル:モデルのレスポンスコンテンツの最大トークン数。

最小値は 16 です。モデルの出力がこの値を超えると、生成は早期に停止し、ステータスは incomplete になります。

基本的な呼び出し

import os
from openai import OpenAI

client = OpenAI(
    # 環境変数が設定されていない場合は、次のように置き換えます: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

response = client.responses.create(
    model="qwen3.8-max",
    input="あなたに何ができますか?"
)

# モデルのレスポンスを取得
print(response.output_text)
import OpenAI from "openai";

const openai = new OpenAI({
    // 環境変数が設定されていない場合は、次のように置き換えます: apiKey: "sk-xxx"
    apiKey: process.env.DASHSCOPE_API_KEY,
    // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.8-max",
        input: "あなたに何ができますか?"
    });

    // モデルのレスポンスを取得
    console.log(response.output_text);
}

main();
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "input": "あなたに何ができますか?"
}'

ストリーミング出力

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

stream = client.responses.create(
    model="qwen3.8-max",
    input="人工知能について簡単に紹介してください。",
    stream=True
)

print("ストリーミング出力を受信中:")
for event in stream:
    if event.type == 'response.output_text.delta':
        print(event.delta, end='', flush=True)
    elif event.type == 'response.completed':
        print("\nストリームが完了しました")
        print(f"合計トークン数: {event.response.usage.total_tokens}")
import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const stream = await openai.responses.create({
        model: "qwen3.8-max",
        input: "人工知能について簡単に紹介してください。",
        stream: true
    });

    console.log("ストリーミング出力を受信中:");
    for await (const event of stream) {
        if (event.type === 'response.output_text.delta') {
            process.stdout.write(event.delta);
        } else if (event.type === 'response.completed') {
            console.log("\nストリームが完了しました");
            console.log(`合計トークン数: ${event.response.usage.total_tokens}`);
        }
    }
}

main();
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
--no-buffer \
-d '{
    "model": "qwen3.8-max",
    "input": "人工知能について簡単に紹介してください。",
    "stream": true
}'

マルチターン対話

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# 最初のターン
response1 = client.responses.create(
    model="qwen3.8-max",
    input="私の名前は田中です。覚えておいてください。"
)
print(f"最初のレスポンス: {response1.output_text}")

# 2番目のターン - previous_response_id を使用してコンテキストをリンクします。レスポンス ID は 7 日間有効です。
response2 = client.responses.create(
    model="qwen3.8-max",
    input="私の名前を覚えていますか?",
    previous_response_id=response1.id
)
print(f"2番目のレスポンス: {response2.output_text}")
import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    // 最初のターン
    const response1 = await openai.responses.create({
        model: "qwen3.8-max",
        input: "私の名前は田中です。覚えておいてください。"
    });
    console.log(`最初のレスポンス: ${response1.output_text}`);

    // 2番目のターン - previous_response_id を使用してコンテキストをリンクします。レスポンス ID は 7 日間有効です。
    const response2 = await openai.responses.create({
        model: "qwen3.8-max",
        input: "私の名前を覚えていますか?",
        previous_response_id: response1.id
    });
    console.log(`2番目のレスポンス: ${response2.output_text}`);
}

main();

組み込みツール

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

response = client.responses.create(
    model="qwen3.8-max",
    input="Alibaba Cloud の公式サイトを見つけて、そのホームページから主要な情報を抽出してください。",
    # 最良の結果を得るために、組み込みツールを有効にすることを推奨します。
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"},
        {"type": "web_extractor"}
    ],
)

# 次の行のコメントを解除すると、中間出力が表示されます。
# print(response.output)
print(response.output_text)
import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.8-max",
        input: "Alibaba Cloud の公式サイトを見つけて、そのホームページから主要な情報を抽出してください。",
        tools: [
            { type: "web_search" },
            { type: "code_interpreter" },
            { type: "web_extractor" }
        ]
    });

    for (const item of response.output) {
        if (item.type === "reasoning") {
            console.log("モデルが思考中です...");
        } else if (item.type === "web_search_call") {
            console.log(`検索クエリ: ${item.action.query}`);
        } else if (item.type === "web_extractor_call") {
            console.log("Web コンテンツを抽出中...");
        } else if (item.type === "message") {
            console.log(`レスポンスコンテンツ: ${item.content[0].text}`);
        }
    }
}

main();
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "input": "Alibaba Cloud の公式サイトを見つけて、そのホームページから主要な情報を抽出してください。",
    "tools": [
        {
            "type": "web_search"
        },
        {
            "type": "code_interpreter"
        },
        {
            "type": "web_extractor"
        }
    ]
}'

関数呼び出し

from openai import OpenAI
import json
import os
import random

# クライアントを初期化します。
client = OpenAI(
    # 環境変数が設定されていない場合は、次のように置き換えます: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
# ユーザーの質問をシミュレートします。
USER_QUESTION = "北京の天気はどうですか?"
# ツールのリストを定義します。
tools = [
    {
        "type": "function",
        "name": "get_current_weather",
        "description": "特定の都市の天気を取得するのに役立ちます。",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "北京や杭州などの都市または地区。",
                }
            },
            "required": ["location"],
        },
    }
]

# 天気クエリツールをシミュレートします。
def get_current_weather(arguments):
    weather_conditions = ["sunny", "cloudy", "rainy"]
    random_weather = random.choice(weather_conditions)
    location = arguments["location"]
    return f"今日の {location} は {random_weather} です。"

# モデルのレスポンス関数をラップします。
def get_response(input_data):
    response = client.responses.create(
        model="qwen3.8-max",
        input=input_data,
        tools=tools,
    )
    return response

# 対話のコンテキストを維持します。
conversation = [{"role": "user", "content": USER_QUESTION}]

response = get_response(conversation)
function_calls = [item for item in response.output if item.type == "function_call"]
# ツール呼び出しが必要ない場合は、コンテンツを直接出力します。
if not function_calls:
    print(f"最終的なアシスタントのレスポンス: {response.output_text}")
else:
    # ツール呼び出しループに入ります。
    while function_calls:
        for fc in function_calls:
            func_name = fc.name
            arguments = json.loads(fc.arguments)
            print(f"ツール [{func_name}] を引数で呼び出し中: {arguments}")
            # ツールを実行します。
            tool_result = get_current_weather(arguments)
            print(f"ツールが返した結果: {tool_result}")
            # ツール呼び出しとその結果をペアとしてコンテキストに追加します。
            conversation.append(
                {
                    "type": "function_call",
                    "name": fc.name,
                    "arguments": fc.arguments,
                    "call_id": fc.call_id,
                }
            )
            conversation.append(
                {
                    "type": "function_call_output",
                    "call_id": fc.call_id,
                    "output": tool_result,
                }
            )
        # 完全なコンテキストでモデルを再度呼び出します。
        response = get_response(conversation)
        function_calls = [
            item for item in response.output if item.type == "function_call"
        ]
    print(f"最終的なアシスタントのレスポンス: {response.output_text}")
import OpenAI from "openai";

// クライアントを初期化します。
const openai = new OpenAI({
  // 環境変数が設定されていない場合は、次のように置き換えます: apiKey: "sk-xxx"
  apiKey: process.env.DASHSCOPE_API_KEY,
  // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
  baseURL:
    "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});

// ツールのリストを定義します。
const tools = [
  {
    type: "function",
    name: "get_current_weather",
    description: "特定の都市の天気を取得するのに役立ちます。",
    parameters: {
      type: "object",
      properties: {
        location: {
          type: "string",
          description: "北京や杭州などの都市または地区。",
        },
      },
      required: ["location"],
    },
  },
];

// 天気クエリツールをシミュレートします。
const getCurrentWeather = (args) => {
  const weatherConditions = ["sunny", "cloudy", "rainy"];
  const randomWeather =
    weatherConditions[Math.floor(Math.random() * weatherConditions.length)];
  const location = args.location;
  return `今日の ${location} は ${randomWeather} です。`;
};

// モデルのレスポンス関数をラップします。
const getResponse = async (inputData) => {
  const response = await openai.responses.create({
    model: "qwen3.8-max",
    input: inputData,
    tools: tools,
  });
  return response;
};

const main = async () => {
  const userQuestion = "北京の天気はどうですか?";

  // 対話のコンテキストを維持します。
  const conversation = [{ role: "user", content: userQuestion }];

  let response = await getResponse(conversation);
  let functionCalls = response.output.filter(
    (item) => item.type === "function_call"
  );
  // ツール呼び出しが必要ない場合は、コンテンツを直接出力します。
  if (functionCalls.length === 0) {
    console.log(`最終的なアシスタントのレスポンス: ${response.output_text}`);
  } else {
    // ツール呼び出しループに入ります。
    while (functionCalls.length > 0) {
      for (const fc of functionCalls) {
        const funcName = fc.name;
        const args = JSON.parse(fc.arguments);
        console.log(`ツール [${funcName}] を引数で呼び出し中:`, args);
        // ツールを実行します。
        const toolResult = getCurrentWeather(args);
        console.log(`ツールが返した結果: ${toolResult}`);
        // ツール呼び出しとその結果をペアとしてコンテキストに追加します。
        conversation.push({
          type: "function_call",
          name: fc.name,
          arguments: fc.arguments,
          call_id: fc.call_id,
        });
        conversation.push({
          type: "function_call_output",
          call_id: fc.call_id,
          output: toolResult,
        });
      }
      // 完全なコンテキストでモデルを再度呼び出します。
      response = await getResponse(conversation);
      functionCalls = response.output.filter(
        (item) => item.type === "function_call"
      );
    }
    console.log(`最終的なアシスタントのレスポンス: ${response.output_text}`);
  }
};

// プログラムを開始します。
main().catch(console.error);

ドキュメント理解

import os
from openai import OpenAI

client = OpenAI(
    # 環境変数を設定していない場合は、次の行を次のように置き換えます: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)

response = client.responses.create(
    model="qwen3.5-ocr",
    input=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_file",
                    "file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf",
                },
                {
                    "type": "input_text",
                    "text": "ファイル内のすべてのテキストを読み取ってください。",
                },
            ],
        }
    ],
    extra_body={
        "ocr_options": {"task": "document_parsing"}
    },
)

print(response.output_text)
import OpenAI from 'openai';

const client = new OpenAI({
    // 環境変数を設定していない場合は、次の行を次のように置き換えます: apiKey: "sk-xxx"
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
});

async function main() {
    const response = await client.responses.create({
        model: "qwen3.5-ocr",
        input: [{
            role: "user",
            content: [{
                type: "input_file",
                file_url: "https://example.com/your-document.pdf"
            }]
        }],
        ocr_options: { task: "document_parsing" }
    });

    // カスタムタスクの結果を取得
    console.log(response.output[0].content[0].ocr_result);
}

main();
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-ocr",
    "input": [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_file",
                    "file_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260616/qmycjl/1506.02640v5.pdf"
                },
                {
                    "type": "input_text",
                    "text": "ファイル内のすべてのテキストを読み取ってください。"
                }
            ]
        }
    ],
    "ocr_options": {"task": "document_parsing"}
}'

セッションキャッシュ

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    # default_headers を介してセッションキャッシュを有効にします。
    default_headers={"x-dashscope-session-cache": "enable"}
)

# キャッシュ作成をトリガーするために 1024 トークンを超える長いテキストを構築します。
# そうでない場合、キャッシュは累積コンテキストが 1024 トークンを超えたときにトリガーされます。
long_context = "人工知能 (AI) は、人間の知能をシミュレート、拡張、拡大できる理論、方法、技術、および応用システムを研究開発することに専念するコンピュータサイエンスの主要な分野です。" * 50

# 最初のターン
response1 = client.responses.create(
    model="qwen3.8-max",
    input=long_context + "\n\nこのコンテキストに基づいて、機械学習におけるランダムフォレストアルゴリズムを簡単に紹介してください。",
)
print(f"最初のレスポンス: {response1.output_text}")

# 2番目のターン: previous_response_id を使用してコンテキストをリンクします。キャッシュはサーバーによって自動的に処理されます。
response2 = client.responses.create(
    model="qwen3.8-max",
    input="それと GBDT の主な違いは何ですか?",
    extra_body={"previous_response_id": response1.id}
)
print(f"2番目のレスポンス: {response2.output_text}")

# キャッシュヒットステータスを確認します。
usage = response2.usage
print(f"入力トークン数: {usage.input_tokens}")
print(f"キャッシュされたトークン数: {usage.prompt_tokens_details.cached_tokens}")
import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // {WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    // defaultHeaders を介してセッションキャッシュを有効にします。
    defaultHeaders: {"x-dashscope-session-cache": "enable"}
});

// キャッシュ作成をトリガーするために 1024 トークンを超える長いテキストを構築します。
// そうでない場合、キャッシュは累積コンテキストが 1024 トークンを超えたときにトリガーされます。
const longContext = "人工知能 (AI) は、人間の知能をシミュレート、拡張、拡大できる理論、方法、技術、および応用システムを研究開発することに専念するコンピュータサイエンスの主要な分野です。".repeat(50);

async function main() {
    // 最初のターン
    const response1 = await openai.responses.create({
        model: "qwen3.8-max",
        input: longContext + "\n\nこのコンテキストに基づいて、機械学習におけるランダムフォレストアルゴリズムを、その基本原則と応用を含めて簡単に紹介してください。"
    });
    console.log(`最初のレスポンス: ${response1.output_text}`);

    // 2番目のターン: previous_response_id を使用してコンテキストをリンクします。キャッシュはサーバーによって自動的に処理されます。
    const response2 = await openai.responses.create({
        model: "qwen3.8-max",
        input: "それと GBDT の主な違いは何ですか?",
        extra_body: { previous_response_id: response1.id }
    } as any);
    console.log(`2番目のレスポンス: ${response2.output_text}`);

    // キャッシュヒットステータスを確認します。
    console.log(`入力トークン数: ${response2.usage.input_tokens}`);
    console.log(`キャッシュされたトークン数: ${response2.usage.prompt_tokens_details.cached_tokens}`);
}

main();
# 最初のターン
# 長いテキストを 50 回繰り返し、1024 トークンを超えてキャッシュ作成をトリガーするようにします。
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "x-dashscope-session-cache: enable" \
-d '{
    "model": "qwen3.8-max",
    "input": "人工知能 (AI) はコンピュータサイエンスの主要な分野です..."
}'

# 2番目のターン - 前のレスポンスの ID を previous_response_id として使用します。
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "x-dashscope-session-cache: enable" \
-d '{
    "model": "qwen3.8-max",
    "input": "それと GBDT の主な違いは何ですか?",
    "previous_response_id": ""
}'

キャッシュヒットメカニズム:セッションキャッシュはシステムプロンプトのプレフィックスでマッチングします。後続のリクエストのシステムプロンプトがキャッシュされたコンテンツと同一である場合、キャッシュにヒットします。ユーザープロンプトを変更してもキャッシュヒットには影響しません。キャッシュがヒットしたかどうかを確認するには、レスポンスの usage.input_tokens_details.cached_tokens を確認します。値が 0 より大きい場合はキャッシュヒットを示します。

レスポンスオブジェクト (非ストリーミング出力)

id string

このレスポンスの一意の識別子、UUID。この ID は 7 日間有効で、previous_response_id パラメーターで使用してマルチターン対話を作成できます。

created_at integer

このリクエストの UNIX タイムスタンプ (秒単位)。

object string

オブジェクトタイプ。常に response です。

status string

レスポンス生成のステータス。有効な値:

  • completed:生成が完了しました。
  • failed:生成に失敗しました。
  • in_progress:生成中です。
  • cancelled:生成がキャンセルされました。
  • queued:リクエストがキューに入れられました。
  • incomplete:生成が不完全です。

model string

レスポンスの生成に使用されたモデルの ID。

output array

モデルによって生成された出力アイテムの配列。配列内の要素のタイプと順序は、モデルのレスポンスによって異なります。

配列要素のプロパティ

type string

出力アイテムのタイプ。有効な値:

  • message:モデルの最終的なレスポンスコンテンツを含むメッセージアイテム。
  • reasoning:推論タイプ。このパラメーターは、reasoning.effortnone 以外の値に設定されている場合、または推論モードが有効になっている場合に返されます。推論トークンは output_tokens_details.reasoning_tokens でカウントされ、推論トークンとして課金されます。
  • function_call:関数呼び出しタイプ。これは、カスタム function ツールが使用されたときに返されます。関数呼び出しを処理し、結果を返します。
  • web_search_call:検索呼び出しタイプ。これは、web_search ツールが使用されたときに返されます。
  • code_interpreter_callcode_interpreter ツールが使用されたときに返されるコード実行タイプ。
  • web_extractor_call:Web 抽出タイプ。これは、web_extractor ツールが使用されたときに返されます。web_search ツールと一緒に使用する必要があります。
  • web_search_image_call:テキストによる画像検索の呼び出しタイプ。これは、web_search_image ツールを使用するときに返されます。見つかった画像のリストが含まれています。
  • image_search_call:Image-to-Image 検索の呼び出しタイプ。これは、image_search ツールが使用されたときに返されます。類似画像のリストが含まれています。
  • mcp_call:MCP 呼び出しタイプ。これは、mcp ツールを使用するときに返されます。MCP サービス呼び出しの結果が含まれています。
  • file_search_call:ナレッジベース検索の呼び出しタイプ。これは、file_search ツールを使用するときに返されます。ナレッジベースの取得クエリと結果が含まれています。

id string

出力アイテムの一意の識別子。すべてのタイプの出力アイテムにこのフィールドが含まれています。

role string

メッセージのロールは常に assistant です。このパラメーターは、typemessage の場合にのみ存在します。

status string

出力アイテムのステータス。有効な値:completedin_progress。このパラメーターは、type パラメーターが reasoning に設定されていない場合に存在します。

name string

ツールまたは関数の名前。このパラメーターは、typefunction_callweb_search_image_callimage_search_call、または mcp_call の場合に存在します。

web_search_image_callimage_search_call の場合、値はそれぞれ "web_search_image""image_search" に固定されています。

mcp_call の場合、値は MCP サービスで呼び出された特定の関数の名前です (例:amap-maps-maps_geo)。

arguments string

ツール呼び出しのパラメーター (JSON 文字列形式)。このパラメーターは、typefunction_callweb_search_image_callimage_search_call、または mcp_call の場合に存在します。使用する前に JSON.parse() を使用して文字列を解析します。さまざまなツールタイプの引数の内容は次のとおりです:

  • web_search_image_call{"queries": ["検索キーワード 1", "検索キーワード 2"]}queries は、ユーザー入力に基づいてモデルが自動的に生成した検索キーワードのリストです。
  • image_search_call{"img_idx": 0, "bbox": [0, 0, 1000, 1000]}img_idx は入力画像のインデックス (0 から始まる)、bbox は検索領域のバウンディングボックス座標 [x1, y1, x2, y2] です。座標値の範囲は 0 から 1000 です。
  • function_call:ユーザー定義の関数パラメーター スキーマから生成されたパラメーターオブジェクト。
  • mcp_call:MCP サービスで呼び出された関数のパラメーターオブジェクト。

call_id string

関数呼び出しの一意の ID。このパラメーターは、typefunction_call の場合にのみ含まれます。この ID は、リクエストをレスポンスにリンクするために、関数呼び出しの結果に含める必要があります。

content array

メッセージコンテンツの配列。このパラメーターは、typemessage に設定されている場合にのみ存在します。

配列要素のプロパティ

type string

コンテンツタイプ。値は output_text に固定されています。

text string

モデルによって生成されたテキストコンテンツ。

annotations array

テキストアノテーションの配列。通常は空の配列です。

summary array

推論のまとめの配列。このフィールドは、typereasoning の場合にのみ存在します。各要素には type フィールド (値:summary_text) と text フィールド (まとめテキスト) が含まれます。

action object

検索アクションに関する情報。このパラメーターは、typeweb_search_call の場合にのみ存在します。

プロパティ

query string

検索クエリのキーワード。

type string

検索タイプ。値は常に search です。

sources array

検索ソースのリスト。各要素には typeurl フィールドが含まれます。

code string

モデルによって生成および実行されたコード。これは、typecode_interpreter_call の場合にのみ存在します。

outputs array

コード実行の出力配列。これは、typecode_interpreter_call の場合にのみ存在します。各要素には type フィールド (値は logs) と logs フィールド (コード実行ログ) があります。

container_id string

コードインタープリターのコンテナ識別子。このパラメーターは、typecode_interpreter_call の場合にのみ存在します。この識別子は、同じセッション内の複数のコード実行を関連付けます。

goal string

Web ページから抽出する情報の説明。このパラメーターは、typeweb_extractor_call の場合にのみ使用できます。

output string

ツール呼び出しの出力。出力は文字列です。

  • typeweb_extractor_call の場合、これは Web ページから抽出されたコンテンツのまとめです。
  • typeweb_search_image_call または image_search_call の場合、これは画像検索結果の配列を含む JSON 文字列です。各要素には titleurl、および index フィールドが含まれます。
  • typemcp_call の場合、これは MCP サービスから返された JSON 文字列の結果です。

urls array

抽出された Web ページの URL のリスト。このパラメーターは、typeweb_extractor_call の場合にのみ使用できます。

server_label string

MCP サービスのラベル。これは、typemcp_call の場合にのみ表示されます。どの MCP サービスが呼び出しに使用されたかを示します。

queries array

ナレッジベース取得のためのクエリのリスト。このパラメーターは、typefile_search_call の場合にのみ存在します。配列には文字列が含まれます。各文字列は、モデルによって生成された検索クエリです。

results array

ナレッジベースからの検索結果の配列。このパラメーターは、typefile_search_call の場合にのみ存在します。

配列要素のプロパティ

file_id string

一致したドキュメントのファイル ID。

filename string

一致したドキュメントのファイル名。

score float

一致の関連性スコア。値の範囲は 0 から 1 です。値が大きいほど関連性が高くなります。

text string

一致したドキュメントからのコンテンツスニペット。

usage object

このリクエストのトークン消費量に関する情報。

プロパティ

input_tokens integer

入力のトークン数。追加の注意事項

output_tokens integer

モデルの出力のトークン数。

total_tokens integer

消費された合計トークン数は、input_tokensoutput_tokens の合計です。

input_tokens_details object

入力トークンの詳細な分類。

プロパティ

cached_tokens integer

キャッシュにヒットしたトークン数。詳細については、「コンテキストキャッシュ」をご参照ください。

output_tokens_details object

出力トークンの詳細な内訳。

プロパティ

reasoning_tokens integer

推論トークンの数。

x_details array

リクエストの請求明細の配列。これは、トップレベルの usage フィールドよりも詳細なマルチモーダルトークンの内訳を提供します。

プロパティ

input_tokens integer

入力のトークン数。追加の注意事項

output_tokens integer

モデルの出力のトークン数。

total_tokens integer

消費された合計トークン数は、input_tokensoutput_tokens の合計です。

x_billing_type string

値は response_api に固定されています。

image_tokens integer

画像入力のトークン数。このフィールドは、入力に画像が含まれている場合に返され、input_tokens_details.image_tokens と同等です。

input_tokens_details object

入力トークンの詳細な内訳。このフィールドはマルチモーダル入力に対して返されます。現在、text_tokensimage_tokens のみを区別します。ビデオまたはオーディオトークンの内訳は提供しません。

プロパティ

text_tokens integer

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

image_tokens integer

画像入力のトークン数。

output_tokens_details object

出力トークンの詳細な内訳。このフィールドには、トップレベルの output_tokens_details と比較して、追加の text_tokens フィールドがあります。text_tokens フィールドはマルチモーダル入力に対して返されます。

プロパティ

reasoning_tokens integer

推論プロセスのトークン数。

text_tokens integer

テキスト出力のトークン数。このフィールドはマルチモーダル入力に対して返されます。

plugins object

組み込みツール呼び出しの統計。このフィールドは、web_search などの組み込みツールが使用されたときに返されます。その内容は、トップレベルの x_tools フィールドと同じです。

プロパティ

web_search object

Web 検索呼び出しの統計。

プロパティ

count integer

このレスポンスで Web 検索が呼び出された回数。

prompt_tokens_details object

入力トークンのキャッシュ詳細。このフィールドは、セッションキャッシュが有効になっている場合に返されます。入力に画像が含まれているがキャッシュミスになった場合、空のオブジェクトを返すことがあります。

プロパティ

cached_tokens integer

キャッシュにヒットしたトークン数。

cache_creation_input_tokens integer

このリクエストで新しいキャッシュを作成するために使用されたトークン数。

cache_creation object

キャッシュ作成に関する詳細。

プロパティ

ephemeral_5m_input_tokens integer

新しい 5 分間のエフェメラルキャッシュを作成するために使用されたトークン数。

cache_type string

キャッシュタイプ。値は ephemeral に固定されています。

x_tools object

ツール使用状況に関する統計。これには、各組み込みツールが呼び出された回数が含まれます。

例:{"web_search": {"count": 1}}

error object

モデルがレスポンスを生成できなかった場合にエラーオブジェクトが返されます。それ以外の場合、値は null です。

tools array

リクエストからの tools パラメーターの完全な内容をエコーします。リクエストボディの tools パラメーターと同じ構造です。

tool_choice string

リクエストの tool_choice パラメーターの値をエコーします。有効な値は autonone、および required です。

{
    "created_at": 1771165900.0,
    "id": "f75c28fb-4064-48ed-90da-4d2cc4362xxx",
    "model": "qwen3.8-max",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "こんにちは!私は Alibaba Cloud が開発した大規模言語モデル Qwen3.5 です。2026 年までの知識を持ち、複雑な推論、創造的なタスク、多言語での会話を支援するように設計されています。",
                    "type": "output_text"
                }
            ],
            "id": "msg_89ad23e6-f128-4d4c-b7a1-a786e7880xxx",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 57,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 44,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 101,
        "x_details": [
            {
                "input_tokens": 57,
                "output_tokens": 44,
                "total_tokens": 101,
                "x_billing_type": "response_api"
            }
        ]
    }
}

レスポンスチャンクオブジェクト (ストリーミング出力)

ストリーミング出力は一連の JSON オブジェクトを返します。各オブジェクトには、イベントタイプを指定する type フィールドと、イベントの順序を示す sequence_number フィールドが含まれます。response.completed イベントはストリームの終わりを示します。

type string

イベントタイプ識別子。考えられる値は次のとおりです:

  • response.created:レスポンスが作成され、ステータスは queued です。
  • response.in_progress:レスポンスの処理が開始され、ステータスが in_progress に変わります。
  • response.output_item.added:新しい出力アイテム (例:メッセージまたは web_extractor_call) が出力配列に追加されます。item.typeweb_extractor_call の場合、これは Web 抽出ツール呼び出しの開始を示します。
  • response.content_part.added:新しいコンテンツパートが、出力アイテムの content 配列に追加されます。
  • response.output_text.delta:増分テキストセグメントが生成されます。このイベントは複数回トリガーされ、delta フィield には新しいテキストセグメントが含まれます。
  • response.output_text.done:コンテンツパートのテキスト生成が完了しました。text フィールドには完全なテキストが含まれます。
  • response.content_part.done:コンテンツパートが完了しました。part オブジェクトには完全なコンテンツパートが含まれます。
  • response.output_item.done:出力アイテムが完了しました。item オブジェクトには完全な出力アイテムが含まれます。item.typeweb_extractor_call の場合、これは Web 抽出ツール呼び出しの完了を示します。
  • response.reasoning_text.delta:(推論モードで) 推論のまとめに対する増分更新を提供します。delta フィールドには新しいセグメントが含まれます。
  • response.reasoning_text.done:(推論モードで) 推論のまとめが完了しました。text フィールドには完全なまとめが含まれます。
  • response.custom_tool_call_input.delta:カスタムツール呼び出し入力に対する増分更新を提供します。delta フィールドには新しく生成されたセグメントが含まれます。
  • response.custom_tool_call_input.done:カスタムツール呼び出し入力が完了しました。input フィールドには完全な入力が含まれます。
  • response.web_search_call.in_progress / searching / completed:web_search ツールが使用されたときの検索ステータスの変更を示すイベント。
  • response.code_interpreter_call.in_progress / interpreting / completed:コード実行ステータスの変更に関するイベント (code_interpreter ツールを使用する場合)。
  • 注:web_extractor ツールには専用のイベントタイプ識別子がありません。そのツール呼び出しは、一般的な response.output_item.added および response.output_item.done イベントを介して渡され、item.type フィールドの値が web_extractor_call であることで識別されます。
  • response.mcp_call_arguments.delta / response.mcp_call_arguments.done:これらのイベントは、MCP 呼び出し引数の差分と完了ステータスを提供します。
  • response.mcp_call.in_progress:MCP サービス呼び出しが進行中です。
  • response.mcp_call.completed:MCP サービス呼び出しが完了しました。
  • response.file_search_call.in_progress / searching / completed:ナレッジベース検索のステータス変更イベント (file_search ツールを使用する場合)。
  • 注:web_search_image および image_search ツールを使用する場合、専用の中間状態イベントはありません。ツール呼び出しは、response.output_item.added (呼び出し開始) および response.output_item.done (呼び出し完了) イベントを介して伝達されます。
  • response.completed:レスポンスの生成が完了しました。response オブジェクトには、使用量を含む完全なレスポンスが含まれます。このイベントはストリームの終わりを示します。
  • response.incompletemax_output_tokens などの制限により、レスポンスが早期に終了しました。

sequence_number integer

イベントのシーケンス番号。0 から始まり、イベントごとにインクリメントされます。この番号を使用して、イベントを正しい順序で処理します。

response object

response.createdresponse.in_progress、および response.completed イベントに表示されるレスポンスオブジェクト。response.completed イベントでは、完全なレスポンスデータ (outputusage を含む) が含まれ、その構造は非ストリーミングのレスポンスオブジェクトと同じです。

item object

出力アイテムオブジェクト。response.output_item.added および response.output_item.done イベントに表示されます。added イベントでは、content が空の配列である初期スケルトンです。done イベントでは、完全なオブジェクトです。

プロパティ

id string

出力アイテムの一意の識別子 (例:msg_xxx)。

type string

出力アイテムのタイプ。考えられる値:messagereasoningweb_search_callweb_search_image_call (テキストによる画像検索)、image_search_call (Image-to-Image 検索)、mcp_call (MCP 呼び出し)、file_search_call (ナレッジベース検索)。

role string

メッセージのロール。常に assistant です。typemessage の場合にのみ存在します。

status string

生成ステータス。added イベントではステータスは in_progress であり、done イベントでは completed です。

content array

メッセージコンテンツの配列。added イベントでは、配列は空 [] です。done イベントでは、part オブジェクトと同じ構造を持つ完全なコンテンツパートオブジェクトが含まれます。

part object

コンテンツパートオブジェクト。response.content_part.added および response.content_part.done イベントに表示されます。

プロパティ

type string

コンテンツパートのタイプ。常に output_text です。

text string

テキストコンテンツ。これは added イベントでは空の文字列であり、done イベントでは完全なテキストです。

annotations array

テキストアノテーションの配列。通常は空の配列です。

logprobs object | null

トークンのログ確率。このフィールドは現在、常に null を返します。

delta string

増分テキストセグメント。このフィールドは response.output_text.delta イベントに表示され、新しく追加されたテキストセグメントが含まれます。すべての delta 値を連結して、完全なテキストを再構築します。

text string

完全なテキストコンテンツ。このフィールドは response.output_text.done イベントに表示されます。これを使用して、delta フラグメントから再構築されたテキストを検証できます。

item_id string

出力アイテムの一意の識別子。この ID を使用して、同じアイテムに属するイベントを関連付けます。

output_index integer

output 配列内の出力アイテムのインデックス。

content_index integer

content 配列内のコンテンツパートのインデックス。

// response.created: レスポンスが作成され、キューに入れられます。
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"object":"response","status":"queued",...},"sequence_number":0,"type":"response.created"}

// response.in_progress: 処理が開始されます。
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","status":"in_progress",...},"sequence_number":1,"type":"response.in_progress"}

// response.output_item.added: 新しい出力アイテムが追加されます。
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[],"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"}

// response.content_part.added: 新しいコンテンツパートが追加されます。
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"","type":"output_text","logprobs":null},"sequence_number":3,"type":"response.content_part.added"}

// response.output_text.delta: 増分テキスト (複数回トリガーされる可能性があります)。
{"content_index":0,"delta":"人工知能","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"}
{"content_index":0,"delta":" (AI) は、コンピュータシステムが人間の知的行動をシミュレートできるようにする技術と科学を指します","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"}

// response.output_text.done: コンテンツパートのテキスト生成が完了しました。
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":53,"text":"人工知能 (AI) は、コンピュータシステムが人間の知的行動をシミュレートできるようにする技術と科学を指します...","type":"response.output_text.done"}

// response.content_part.done: コンテンツパートが完了しました。
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"...全文...","type":"output_text","logprobs":null},"sequence_number":54,"type":"response.content_part.done"}

// response.output_item.done: 出力アイテムが完了しました。
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[{"annotations":[],"text":"...全文...","type":"output_text","logprobs":null}],"role":"assistant","status":"completed","type":"message"},"output_index":0,"sequence_number":55,"type":"response.output_item.done"}

// response.completed: レスポンスが完了しました (完全なレスポンスと使用量を含む)。
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"model":"qwen3.7-max","object":"response","output":[...],"status":"completed","usage":{"input_tokens":37,"output_tokens":243,"total_tokens":280,...}},"sequence_number":56,"type":"response.completed"}
id:1
event:response.created
:HTTP_STATUS/200
data:{"sequence_number":0,"type":"response.created","response":{"output":[],"parallel_tool_calls":false,"created_at":1769435906,"tool_choice":"auto","model":"","id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","tools":[],"object":"response","status":"queued"}}

id:2
event:response.in_progress
:HTTP_STATUS/200
data:{"sequence_number":1,"type":"response.in_progress","response":{"output":[],"parallel_tool_calls":false,"created_at":1769435906,"tool_choice":"auto","model":"","id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","tools":[],"object":"response","status":"in_progress"}}

id:3
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":2,"item":{"summary":[],"type":"reasoning","id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"},"output_index":0,"type":"response.output_item.added"}

id:4
event:response.reasoning_text.delta
:HTTP_STATUS/200
data:{"delta":"ユーザーは私に次のことを望んでいます:\n1. Alibaba Cloud の公式サイトを検索する。\n2. ホームページから主要な情報を抽出する。\n\nまず Alibaba Cloud の公式サイトの URL を検索し、次に web_extractor ツールを使用してウェブサイトにアクセスし、主要な情報を抽出する必要があります。","sequence_number":3,"output_index":0,"type":"response.reasoning_text.delta","item_id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"}

id:14
event:response.reasoning_text.done
:HTTP_STATUS/200
data:{"sequence_number":13,"text":"ユーザーは私に次のことを望んでいます:\n1. Alibaba Cloud の公式サイトを検索する。\n2. ホームページから主要な情報を抽出する。\n\nまず Alibaba Cloud の公式サイトの URL を検索し、次に web_extractor ツールを使用してウェブサイトにアクセスし、主要な情報を抽出する必要があります。","output_index":0,"type":"response.reasoning_text.done","item_id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"}

id:15
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":14,"item":{"summary":[{"type":"summary_text","text":"ユーザーは私に次のことを望んでいます:\n1. Alibaba Cloud の公式サイトを検索する。\n2. ホームページから主要な情報を抽出する。\n\nまず Alibaba Cloud の公式サイトの URL を検索し、次に web_extractor ツールを使用してウェブサイトにアクセスし、主要な情報を抽出する必要があります。"}],"type":"reasoning","id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"},"output_index":1,"type":"response.output_item.done"}

id:16
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":15,"item":{"action":{"type":"search","query":"Web search"},"id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx","type":"web_search_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

id:17
event:response.web_search_call.in_progress
:HTTP_STATUS/200
data:{"sequence_number":16,"output_index":1,"type":"response.web_search_call.in_progress","item_id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx"}

id:19
event:response.web_search_call.completed
:HTTP_STATUS/200
data:{"sequence_number":18,"output_index":1,"type":"response.web_search_call.completed","item_id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx"}

id:20
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":19,"item":{"action":{"sources":[{"type":"url","url":"https://cn.aliyun.com/"},{"type":"url","url":"https://www.aliyun.com/"}],"type":"search","query":"Web search"},"id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx","type":"web_search_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

id:33
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":32,"item":{"urls":["https://cn.aliyun.com/"],"goal":"Alibaba Cloud のホームページから、会社のポジショニング/概要、コア製品とサービス、主要な事業セグメント、主要な機能/ソリューション、最新ニュース/イベント、無料トライアル/割引情報、ナビゲーションメニュー構造を含む主要な情報を抽出する。","id":"msg_8c2cf651-48a5-460c-aa7a-bea5b09b4xxx","type":"web_extractor_call","status":"in_progress"},"output_index":3,"type":"response.output_item.added"}

id:34
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":33,"item":{"output":"https://cn.aliyun.com/ の有用な情報は、ユーザーの目標「Alibaba Cloud のホームページから、会社のポジショニング/概要、コア製品とサービス、主要な事業セグメント、主要な機能/ソリューション、最新ニュース/イベント、無料トライアル/割引情報、ナビゲーションメニュー構造を含む主要な情報を抽出する」に対して次のとおりです:\n\nページ内の証拠:\n## 通義大規模モデル、AI 時代の企業の最初の選択肢\n\n## 完全な製品システム、企業の技術革新のためのクラウドを構築\n\nすべてのクラウド製品## 大規模モデルとクラウドコンピューティングの相乗効果による AI の利用しやすさ\n\nすべての AI ソリューション\n\nまとめ:\nAlibaba Cloud は、通義大規模モデルを中心とした主要な企業向け AI ソリューションプロバイダーとして位置づけられています...","urls":["https://cn.aliyun.com/"],"goal":"Alibaba Cloud のホームページから、会社のポジショニング/概要、コア製品とサービス、主要な事業セグメント、主要な機能/ソリューション、最新ニュース/イベント、無料トライアル/割引情報、ナビゲーションメニュー構造を含む主要な情報を抽出する。","id":"msg_8c2cf651-48a5-460c-aa7a-bea5b09b4xxx","type":"web_extractor_call","status":"completed"},"output_index":3,"type":"response.output_item.done"}

id:50
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":50,"item":{"content":[{"type":"text","text":""}],"type":"message","id":"msg_final","role":"assistant"},"output_index":5,"type":"response.output_item.added"}

id:51
event:response.output_text.delta
:HTTP_STATUS/200
data:{"delta":"Alibaba Cloud のウェブサイトを見つけ、そのホームページから主要な情報を抽出しました:\n\n","sequence_number":51,"output_index":5,"type":"response.output_text.delta"}

id:60
event:response.completed
:HTTP_STATUS/200
data:{"type":"response.completed","response":{"id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","status":"completed","usage":{"input_tokens":45,"output_tokens":320,"total_tokens":365}}}
// 1. response.created: レスポンスが作成されます。
id:1
event:response.created
data:{"sequence_number":0,"type":"response.created","response":{"output":[],"status":"queued",...}}

// 2. response.in_progress: レスポンスが処理中です。
id:2
event:response.in_progress
data:{"sequence_number":1,"type":"response.in_progress","response":{"status":"in_progress",...}}

// 3. response.output_item.added: 推論が開始されます。
id:3
event:response.output_item.added
data:{"sequence_number":2,"item":{"summary":[],"type":"reasoning","id":"msg_xxx"},"output_index":0,"type":"response.output_item.added"}

// 4. response.reasoning_text.delta: 推論のまとめの差分。
id:4
event:response.reasoning_text.delta
data:{"delta":"ユーザーは猫の写真を見つけたいようです。web_search_image ツールを使って検索する必要があります...","sequence_number":3,"output_index":0,"type":"response.reasoning_text.delta","item_id":"msg_xxx"}

// 5. response.reasoning_text.done: 推論のまとめが完了しました。
id:10
event:response.reasoning_text.done
data:{"sequence_number":9,"text":"ユーザーは猫の写真を見つけたいようです。web_search_image ツールを使って猫の写真を検索する必要があります。","output_index":0,"type":"response.reasoning_text.done","item_id":"msg_xxx"}

// 6. response.output_item.done: 推論アイテムが完了しました。
id:11
event:response.output_item.done
data:{"sequence_number":10,"item":{"summary":[{"type":"summary_text","text":"..."}],"type":"reasoning","id":"msg_xxx"},"output_index":0,"type":"response.output_item.done"}

// 7. response.output_item.added: テキストによる画像検索ツールの呼び出しが開始されます (status: in_progress; name と arguments を含む)。
id:12
event:response.output_item.added
data:{"sequence_number":11,"item":{"name":"web_search_image","arguments":"{\"queries\": [\"cat pictures\", \"cute cat\"]}","id":"msg_xxx","type":"web_search_image_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.output_item.done: テキストによる画像検索ツールの呼び出しが完了しました (完全な 'output' 検索結果を含む)。
id:13
event:response.output_item.done
data:{"sequence_number":12,"item":{"name":"web_search_image","output":"[{\"title\": \"かわいい子猫...\", \"url\": \"https://example.com/cat.jpg\", \"index\": 1}, ...]","arguments":"{\"queries\": [\"cat pictures\", \"cute cat\"]}","id":"msg_xxx","type":"web_search_image_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 9-12. 後続の推論とメッセージ出力イベントが続きます。これは基本的な呼び出しフローと同様です。
// response.output_item.added (reasoning) → reasoning_summary_text.delta/done → response.output_item.done (reasoning)
// response.output_item.added (message) → response.content_part.added → response.output_text.delta → response.output_text.done → response.content_part.done → response.output_item.done (message)

// 13. response.completed: レスポンスが完了しました。
id:118
event:response.completed
data:{"sequence_number":117,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":7895,"output_tokens":318,"total_tokens":8213,"x_tools":{"web_search_image":{"count":1}}}}}
// 1-6. 推論フェーズは、テキストによる画像検索フローと同じです。

// 7. response.output_item.added: Image-to-Image 検索ツールの呼び出しが開始されます。
// 注:arguments には img_idx (画像インデックス) と bbox (バウンディングボックス) が含まれます。
id:29
event:response.output_item.added
data:{"sequence_number":29,"item":{"name":"image_search","arguments":"{\"img_idx\": 0, \"bbox\": [0, 0, 1000, 1000]}","id":"msg_xxx","type":"image_search_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.output_item.done: Image-to-Image 検索ツールの呼び出しが完了しました。
id:30
event:response.output_item.done
data:{"sequence_number":30,"item":{"name":"image_search","output":"[{\"title\": \"水墨画の山の背景...\", \"url\": \"https://example.com/landscape.jpg\", \"index\": 1}, ...]","arguments":"{\"img_idx\": 0, \"bbox\": [0, 0, 1000, 1000]}","id":"msg_xxx","type":"image_search_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 9-12. 2回目の推論 + 最終メッセージ出力 (基本的な呼び出しと同じ)。

// 13. response.completed
id:408
event:response.completed
data:{"sequence_number":407,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":8371,"output_tokens":417,"total_tokens":8788,"x_tools":{"image_search":{"count":1}}}}}
// 1-6. 推論フェーズ (他のツールと同じ)。

// 7. response.mcp_call_arguments.delta: MCP 引数の差分 (MCP 固有のイベント)。
id:27
event:response.mcp_call_arguments.delta
data:{"delta":"{\"city\": \"Beijing\"}","sequence_number":26,"output_index":1,"type":"response.mcp_call_arguments.delta","item_id":"msg_xxx"}

// 8. response.mcp_call_arguments.done: MCP 引数が完了しました (MCP 固有のイベント)。
id:28
event:response.mcp_call_arguments.done
data:{"sequence_number":27,"arguments":"{\"city\": \"Beijing\"}","output_index":1,"type":"response.mcp_call_arguments.done","item_id":"msg_xxx"}

// 9. response.output_item.added: MCP ツール呼び出しが開始されます (name、server_label、arguments を含む)。
id:29
event:response.output_item.added
data:{"sequence_number":28,"item":{"name":"amap-maps-maps_weather","server_label":"MCP Server","arguments":"{\"city\": \"Beijing\"}","id":"msg_xxx","type":"mcp_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 10. response.mcp_call.completed: MCP 呼び出しが完了しました (MCP 固有のイベント)。
id:30
event:response.mcp_call.completed
data:{"sequence_number":29,"output_index":1,"type":"response.mcp_call.completed","item_id":"msg_xxx"}

// 11. response.output_item.done: MCP 出力アイテムが完了しました (完全な 'output' を含む)。
id:31
event:response.output_item.done
data:{"sequence_number":30,"item":{"output":"{\"city\":\"Beijing\",\"forecasts\":[...]}","name":"amap-maps-maps_weather","server_label":"MCP Server","arguments":"{\"city\": \"Beijing\"}","id":"msg_xxx","type":"mcp_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 12-15. 2回目の推論 + 最終メッセージ出力。

// 16. response.completed
id:172
event:response.completed
data:{"sequence_number":171,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":5019,"output_tokens":539,"total_tokens":5558}}}
// 1-6. 推論フェーズ (他のツールと同じ)。

// 7. response.output_item.added: ナレッジベース検索が開始されます (クエリを含み、結果は含まない)。
id:19
event:response.output_item.added
data:{"sequence_number":18,"item":{"id":"msg_xxx","type":"file_search_call","queries":["Alibaba Cloud Model Studio X1 phone","Alibaba Cloud Model Studio X1 phone","Model Studio X1"],"status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.file_search_call.in_progress: 検索が進行中です (file_search 固有のイベント)。
id:20
event:response.file_search_call.in_progress
data:{"sequence_number":19,"output_index":1,"type":"response.file_search_call.in_progress","item_id":"msg_xxx"}

// 9. response.file_search_call.searching: 検索中 (file_search 固有のイベント)。
id:21
event:response.file_search_call.searching
data:{"sequence_number":20,"output_index":1,"type":"response.file_search_call.searching","item_id":"msg_xxx"}

// 10. response.file_search_call.completed: 検索が完了しました (file_search 固有のイベント)。
id:22
event:response.file_search_call.completed
data:{"sequence_number":21,"output_index":1,"type":"response.file_search_call.completed","item_id":"msg_xxx"}

// 11. response.output_item.done: クエリと結果を含む完全な出力アイテムを提供します。
id:23
event:response.output_item.done
data:{"sequence_number":22,"item":{"id":"msg_xxx","type":"file_search_call","queries":["Alibaba Cloud Model Studio X1 phone","Alibaba Cloud Model Studio X1 phone","Model Studio X1"],"results":[{"score":0.7519,"filename":"Alibaba Cloud Model Studio Series Phone Product Introduction","text":"Alibaba Cloud Model Studio X1 — 究極の視覚体験をお楽しみください...","file_id":"file_xxx"}],"status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 12-15. 2回目の推論 + 最終メッセージ出力。

// 16. response.completed
id:146
event:response.completed
data:{"sequence_number":145,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":1576,"output_tokens":722,"total_tokens":2298,"x_tools":{"file_search":{"count":1}}}}}

よくある質問

Q:マルチターン対話のコンテキストを渡すにはどうすればよいですか?

A:新しい対話リクエストを行う際に、モデルの前回の成功したレスポンスから得られる idprevious_response_id パラメーターとして渡します。

Q:レスポンスの例にある一部のフィールドがこのトピックで説明されていないのはなぜですか?

A:公式の OpenAI SDK は、OpenAI プロトコルで定義された追加のフィールドを出力することがあります。当社のサービスはこれらのフィールドをサポートしていないため、通常は null になります。このトピックで説明されているフィールドにのみ注目してください。