はじめに
Gemini 3.7 Flash の OpenAI 互換チャットです。1,048,576 トークンの読み取り窓、推論強度 3 段、128 個のツール定義、JSON 出力が同期呼び出し 1 回に収まります。逐次で受け取るなら stream: true を付けてください。
Gemini 3.7 Flash は Google の高速 Flash 型番で、日々のコーディング、agent のツール呼び出し、確実な多段実行に向いています。ここでは OpenAI 互換のチャットエンドポイント 1 本として公開しています。1 回のリクエストで最大 1,048,576 トークンを読み、最大 65,536 トークンで返し、推論強度はターンごとに low / medium / high を切り替えられます。ツール呼び出しと JSON 出力は OpenAI の書き方どおりです。
主な機能とハイライト
ループの中に置ける速さ
計画してツールを呼び、結果を読んでまた決める agent は、実時間のほとんどをモデル待ちに使います。この型番はまさにその形の仕事のために作られているので——日々のコーディング、ツール呼び出し、多段実行——1 周ずつきちんと閉じ、どのホップでも止まりません。
3 段の強度をターンごとに選ぶ
low / medium / high、既定は medium です。同じリクエストボディの中の文字列 1 つなので、定型の 1 手は low、外せない 1 手だけ high に上げられます。この型番に minimal はありません。Google の API 自身が拒否するため、ここでも黙って別の値に書き換えず、そのまま拒否します。
1 リクエストで 1,048,576 トークン
モジュール 1 本とそのテスト一式、ツール結果を残したままの長い agent 逐語ログ、あるいは一度に読ませる資料の束。この上限はシステムプロンプトと履歴とツール出力をまとめて数えるので、予算はスレッド全体のものであって、最後の 1 通のものではありません。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
messages | はい | 古い順に並べたターンで。内容は文字列、またはテキスト・ |
max_tokens | いいえ | 返答を 65,536 で抑えます。既定は 16,384 です。 |
reasoning_effort | いいえ | minimal / low / medium / high、既定は medium です。定型の手番は low で十分で、外せない手番だけ high に上げられます。 |
stop | いいえ | 最大 4 件の停止シーケンスを、文字列か配列で指定します。モデルがそのいずれかを書いた時点で応答が終わり、一致した文字列そのものは返されません。 1 文字以上 · 1 件以上 · 4 件以内 |
seed | いいえ | 任意の整数です。ほかが同じリクエストで同じ seed を使うと応答がほぼ再現されるため、1 か所ずつ変えて公平に比べられます。 |
temperature | いいえ | 0〜2、既定 1 です。Gemini 3 系は既定の 1.0 のまま使うことを Google が強く勧めており、1.0 を下回ると出力が堂々巡りになったり質が落ちたりすることがあります。 |
top_p | いいえ | 0.01〜1 です。これか temperature のどちらか一方だけを動かしてください。 |
tools | いいえ | 1 リクエストにつき最大 128 個の関数定義です。 128 件以内 |
tool_choice | いいえ | auto / none / required、または呼ぶ関数を名指しするオブジェクトです。 |
response_format | いいえ | JSON オブジェクトを要求し、キーはすべて system メッセージで名指しします。抽出結果が解析可能な形で返るのはこの指定のおかげです。 |
料金
入力 $0.675 / 出力 $3.375 100 万トークンあたり
ユースケース
日々のコーディング
diff を読んで何が変わったかを言う、抜けていたテストを書く、スタックトレースを修正パッチに変える。どれも短くて回数の多いリクエストで、初トークンまでの時間がそのままその道具を使うかどうかを決めます。
Agent のツールループ
1 リクエストにつき最大 128 個の関数定義を渡せて、tool_choice で特定の 1 つを強制することも、まったく呼ばせないこともできます。ツール呼び出しは OpenAI の形で返るので、既存の agent 実行環境は model の値を差し替えるだけで済みます。
長いスレッド上の多段実行
すでに 6 回ツールを呼んだ agent は、次のリクエストにその 6 件の結果を全部積んで出します。1,048,576 トークンの窓は、途中で要約工程を挟まずにそのスレッドを丸ごと保つためのものです。
大量の構造化抽出
response_format で JSON オブジェクトを要求し、キーはすべて system メッセージで名指しします。ログ行をフィールドに、チケットをラベルに、自由記述をスキーマに——1 回あたりの価格が、その作業を回す価値があるかどうかを決めます。
プロンプトガイドと実践のヒント
返答を絞る前に、思考の場所を空けておく
既定の medium では書く前に考え、その思考は返答と同じ max_tokens の枠から引かれます。上限を詰めると枠は思考で消え、空文字列が返ります。max_tokens に余裕を持たせてください。コーディングの答えなら数千トークンです。短い答えだけでよく、考えさせたくない場面では reasoning_effort を low に落とします。
強度は連携単位ではなくターン単位で切り替える
ループの定型部分は low で回して初トークンを早く受け取り、外せない 1 手だけ high で送ります。同じエンドポイント、同じボディ、違うのは文字列 1 つです。
前提にしておく制限
reasoning_effort が受け取るのは low / medium / high だけです。Google の API がこの型番で minimal を拒否するため、このエンドポイントも黙って別の値に書き換えず拒否します。返答の上限は 65,536 トークンで、それを超える max_tokens は入力検証で弾かれます。メッセージ内容はテキスト・画像・動画で、音声パートは拒否されます。動画はアップロード済みファイルとして送り、1 回のリクエストに含める動画は合計 14 MB までです。
API クイックスタート
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "google/gemini-3.7-flash/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。












