本文へスキップ

Qwen

OpenAI Chat Completions、OpenAI Responses、Anthropic Messages のいずれかで Qwen 3.8・3.7 系モデルを呼び出します。

項目値
Base URLhttps://api.hop-base.com/v1
チャットPOST /v1/chat/completions
ResponsesPOST /v1/responses
Anthropic MessagesPOST /v1/messages

Bearer キーで認証し、正確なモデル ID は GET /v1/models から取得します。/v1/messages では x-api-key ヘッダーも使えます。

curl https://api.hop-base.com/v1/chat/completions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "messages": [{
      "role": "user",
      "content": "Summarize this quarter'\''s risks in five bullets."
    }]
  }'

モデル

モデル IDコンテキスト画像・動画入力
qwen3.8-max1M対応
qwen3.8-flash1M対応
qwen3.7-max1Mテキストのみ
qwen3.7-plus1M対応
qwen3.7-flash1M対応

5 モデルすべてが 1,000,000 トークンのコンテキストウィンドウを持ち、1 リクエストあたり最大 131,072 トークンを出力できます。

5 モデルはすべて「通義千問(Qwen)3.8/3.7 シリーズ(Alibaba 公式)」プランに属し、1 つのキーですべてに到達できます。Qwen のキーはほかのファミリーに届かず、ほかのファミリーのキーも Qwen に届きません。Wan と HappyHorse の動画モデルはそれぞれ「Wan 3.0 公式」「HappyHorse 1.1 公式」プランで、キーも別に必要です。

エンドポイントとリクエストパラメータ

POST /v1/chat/completions、POST /v1/responses、POST /v1/messages は 5 モデルすべてで使え、どれもストリーミングが正常に動作します。Codex CLI など Responses しか話せないクライアントは直接接続でき、Claude Code も直接接続できます。詳しくは Claude Code と Anthropic Messages を参照してください。どちらも CC Switch のルーティングは不要です。

下表は POST /v1/chat/completions の場合です。ゲートウェイが拒否するのは空の messages だけです。Qwen 固有フィールドは検証せずそのまま渡し、ほかの制限はモデル側のものです。

パラメータ必須型と制限デフォルト説明
model必須上表の 5 つの ID のいずれか—完全一致
messages必須空でない配列。画像の縦横は 10 px 超—画像・動画は上表のとおり
max_tokens任意整数、上限 131,072(公式上限)サービス既定出力の長さの上限
enable_thinking任意真偽値サービス既定Qwen 固有、そのまま渡します
thinking_budget任意整数サービス既定reasoning_effort と同時指定不可
reasoning_effort任意low / high / max は実測で動作サービス既定thinking_budget と同時には使えません
enable_search任意真偽値サービス既定Qwen 固有、そのまま渡します
tools、tool_choice任意OpenAI と同じauto思考モードでは制限あり(下記)
response_format任意JSON モード。公式 API と同じ動作テキスト{"type": "json_object"} で JSON を返します
stream任意真偽値falsetrue で SSE ストリーミングを返します
stream_options.include_usage任意真偽値falseストリーミングで usage を受け取るには true
  • messages の欠落・空配列はゲートウェイが 400 を返します。
  • thinking_budget と reasoning_effort の同時指定は 400 です。
  • 思考モードでは tool_choice に required や関数指定を使えず、400 になります。
  • response_format を使う場合は、プロンプトでも JSON 出力を指示してください。
  • stream_options.include_usage は課金に影響しません。
  • /v1/responses のコンテンツパートは input_text、input_image、input_file のみで、動画は受け付けません。動画入力は Chat Completions を使ってください。

qwen3.8-max の実測入力上限は 991,808 トークンで、超えると次のエラーになります(本番記録から引用)。

400 Range of input length should be [1, 991808]

全パラメータは API リファレンス:Chat Completions で Qwen モデルファミリーを選んで確認してください。

ゲートウェイがリクエストに加える変更

Qwen 上で長時間稼働するエージェントを構築する前に知っておくべき書き換えが 2 つあります。

挙動リクエストへの影響
previous_response_id存在する場合は削除
storefalse に固定

リクエストは複数アカウント間で分散され、あるアカウントで発行された ID は別のアカウントでは無効なため、previous_response_id は削除されます。毎ターン完全な input を送ってください。

Claude Code と Anthropic Messages

POST /v1/messages は 5 モデルすべてで標準の Anthropic Messages リクエストを受け付け、モデル自身の Anthropic 互換インターフェースにそのまま渡すため、Claude Code と Anthropic SDK から直接接続できます。SDK の Base URL は /v1 を付けずに https://api.hop-base.com とします。

CC Switch を使う場合は、コンソールでキーの ··· メニューを開き、CCS をインポート、続けて Claude Code を選びます。モデルはインポート時に設定されます。API 形式は既定の Anthropic のままにし、ローカルルーティングは不要です。手動で設定する場合:

export ANTHROPIC_BASE_URL="https://api.hop-base.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-key"
export ANTHROPIC_MODEL="qwen3.8-max"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3.8-flash"
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000
claude

Claude Code はこれらの ID を知らないため、CLAUDE_CODE_MAX_CONTEXT_TOKENS で実際のコンテキストウィンドウを伝えます。指定しないと、Claude Code は 200K トークンで会話を圧縮します。その他のオプションは Claude Code にあります。

  • 思考は thinking ブロックで返り、output_tokens に含まれます。thinking: {"type": "disabled"} でオフにできます。
  • qwen3.7-max はテキストのみで、画像を含むリクエストはモデルに届く前に 400 になります。ほかの 4 モデルは画像を読めます。
  • ツールの強制(tool_choice を any またはツール名指定にする)には思考をオフにする必要があります。思考オンでは qwen3.8-max、qwen3.8-flash、qwen3.7-plus が 400 を返します。qwen3.7-max と qwen3.7-flash は思考の有無にかかわらず強制を無視し、テキストで答えることがあります。
  • 131,072 を超える max_tokens は、3.7 系の 3 モデルでは 400 になり、3.8 系では拒否されません。
  • cache_control のブレークポイントは送信前に取り除かれるため、明示的キャッシュは使えません。自動のプレフィックスキャッシュは通常どおり効きます。2026-10-03 の実測では、Claude Code の 2 ターン目以降はプロンプトの 89%–97% がキャッシュから読み込まれました。
  • Claude Code は毎回のリクエストに長いシステムプロンプトとツール一覧を付けて送り、実測では最初のメッセージより前に約 15,000 トークンありました。qwen3.7-flash のように段階のしきい値が低いモデルでは、Claude Code のセッションが早い段階でしきい値を超えます。次のセクションを参照してください。
400 Range of max_tokens should be [1, 131072]
400 Model qwen3.7-max does not accept image input. Remove the image from the request, including earlier turns of the conversation, or use a model that supports images.
400 The tool_choice parameter does not support being set to required or object in thinking mode

Anthropic Messages で突き合わせるときは、input_tokens はキャッシュ命中分を含まず、利用量レコードの「入力トークン」に対応します。cache_read_input_tokens は「キャッシュ入力トークン」に対応します。

課金と利用量

一部の Qwen モデルは、リクエストの入力が一定の長さのしきい値を超えると料金ティアが変わります。

  • しきい値はプロンプト全体でカウントされ、キャッシュされた入力とされていない入力の両方を含みます。
  • しきい値を超えると、超過分だけでなくリクエスト全体がそのティアになります。
  • プロンプトキャッシュを使ってもしきい値は回避できません。キャッシュが変えるのはキャッシュ部分の単価だけで、ティア判定のプロンプト長は変わりません。
  • しきい値以下に収める唯一の方法は、実際に短いプロンプトを送ることです。

どのモデルにティアが存在し、しきい値がどこにあるかは、ログイン後のモデルカタログに表示されます。

completion_tokens にはすでに推論トークンが含まれているため、重ねて加算しないでください。completion_tokens_details.reasoning_tokens は出力の一部であり、可視化のためだけに報告されます。

HopBase の利用量レコードとレスポンスボディでは、入力のカウント方法が異なります。突き合わせる際は注意してください。

フィールド意味
レスポンスの prompt_tokensキャッシュ命中分を含むプロンプト全体
利用量レコードの入力トークンプロンプトから、キャッシュ命中分を差し引いたもの
利用量レコードのキャッシュ入力トークンキャッシュ命中分を別立てで表示したもの

つまり、利用量レコードの入力トークンとキャッシュ入力トークンを足すと、レスポンスの prompt_tokens と一致します。

エラー処理

モデル自身が返す 4xx レスポンスは、ベンダー固有のエラーコードプレフィックスを取り除いた上でそのまま転送されます。message のテキストは人が読める内容ですが、文字列としては安定していません。分岐処理は HTTP ステータスと code フィールドで行い、メッセージ文字列には依存しないでください。

自分のプランに含まれないモデル名を指定すると 404 model_not_found が返ります。モデル ID は完全一致で判定されるため、推測せずに GET /v1/models から取得してください。

次のステップ