TL;DR: さくらのAI Engineの無料枠(毎月3,000リクエスト)で複数モデルを試したところ、APIキーの取り違えで401エラーに遭遇し、preview/Kimi-K2.6では隠れ推論がmax_tokensを食い尽くして「無応答」に見える挙動にも当たりました。モデルごとに推論パラメータの効き方はまったく違い、無料枠を超えて従量課金で使う場合の価格も、gpt-oss-120bとllm-jp-3.1-8x13b-instruct4はOpenAI/AnthropicのAPI最安帯より約10.8〜13倍、Kimiでも約2.7〜3.2倍安いという結果でした。これからLLM APIを触り始める方に向けて、実体験ベースの気づきをゆるくまとめてみました。
導入
「OpenAI・Anthropic互換APIを無料で使おう!さくらのAI Engine 3,000リクエスト使い切りチャレンジ」というQiita公式イベントをきっかけに、さくらのAI Engineを触り始めました。OpenAI互換のエンドポイントが一つあれば、クライアントコードをほぼ変えずに複数モデルへ切り替えられるのは、LLM APIを使い始めたばかりの身にはありがたく感じました。ただ、実際に触ってみると、API形式が同じでも中身の挙動まで同じとは限らないのかもしれない、と思わされる場面がいくつもありました。同じ「互換API」という看板でも、どこまでが同じで、どこから違ってくるのでしょうか。
最初につまずいたAPIキーの取り違え
さくらのクラウド(インフラ管理API)で使う「アクセストークン/アクセストークンシークレット」のペアと、さくらのAI Engineで使う「アカウントトークン」(<UUID>:<シークレット>形式の1本の文字列)は、実は別物でした。同じ事業者のサービスだからと思い込み、クラウド側の認証情報をAI Engineのリクエストに設定したところ、当然のように401エラーが返ってきました。手元のケースでは、エラーメッセージが「認証失敗」以上の詳細を教えてくれなかったので、コードを疑う前に、まず「これは何のサービスに対するトークンなのか」を確かめるのが、案外の近道だったのかもしれません。似た名前の認証情報がいくつも並んでいるとき、皆さんなら、どこから確認し始めるでしょうか。
複数モデルを横並びで試してわかったこと
さくらのAI Engine上で使えるgpt-oss-120b、llm-jp-3.1-8x13b-instruct4、preview/Kimi-K2.6、preview/gemma-4-31B-itなどに、同じ日本語理解タスク(要約・敬語変換・皮肉/本音の読み取り・論理推論)と同じコードレビュー課題を横並びで投げてみました。目的は「どれが最強か」を決めることではなく、モデルごとに得意不得意やパラメータの効き方がまるで違うのを、自分の手で体感してみることでした。どのモデルが何を得意とするのかは、実際に横へ並べてみるまでは、意外と分からないものではないでしょうか。
たとえば、次の設問は、実は論理的には判定できません。
AさんはBさんより背が高い。CさんはAさんより背が低い。BさんとCさんではどちらが背が高いか。
gpt-oss-120bとpreview/gemma-4-31B-itは正しく「判定不能」と答えましたが、別のモデルは、与えられていない関係を勝手に補って断定してしまいました。同じプロンプトでも、論理の受け止め方や「わからない」と言える誠実さが、ここまで違ってくるようです。どのモデルなら「わからない」と正直に言えるのか——この手ざわりは、横並びで試してみないと、なかなか見えてこないのではないでしょうか。
Kimiのデフォルト挙動の罠 ― 隠れ推論がmax_tokensを食う
今回もっとも印象に残ったのが、preview/Kimi-K2.6の挙動でした。今回の実行例では、chat completionでmax_tokens=100のような小さい値を指定すると、finish_reason: lengthになり、可視のcontentが空で返ってきました。一見すると「モデルが何も答えていない」ように見えてしまいます。でも、本当に何も考えていなかったのでしょうか。
種明かしは、隠れ推論(reasoning_contentフィールド)にありました。トークン予算を推論のほうが先に使い切ってしまい、可視の回答が残らなかったようです。max_tokens=2000に上げてみるとfinish_reason: stopとなり、completion_tokens: 260のうち可視contentは短い1文だけで、残りの大部分はreasoning_contentに回っていました。この配分を知らないままmax_tokensを小さく絞っていたら、いつまでも「壊れている」と思い込んでいたのかもしれません。空のcontentが返ってきたとき、皆さんなら、まず何を疑うでしょうか。
さらにreasoning_effort: highを明示指定すると、completion_tokensは260から418へ増えました。最終回答の質は同じくらいでしたが、推論そのものは、より丁寧になったように見えます。一方で別モデルのQwen3-Coder-480B-A35B-Instruct-FP8では、同じreasoning_effortを指定してもreasoning_contentは空のままでした。公式マニュアルにはreasoning_contentの中身は実行ごとに変わりうるとの説明もあり、260→418という今回の変化がreasoning_effortだけによるものなのかは、何度か試してみないと言い切れないのかもしれません。それでも、推論系のパラメータは名前が同じでもモデルごとに効き方がまるで違う、という手ざわりは十分に伝わってきました。
今回の教訓
-
max_tokensは、目に見える回答の長さだけで決めないほうがよさそうです。隠れ推論を持つモデルでは、その分の余裕を持たせておかないと「無応答」に見えてしまうことがあるようです。 -
reasoning_effortのようなパラメータも、指定すれば必ず同じように効くとは限らないのかもしれません。「パラメータが受理された」ことと「期待どおり機能した」ことは、分けて確かめておいたほうがよさそうです。 - ドキュメントや他モデルでの知見をそのまま当てはめず、
finish_reason・トークン使用量・推論フィールドを実際に眺めながら、できれば複数回試して挙動を確かめてみるのがよいのではないでしょうか。
無料枠を超えて使う場合の価格差
さくらのAI Engineの無償枠は、期間限定キャンペーンではなく、毎月リセットされる無償プランのようでした。上限(毎月3,000リクエスト)を超えても自動的に課金されるわけではなく、レート制御がかかる仕組みのようです。とはいえ、従量課金プランで使う場合の価格も、いちおう確かめておきたいところです。無料で試せているうちに、その先の値段感まで覗いておくと、あとで慌てずに済むのではないでしょうか。
さくらインターネット公式サイトの料金は「1万トークンあたり・税込」表記だったため、まず100倍して「100万トークンあたり」に揃え、1ドル=162円で米ドル換算しています(2026年7月19日は日曜日のため、直近営業日7月17日の日本銀行公表レート162.41円を参考にした概算です。OpenAI・Anthropicの価格は税別の公示価格で、各社公式サイトより)。
| モデル | Input $/1M | Output $/1M |
|---|---|---|
| さくらのAI Engine — gpt-oss-120b | $0.09 | $0.46 |
| さくらのAI Engine — llm-jp-3.1-8x13b-instruct4 | $0.09 | $0.46 |
| さくらのAI Engine — preview/Kimi-K2.6 | $0.37 | $1.85 |
| Claude Haiku 4.5(最安帯) | $1.00 | $5.00 |
| Claude Sonnet 4.6 | $3.00 | $15.00 |
| GPT-5.6 Luna(最安帯) | $1.00 | $6.00 |
| GPT-5.6 Terra | $2.50 | $15.00 |
gpt-oss-120bとllm-jp-3.1-8x13b-instruct4は、OpenAI/AnthropicのAPI最安帯と比べてInputで約10.8倍、Outputで約10.8〜13倍安い計算になりました。今回の主役だったpreview/Kimi-K2.6は試した中でいちばん高いモデルでしたが、それでも最安帯より2.7〜3.2倍ほど安いようです。なお、gpt-oss-120bとllm-jp-3.1-8x13b-instruct4は通常モデルですが、preview/Kimi-K2.6は「パブリックプレビューモデル」なので、プレビュー終了後に価格が変わる可能性もあるのかもしれません。
余談ですが、OpenAIやAnthropicが「100万トークンあたり」で価格を出しているのに対して、さくらのAI Engineだけ「1万トークンあたり」表記なのは、どうしてなのでしょうか。日本語の数の感覚では「1万」のほうが馴染みやすい基準だから、なのかもしれません。ただ、比較する側からすると、一度100倍してから換算する一手間が増えてしまうのが、少しだけ悩ましいところです。
締め
APIキーの取り違えから始まり、隠れ推論トークンの罠、モデルごとのパラメータの効き方の違いまで、無料枠を使い切っていく過程で、いくつもの小さな気づきがありました。一つの互換APIにまとまっているからこそ、横断的に比べられた面もあったのかもしれません。
同じAPI形式でも、モデルによって挙動がここまで変わってくることに、皆さんなら、どの段階で気づくでしょうか。まずは小さく試して、レスポンスのJSONを一度きちんと覗いてみるところから、はじめてみてはいかがでしょうか。
参考リンク
- Qiita公式イベント「OpenAI・Anthropic互換APIを無料で使おう!さくらのAI Engine 3,000リクエスト使い切りチャレンジ」
- さくらのAI Engine スタートガイド
- アカウントトークンの発行画面(さくらのクラウドの「アクセストークン」とは別物なので注意)
- さくらのAI Engine マニュアル




