Skip to main content

Anthropic 互換 Messages

3つの設定を変更するだけで、既存の Anthropic アプリケーションを Model Studio に移行できます。このトピックでは、リクエストとレスポンスのパラメーターについて、コード例を交えて説明します。

既存の Anthropic アプリケーションを Model Studio に移行するには、以下の設定を変更します。
  • api_key:Model Studio API キーに置き換えます。
  • base_url :以下に示す Model Studio のエンドポイントに置き換えます。
  • model:qwen3.7-plus などのサポートされているモデル名に置き換えます。
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} はご利用のワークスペース ID で、Alibaba Cloud Model Studio コンソールの [ワークスペース詳細] ページで確認できます。既存のドメインも引き続き利用可能です。
  • シンガポール
  • 中国 (北京)
  • ドイツ (フランクフルト)
  • 米国 (バージニア)
  • 日本 (東京)
SDK base_url:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropicHTTP リクエスト URL:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages
{WorkspaceId} を実際のワークスペース ID に置き換えてください。 認証:x-api-key ヘッダーまたは Authorization: Bearer ヘッダーのいずれかでModel Studio API キーを渡します。

リクエストボディ

model string (必須)モデル名。サポートされているモデル:
Qwen-Max: qwen3.8-max, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08Qwen-Plus: 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, qwen-plus, qwen-plus-latestQwen-Flash: qwen3.8-flash, 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, qwen-flash, qwen-flash-2025-07-28Qwen-Coder: qwen3-coder-flashQwen-VL: qwen3-vl-plusQwen オープンソースモデル: qwen3.6-27b, qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3bサードパーティモデルdeepseek-v4-pro, deepseek-v4-flash-0731, kimi-k3.1-pro, kimi-k3, kimi-k2.7-code, kimi-k2.6, kimi-k2.5, glm-5.2, glm-5.1, glm-5, MiniMax-M2.5, deepseek-v4.1-flash-1017
max_tokens integer (必須)
  • deepseek-v4-pro, deepseek-v4-flash-0731, qwen3.8-max, qwen3.8-flash: max_tokens は、応答コンテンツと Chain-of-Thought コンテンツの両方の最大合計トークン数です。モデルの出力がこの値を超えると、生成は早期に停止し、stop_reason は max_tokens になります。
    max_tokens は、応答コンテンツと思考プロセスの合計の長さを制限します。拡張思考が有効な場合、max_tokens > thinking.budget_tokens
  • glm-5.2: thinking.budget_tokens パラメーターが渡されない場合、max_tokens は応答コンテンツと Chain-of-Thought コンテンツの両方の最大合計トークン数です。モデルの出力がこの値を超えると、生成は早期に停止し、stop_reason は max_tokens になります。thinking.budget_tokens パラメーターが渡される場合、max_tokens は応答コンテンツの最大トークン数のみであり、思考トークンは thinking.budget_tokens によって個別にコントロールされます。
  • その他のモデル:応答コンテンツの最大トークン数。生成されたコンテンツがこの値を超えると、生成は早期に停止し、stop_reason は max_tokens になります。
    max_tokens は思考プロセスの長さを制限しません。拡張思考が有効な場合、思考トークンは thinking.budget_tokens によって個別にコントロールされます。
system string or array (任意)モデルの動作を定義するシステムプロンプト。system はトップレベルパラメーターであり、messages 配列は system ロールを受け入れません。文字列は、単一の type="text" ブロックに相当します。プロンプトキャッシュのブレークポイントをマークするには、配列を渡します。
type string (必須)固定値:text。text string (必須)システムプロンプトのテキスト。cache_control object (任意)プロンプトキャッシュのブレークポイント。キャッシュヒット時、後続のリクエストはキャッシュ読み取りレートで請求されます。type のみを含み、ephemeral に固定されます。
messages array (必須)user と assistant のターンが交互に並んだメッセージ配列。
role string (必須)メッセージのロール。有効な値:user、assistant。content string or array (必須)プレーンテキスト文字列または構造化されたコンテンツ配列。文字列は、type="text" の単一の content ブロックに相当します。
Text
type string (必須)固定値:text。text string (必須)テキストコンテンツ。cache_control object (任意)プロンプトキャッシュのブレークポイント。type のみを含み、ephemeral に固定されます。
Image (Vision モデルが必要)
type string (必須)固定値:image。source object (必須)イメージデータのソース。
type string (必須)有効な値:url (パブリックイメージ URL)、base64 (Base64 エンコード)。url stringイメージのパブリック URL。type が url の場合に必須です。media_type stringイメージの MIME タイプ (例:image/jpeg)。type が base64 の場合に必須です。data stringBase64 エンコードされたイメージデータ。type が base64 の場合に必須です。
Video (Vision モデルが必要)
type string (必須)固定値:video。source object (必須)ビデオデータのソース。
type string (必須)有効な値:url (パブリックビデオ URL)、base64 (Base64 エンコード)。url stringビデオのパブリック URL。type が url の場合に必須です。media_type stringビデオの MIME タイプ (例:video/mp4)。type が base64 の場合に必須です。data stringBase64 エンコードされたビデオデータ。type が base64 の場合に必須です。
Tool use (assistant ロール、モデルによって返されるツール呼び出し命令)
type string (必須)固定値:tool_use。id string (必須)ツール呼び出しの一意の識別子。後続の tool_result で結果を関連付けるために使用されます。name string (必須)呼び出されたツールの名前。input object (必須)ツール呼び出しの入力パラメーター。構造は、tools 内の対応するツールの input_schema によって決定されます。cache_control object (任意)プロンプトキャッシュのブレークポイント。type のみを含み、ephemeral に固定されます。ツール呼び出しのコンテンツはキャッシュプレフィックスに含まれます。
Tool result (user ロール、モデルに返送されるツールの実行結果)
type string (必須)固定値:tool_result。tool_use_id string (必須)tool_use ブロックの id に対応します。content string (必須)ツールによって返されたコンテンツ。cache_control object (任意)プロンプトキャッシュのブレークポイント。type のみを含み、ephemeral に固定されています。
stream boolean (任意)ストリーミングを有効にするかどうか。デフォルト値:false。temperature number (任意)生成されるテキストの多様性をコントロールします。有効値:[0, 2)。値が大きいほど、よりランダムな結果が生成されます。
この有効値は、公式の Anthropic の有効値 [0.0, 1.0] とは異なります。Anthropic から移行する際は、このパラメーターの値を確認してください。
top_p number (任意)Nucleus サンプリングの確率しきい値。
temperature と top_p はどちらも生成されるテキストの多様性をコントロールできます。どちらか一方のみを設定することを推奨します。詳細については、「概要」をご参照ください。
top_k integer (任意)サンプリング中の候補セットのサイズ。stop_sequences array (任意)生成を停止させるトリガーとなるテキストシーケンス。出力は一致したシーケンスの前に終了します。
一致後、応答の stop_reason は end_turn のままであり、応答には一致したシーケンスは含まれません。
thinking object (任意)kimi-k3.1-pro はデフォルトで思考が有効です。拡張思考の構成。有効にすると、モデルは応答する前に推論を行い、応答には thinking タイプのコンテンツブロックが含まれます。すべてのモデルが思考モードをサポートしているわけではありません。このパラメーターが渡されない場合、思考が実行されるかどうかはモデルのデフォルトの動作で決まります:qwen3.8-max、qwen3.8-flash、deepseek-v4 シリーズ、glm シリーズ、kimi-k3.1-pro はデフォルトで思考が有効、kimi-k2.6 と kimi-k2.5 はデフォルトで思考が無効、kimi-k2.7-code と MiniMax-M2.5 は思考モードのみサポート (無効化できません)。各モデルの思考モードのサポート状況とデフォルト設定については、ディープシンキングをご参照ください。
type string (必須)有効な値:enabled (思考モードを有効にする)、disabled (思考モードを無効にする)。budget_tokens integer (任意)思考プロセスの最大トークン数。max_tokens との関係はモデルによって異なります。詳しくは max_tokens パラメーターの説明をご参照ください。予算が大きいほど、複雑な質問に対してより徹底的な分析が可能になります。type が enabled の場合に有効です。
tools array (任意)関数呼び出しのためのツール定義。
name string (必須)ツール名。description string (任意)ツール関数の説明。input_schema object (必須)ツール入力パラメーターの JSON スキーマ定義。
kimi-k3.1-pro (Alibaba Cloud Model Studio にデプロイ) は、北京、シンガポール、米国 (バージニア)、ドイツ (フランクフルト)、日本 (東京)、中国 (香港) で、web_search と web_fetch をサポートします。deepseek-v4.1-flash-1017 は、ウェブ検索ツール web_search とウェブ取得ツール web_fetch をサポートします。Anthropic 互換リクエストの要件と例については、ウェブ抽出をご参照ください。tool_choice object (任意)ツール選択戦略:
  • {"type": "auto"}:モデルがツールを呼び出すかどうかを決定します (デフォルト)。
  • {"type": "any"}:モデルにいずれかのツールを強制的に呼び出させます。
  • {"type": "none"}:モデルがツールを呼び出すことを禁止します。
  • {"type": "tool", "name": "tool_name"}:モデルに指定されたツールを強制的に呼び出させます。
output_config object (任意)
effort string (任意)モデルの推論の強度をコントロールします。有効な値とデフォルト値はモデルによって異なります。デフォルト値:max。kimi-k3.1-pro (Alibaba Cloud Model Studio にデプロイ) のデフォルトは max です。max (深い推論)、high (強化された推論)、medium (中程度の推論)、low (軽い推論) をサポートします。
  • qwen3.8-max/qwen3.8-flash:デフォルト値:xhigh 有効な値:
    • xhigh:高強度の推論
    • medium:中程度の推論
    • low:軽い推論
    max、high は xhigh にマッピングされます。
以下は既存モデルの設定です。有効な値:
  • high:高強度の推論
  • max:最大強度の推論
low と medium は high に、xhigh は max にマッピングされます。サポートされているモデル:glm-5.2、deepseek-v4-pro。format object (任意)構造化出力の構成。有効にすると、モデルは JSON 文字列を返します。動作はモデルによって異なります。
  • 厳密な構造化出力:deepseek (deepseek-v4-flash-0731、deepseek-v4-pro-0813 を除く) および glm シリーズのモデルで利用可能です。モデルは提供された JSON スキーマに厳密に従い、同じフィールドタイプと階層を保証します。
  • 通常の構造化出力:他のすべてのモデルでは、スキーマフィールドの制約は強制されません。API は自動的にプレーンな JSON モード (出力が有効な JSON 文字列であることを保証するのみ) にフォールバックします。このフォールバックモードでは、リクエストは次の両方を満たす必要があります:(1) output_config パラメーターが明示的に提供されていること、(2) system または messages のコンテンツにキーワード「JSON」(大文字と小文字を区別しない) が含まれていること。キーワード「JSON」がない場合、API は 'messages' must contain the word 'json' in some form というエラーをスローします。
type string (必須)固定値:json_schema。schema object (必須)標準の JSON スキーマ仕様に従う JSON スキーマオブジェクト。type (データの型)、properties (フィールド定義)、required (必須フィールド名の配列)、および additionalProperties ( false に設定する必要があります) を含める必要があります。
  • 基本的な呼び出し
  • ストリーミング
  • 拡張思考
  • 画像認識
  • 動画認識
  • 関数呼び出し
  • プロンプトキャッシュ
  • 構造化出力
Python
import anthropic
import os

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

message = client.messages.create(
    model="qwen3.8-max",
    max_tokens=1024,
    system="You are a helpful assistant",
    messages=[
        {
            "role": "user",
            "content": "あなたは誰ですか?"
        }
    ],
    thinking={"type": "disabled"},
)

print(message.content[0].text)

非ストリーミング応答

id string一意のメッセージ識別子。type string固定値:message。role string固定値:assistant。model string生成に使用されたモデル。content arrayコンテンツ配列。
Text
type string固定値:text。text stringモデルによって生成されたテキスト応答。
Thinking (拡張思考が有効な場合に返されます)
type string固定値:thinking。thinking string最終応答前のモデルの推論。signature string現在は空の文字列に固定されています。
Tool use (関数呼び出しシナリオ)
type string固定値:tool_use。id string一意のツール呼び出し識別子。tool_result と一致させるために使用されます。name string呼び出されたツールの名前。input objectツール呼び出しの入力パラメーター。
stop_reason string生成が停止した理由。有効な値:end_turn (正常終了)、max_tokens (トークン制限に到達)、tool_use (ツール呼び出し)。stop_sequence string常に null です。usage objectトークン使用量の統計。
ストリーミング呼び出しでは、message_start イベントの usage フィールドには input_tokens と output_tokens のみが含まれます。4つのフィールドすべては message_delta イベントで返されます。
input_tokens integer入力トークン。output_tokens integer出力トークン。cache_creation_input_tokens integerキャッシュ作成で消費されたトークン。cache_read_input_tokens integerキャッシュ読み取りで消費されたトークン。
応答例
{
  "id": "msg_e2898f19-fc0e-4cb3-bd9b-5b7dc4ea3bc9",
  "type": "message",
  "role": "assistant",
  "model": "qwen3.8-max",
  "content": [
    {
      "type": "thinking",
      "thinking": "この問題を分析してみましょう...",
      "signature": ""
    },
    {
      "type": "text",
      "text": "こんにちは!私は Qwen です..."
    }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 22,
    "output_tokens": 223,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

ストリーミング応答

message_start最初のストリームイベントで、メッセージの開始を示します。
type string固定値:message_start。message object初期メッセージオブジェクト。content は空の配列で、usage には input_tokens と output_tokens のみが含まれます。
content_block_startコンテンツブロックの開始を示します。
type string固定値:content_block_start。index integercontent 配列内の位置に対応する0から始まるインデックス。content_block objectコンテンツブロックの初期オブジェクト。type の値は text、thinking、または tool_use です。tool_use タイプの場合、このイベントでは input フィールドは空のオブジェクトであり、完全な入力パラメーターは後続の content_block_delta デルタから組み立てられます。
content_block_deltaコンテンツブロックの増分更新。ブロックごとに複数のデルタが送信されます。
type string固定値:content_block_delta。index integer関連するコンテンツブロックのインデックス。delta objectデルタオブジェクト。type の値:
  • text_delta:テキストデルタ。text フィールドを含みます。
  • thinking_delta:思考デルタ。thinking フィールドを含みます。
  • signature_delta:署名デルタ。signature フィールドを含みます (現在は空の文字列に固定)。
  • input_json_delta:ツール呼び出し入力パラメーターデルタ。partial_json フィールドを含みます。
content_block_stopコンテンツブロックの終了を示します。
type string固定値:content_block_stop。index integer終了したコンテンツブロックのインデックス。
message_deltaすべてのコンテンツブロックが終了した後に送信されます。停止理由と最終的なトークン使用量が含まれます。
type string固定値:message_delta。delta objectstop_reason と stop_sequence を含みます。有効な値については、上記の非ストリーミング応答の表をご参照ください。usage objectinput_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens を含む、完全なトークン使用量の統計。
message_stop最後のイベントで、メッセージの終了を示します。
type string固定値:message_stop。さらに、ストリーミング応答は定期的に ping イベント ({"type":"ping"}) を送信して接続を維持します。クライアントはこれらを無視できます。
ストリーミング応答の例
{"type":"message_start","message":{"id":"msg_xxx","type":"message","role":"assistant","model":"qwen3.8-max","content":[],"usage":{"input_tokens":15,"output_tokens":0}}}
{"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"思考プロセスは次のとおりです:\n\n1. **ユーザー入力の分析:**\n   - **トピック:** 人工知能 (AI)\n   - **リクエスト:** 人工知能について簡単に紹介してください。"}}
{"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":""}}
{"type":"content_block_stop","index":0}
{"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}
{"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"人工知能 (AI) は、コンピューターサイエンスの重要なブランチです..."}}
{"type":"content_block_stop","index":1}
{"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":15,"output_tokens":1078,"cache_creation_input_tokens":0,"cache_read_input_tokens":0}}
{"type":"message_stop"}

よくある質問

Claude Desktop または Claude Code を設定した後、接続テストがModel discovery — Gateway /v1/models returned HTTP 404で失敗するか、リクエスト URL に/v1/v1/modelsが含まれます。どうすれば修正できますか? Claude Desktop や Claude Code などのクライアントのモデル検出機能は、設定されたベース URL に自動的に /v1/models を追加します。次の2点を確認してください。
  • ベース URL の末尾を/v1/にしないでください:末尾は /apps/anthropic である必要があります (たとえば、中国 (北京) の場合は https://dashscope.aliyuncs.com/apps/anthropic を使用します。他のリージョンについては、上記のエンドポイント情報をご参照ください)。誤って .../apps/anthropic/v1/ と入力すると、クライアントは /v1/models を追加し、重複したパス /v1/v1/models が生成され、HTTP 404 が返されます。したがって、404 エラーが発生した場合は、まず実際のリクエスト URL に重複した /v1/v1/ が含まれていないか確認してください。含まれている場合は、ベース URL から末尾の /v1/ を削除してください。
  • モデルを手動で追加して検出をスキップする:Model Studio の Anthropic 互換エンドポイントは Messages API (/v1/messages) のみを提供し、モデルリストエンドポイント (/v1/models) は提供しないため、モデル検出リクエストも 404 を返します。クライアントの [Models] でモデル (例:qwen3.7-plus) を手動で追加して、自動検出をスキップしてください。