はじめに
xAI の Grok 系列でコーディングを担う Grok 4.5 の、OpenAI 互換チャットです。1 つのターンに text と image_url のパートを載せられ、推論強度は xhigh まで上げられ、1 回の返答は 450,000 トークンに達します。
xAI は Grok 4.5 をエージェント的なソフトウェア開発、エンジニアリング、ワークフロー処理のために公開し、科学・工学・数学のデータを追加して学習させました。別名 grok-4.5-latest と grok-build-latest でも提供されています。ここでは /v1/chat/completions のエンドポイント 1 本として公開しており、最大 256 メッセージ・合計 500,000 トークンを読み、1 回の返答で 450,000 トークンまで返します。入力・キャッシュ入力・出力はそれぞれ別に計測されます。長い前置きを繰り返すエージェントのループが実際に支払っているのは、この区分です。
主な機能とハイライト
送り直す前置きには専用のメーターがあります
エージェントのループは毎ステップで同じ system プロンプト、同じツール定義、同じファイル一覧を送り、新しいのは会話の末尾だけです。キャッシュから返された入力は usage に別立てで数えられ、より安い独自の単価で計測されます。有効化の操作は要りません。ステップ間で先頭のメッセージを変えずに保つこと、それがこの技法のすべてです。どれだけがキャッシュに乗ったかは、推測ではなく返答が教えてくれます。
入力はテキストと画像、出力はテキスト
content は素の文字列でもパートの配列でもよく、このモデルは 2 種類のパートを宣言しています。{"type": "text", "text": "..."} と {"type": "image_url", "image_url": {"url": "...", "detail": "auto|low|high"}} です。スクリーンショットとその問いは同じターンで届き、画像の内容は 500,000 トークンのコンテキストウィンドウの外ではなく中で数えられます。このエンドポイントに file や PDF のパートはないので、仕様書もログも差分も貼り付けたテキストとして渡してください。推論強度は low / medium / high / xhigh で既定は high です。推論強度は出力トークンとして消費されるため、請求だけでなく返答の上限にも算入されます。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
messages | はい | 最大 256 ターン。1 つの user メッセージの中で text と |
reasoning_effort | いいえ | low / medium / high / xhigh。既定は high です。 |
max_tokens | いいえ | 表示される返答の長さに上限をかけます(最大 450,000)。既定の 4,096 は長い生成を警告なく切り詰めます。 |
temperature | いいえ | 0〜2、既定 0.7。2 つのパッチ、あるいは同じ課題の 2 回の実行を比べるときは 0 にします。 |
top_p | いいえ | 0.01〜1。これか temperature のどちらか一方だけを動かしてください。 |
tools | いいえ | 1 リクエストにつき最大 128 個の関数定義。ステップ間で並び順を変えないほうが、前置きはキャッシュに乗りやすくなります。 128 件以内 |
parallel_tool_calls | いいえ | true か false で、既定値は true です。true ではモデルが 1 ターンで複数のツール呼び出しを要求できます。 デフォルト値: |
tool_choice | いいえ | auto / none / required、または呼ぶ関数を名指しするオブジェクト。 |
response_format | いいえ | 返答を人ではなくエージェントの次の工程が解析するときは、JSON オブジェクトを要求してください。 |
料金
入力 $2 / 出力 $6 100 万トークンあたり; 200K トークン以上のプロンプト: 入力 $4 / 出力 $12
入力総数にはキャッシュ済みトークンも含みます。入力が 200,000 トークン以上になると、そのリクエストの入力・キャッシュ入力・出力のすべてに長コンテキスト料金が適用され、それ未満では標準料金が適用されます。キャッシュ入力は新規入力とは別に計測され、より低い単価が付きます。出力には推論トークンも含まれるため、見える答えの長さが同じでも推論強度を上げれば費用は増えます。送信前に予算を確認してください。最初に確保する保留額はキャッシュによる節約を見込まずに計算し、精算時に実際の使用量との差額を返金します。
ユースケース
ループ全体をコンテキストに収めたまま回す
コーディングエージェントは毎ステップで指示、ツール定義、ファイル一覧を送り直し、そのたびに数百トークンだけを足します。そのすべてが 500,000 トークンのコンテキストウィンドウに収まり、繰り返し部分はキャッシュ入力として計測されます。長コンテキスト料金に切り替わるのは入力とキャッシュ入力の合計が 200,000 トークンに達したときだけで、送信前の見積もりが支払う前にそれを知らせます。
モジュールとテストと失敗を 1 ターンにまとめてリファクタリング
モジュール本体、テストファイル、失敗した出力をまとめて貼り、パッチとその根拠を求めてください。書き始める前に考え抜く必要がある変更では reasoning_effort を xhigh に上げます。最初の 1 行が出るまでに出力トークンを多く使いますが、行ごとにレビューする変更なら、それが割に合う選択です。
スクリーンショットとスタックトレースを一緒に読ませる
失敗しているダッシュボードを detail high の image_url パートとして添え、同じメッセージにスタックトレースをテキストで貼り、可能性の高い順に原因を挙げさせます。絵とログが 1 つのターンで届くので、モデルはお客様の説明ではなくパネルそのものを読みます。
移行計画を 1 回の応答で受け取る
450,000 の出力トークンがあれば、移行計画の全文、書き直したモジュール、翻訳したマニュアルが章ごとのループではなく 1 回の返答に収まります。max_tokens は明示的に上げてください。既定の 4,096 はエラーを出さずに長い生成を打ち切ります。途中で切れた返答は、完成した答えと最も見分けにくい失敗です。
プロンプトガイドと実践のヒント
推論強度は案件ごとに選び、プロジェクト単位で固定しない
reasoning_effort の既定は high なので、省略した時点ですでに丁寧な思考と、それに伴う出力トークンの分を支払っています。呼び出しごとに決めてください。移行や証明には xhigh、通常のレビューには high、ログ 1 行の分類のような機械的な作業には low です。推論強度は出力トークンで支払うため、xhigh の短い答えが low の長い答えより高くつくこともあります。
成果物そのものを要求し、貼って動く本文で送る
出力の形は system メッセージで固定し、根拠となる材料——ファイル、ログ、スクリーンショット——は user のターンに載せてください。そうすればモデルは、問題を解きながら書式を推測せずに済みます。
curl https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "xai/grok-4.5",
"messages": [
{"role": "system", "content": "Return the patched file in full. No diffs, no commentary, no omitted regions."},
{"role": "user", "content": [
{"type": "text", "text": "Both panels are the same service before and after the deploy. Which one regressed, and what in the diff explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}}
]}
],
"reasoning_effort": "high",
"max_tokens": 32000
}'
調整の前に usage を読む
返答は入力・キャッシュ入力・出力のトークン数を別々に報告します。「前置きはキャッシュに乗ったのか」に正直に答えられるのはこれだけです。会話の形ではなく、この数字から調整してください。ステップを重ねてもキャッシュ分が 0 のままなら、先頭のメッセージが呼び出しごとに変わっています。system プロンプト内の時刻や、並び順の変わったツール一覧です。その内容をリクエストの後ろに移すだけで直ることがほとんどです。長い返答は stream: true で流してください。chat.completion.chunk イベントが data: [DONE] まで届きます。
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": "xai/grok-4.5/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 リファレンスを参照してください。










