メインコンテンツへスキップ
一部のモデルは最終的なレスポンスを生成する前に内部的な思考の連鎖推論を実行します。これらの推論ステップはトークンを消費し、推論トークンと呼ばれます。これらはコストとレイテンシに影響しますが、デフォルトではユーザーには見えません。

サポートされているモデル

モデル推論サポート
openai/o4-mini常時推論オン
openai/o3常時推論オン
anthropic/claude-sonnet-4-6オプションの拡張思考
anthropic/claude-opus-4-6オプションの拡張思考
deepseek/deepseek-r1常時推論オン
google/gemini-2.5-proオプションの思考モード
google/gemini-2.5-flashオプションの思考モード

使用量における推論トークンの表示

推論トークンは completion_tokens_details の一部として usage オブジェクトで報告されます:
{
  "usage": {
    "prompt_tokens": 150,
    "completion_tokens": 520,
    "total_tokens": 670,
    "completion_tokens_details": {
      "reasoning_tokens": 400
    }
  }
}
この例では、520 の補完トークンのうち 400 が内部推論に使用されました。残りの 120 トークンのみが可視レスポンスに表示されます。

推論トークンの請求

推論トークンはそのモデルの補完トークンレートで請求されます。請求目的では completion_tokens に含まれます — 内訳は情報提供のみです。 ARouter は上流プロバイダーの推論トークン数を変更せずにそのまま渡します。

推論動作の制御

OpenAI o シリーズ(o4-mini、o3)

o シリーズモデルでは推論は常にオンです。モデルの推論量を制御するには reasoning_effort を使用します:
{
  "model": "openai/o4-mini",
  "reasoning_effort": "high",
  "messages": [...]
}
有効な値:"low""medium""high"。努力値が高いほど = 推論トークンが多い = 品質とコストが高い。

Anthropic 拡張思考

リクエストに thinking を渡して拡張思考を有効にします:
import anthropic

client = anthropic.Anthropic(
    api_key="your-arouter-key",
    base_url="https://api.arouter.ai/anthropic",
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000,
    },
    messages=[{"role": "user", "content": "ステップバイステップで解いてください:..."}],
)
budget_tokens は思考に使用できるトークン数を制限します。思考内容はレスポンス内の別個のブロックとして返されます。

DeepSeek R1

DeepSeek R1 では推論は常にオンです。このモデルは通常の content の隣に reasoning_content フィールドを返します:
from openai import OpenAI

client = OpenAI(
    api_key="your-arouter-key",
    base_url="https://api.arouter.ai/v1",
)

response = client.chat.completions.create(
    model="deepseek/deepseek-r1",
    messages=[{"role": "user", "content": "√2 が無理数であることを証明してください。"}],
)

# 推論内容(プロバイダーが公開している場合)
print(response.choices[0].message.reasoning_content)
# 最終回答
print(response.choices[0].message.content)

Google Gemini 思考

thinking パラメーターを通じて Gemini 2.5 モデルの思考を有効にします:
response = client.chat.completions.create(
    model="google/gemini-2.5-flash",
    messages=[...],
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 5000
        }
    }
)

アクティビティエクスポートと推論トークン

アクティビティエクスポート には推論トークンの内訳が含まれており、総コストへの貢献を正確に追跡できます。エクスポートサマリーでは、推論トークンは補完トークンに含まれています。

ベストプラクティス

  • 最高の推論品質が必要でない限り、o シリーズモデルでは "low" または "medium" の努力値から始めてください。これによりコストとレイテンシが大幅に削減されます。
  • Anthropic と Gemini の思考モデルには budget_tokens の上限を設定してください。複雑なクエリで予期せず大きな請求が発生するのを避けるためです。
  • アクティビティフィードで推論トークンの比率を監視してください。推論トークンと出力トークンの高い比率は複雑なタスクでは正常ですが、モデルが単純なクエリに過度に考えている可能性を示す場合があります。
  • コストを節約するために推論を無効にしないでください。真に多段階の推論を必要とするタスクでは — 出力品質が大幅に低下します。