DEV Community

Cover image for Gemini 3.8 Flash APIの使い方:Apidogを使ったAPI初回呼び出し、インタラクションAPIと思考レベル
Akira
Akira

Posted on Originally published at apidog.com

Gemini 3.8 Flash APIの使い方:Apidogを使ったAPI初回呼び出し、インタラクションAPIと思考レベル

Googleは2026年9月2日、Gemini 3.8 Flashをリリースしました。APIモデルIDはプレビューサフィックスなしのgemini-3.8-flashです。2026年12月31日までは、3.7 Flashの導入価格と同じく、入力トークン100万あたり$0.75、出力トークン100万あたり$3.75で利用できます。Googleは3.8 Flashを「より熱心に働く」モデルと表現しており、複雑なタスクでは推論ステップとツール呼び出しが増えるため、トークン使用量にも注意が必要です。

今日からApidogを試す

この記事では、AI StudioでのAPIキー取得、Interactions APIによる初回リクエスト、レガシーなgenerateContentとの違い、thinking_levelの設定場所、ストリーミング、thoughtsTokenCountによる思考コストの確認方法まで、実際に動く統合を構築する手順を説明します。すべてJSON形式のHTTPリクエストなので、アプリケーションに組み込む前にApidogで確認できます。

モデルの概要、ベンチマーク、変更点は、Gemini 3.8 Flashとは何かを参照してください。公式情報はGoogleの発表ブログ記事で確認できます。

Gemini 3.8 Flash APIの概要

項目 値
モデルID gemini-3.8-flash
主要エンドポイント POST /v1beta/interactions
レガシーエンドポイント POST /v1beta/models/gemini-3.8-flash:generateContent
認証ヘッダー x-goog-api-key
コンテキスト / 出力 1,048,576入力トークン / 65,536出力トークン
入力 テキスト、画像、動画、音声、PDF(テキスト出力のみ)
思考レベル low、medium(デフォルト)、high。minimalはエラー
価格(2026年12月31日まで) 入力$0.75 / 出力$3.75(100万トークンあたり)
2027年1月1日以降 入力$1.50 / 出力$7.50(100万トークンあたり)

実装前に、次の2点を押さえておきましょう。

  • デフォルトの思考レベルは、Gemini 3 Proのようなhighではなくmediumです。
  • 思考トークンは出力トークンとして課金されます。思考レベルは品質だけでなくコストにも影響します。

詳しいタスク別の料金はGemini 3.8 Flashの料金内訳で確認できます。

ステップ1:AI StudioでAPIキーを取得する

Google AI Studioにアクセスし、Googleアカウントでサインインして、キーページからAPIキーを作成します。

無料ティアですぐに利用できますが、レート制限があります。また、Googleは無料ティアのデータを「製品の改善に使用する」と説明しています。生産環境向けにTier 1へ移行する場合は、課金アカウントをリンクしてください。

キーをコードへ直接貼り付けず、環境変数として設定します。

export GEMINI_API_KEY="AIza..."
Enter fullscreen mode Exit fullscreen mode

公式Python SDKはGEMINI_API_KEYを環境から読み取るため、genai.Client()にキーを渡す必要はありません。SDKは次のコマンドでインストールできます。

pip install google-genai
Enter fullscreen mode Exit fullscreen mode

ステップ2:Interactions APIで初回リクエストを送る

Googleは現在、Gemini 3.xモデルの主要APIとしてInteractions APIを案内しています。

リクエストは、model、input、任意のgeneration_configで構成されます。

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-[REDACTED CREDENTIAL]GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash",
    "input": "Explain HTTP caching in 3 sentences.",
    "generation_config": {"thinking_level": "medium"}
  }'
Enter fullscreen mode Exit fullscreen mode

レスポンスは単一のメッセージではなく、実行ステップのリストです。思考やツール呼び出しは個別のステップとして返され、最終テキストはmodel_outputステップに含まれます。

Python SDKを使うと、最終テキストをoutput_textで取得できます。

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Explain HTTP caching in 3 sentences.",
    generation_config={"thinking_level": "medium"},
)

print(interaction.output_text)
Enter fullscreen mode Exit fullscreen mode

temperatureは変更しない

temperature、top_p、top_kは指定しないでください。GoogleはすべてのGemini 3モデルについて、temperatureをデフォルトの1.0に保つよう推奨しています。値を下げると「ループやパフォーマンスの低下を引き起こす可能性」があるためです。

古いモデル用の設定をコピーした場合は、まずこれらの行を削除してください。

ステップ3:previous_interaction_idで複数ターンを実装する

Interactions APIは、デフォルトで会話状態をサーバーに保持します。会話を続けるときは、前回のレスポンスのidをprevious_interaction_idとして送信します。履歴全体を再送信する必要はありません。

follow_up = client.interactions.create(
    model="gemini-3.8-flash",
    input="Now give one example of a Cache-Control header.",
    previous_interaction_id=interaction.id,
)
print(follow_up.output_text)
Enter fullscreen mode Exit fullscreen mode

コンプライアンス上、サーバーサイドストレージを使えない場合はstore: falseを設定します。その場合は、自分で状態を管理し、モデルから返された思考ブロックと思考シグネチャを、各ターンで正確に送り返す必要があります。

ツール使用時にも同じルールが適用されます。詳細はGemini 3.8 Flashの関数呼び出しガイドを参照してください。

ステップ4:レガシーなgenerateContentを使う

本番環境では、まだ多くのGeminiコードがgenerateContentを利用しています。GoogleはこれをレガシーAPIと呼んでいますが、廃止日はなく、「完全にサポートされ続けている」と説明しています。既存コードをすぐに書き換える必要はありません。

Gemini 3.7 Flash APIガイドで扱っている形式は、3.8 Flashでも利用できます。ただし、思考設定の場所がInteractions APIとは異なります。

REST API

generateContentでは、思考レベルをgenerationConfig.thinkingConfig.thinkingLevelにcamelCaseで指定します。

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent" \
  -H "x-goog-[REDACTED CREDENTIAL] \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Explain HTTP caching in 3 sentences."}]}],
    "generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}
  }'
Enter fullscreen mode Exit fullscreen mode

Python SDK

Pythonでは型付き設定オブジェクトを使用します。

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Explain HTTP caching in 3 sentences.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="low")
    ),
)
print(response.text)
Enter fullscreen mode Exit fullscreen mode

thinking_budgetを整数で指定していた設定から移行する場合は、文字列の列挙型に置き換えてください。candidate_countもGemini 3以降では削除されています。

変更前後のJSONを含むチェックリストは、3.7から3.8 Flashへの移行ガイドにまとめています。

API間の対応関係

懸念事項 Interactions API レガシーなgenerateContent
思考レベル generation_config.thinking_level generationConfig.thinkingConfig.thinkingLevel
会話状態 previous_interaction_id(サーバーサイド) contents配列全体を再送信
ツール結果 call_id + nameを含むfunction_result id + nameを含むfunctionResponse
最終テキスト model_outputステップ(SDKではoutput_text) candidates[0].content.parts[].text
思考シグネチャ store: falseでない限り自動処理 受け取った各パーツをそのまま返送

ステップ5:ストリーミングと思考コストを確認する

チャットUIでは、エンドポイントをstreamGenerateContentに変更し、?alt=sseを付けます。サーバー送信イベントとして、部分的なcandidatesチャンクを受け取れます。

curl -N "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:streamGenerateContent?alt=sse" \
  -H "x-goog-[REDACTED CREDENTIAL] \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"parts":[{"text":"List three HTTP caching headers."}]}]}'
Enter fullscreen mode Exit fullscreen mode

ストリーミングの有無にかかわらず、generateContentのレスポンスはusageMetadataで終了します。

"usageMetadata": {
  "promptTokenCount": 12,
  "candidatesTokenCount": 84,
  "thoughtsTokenCount": 310,
  "totalTokenCount": 406
}
Enter fullscreen mode Exit fullscreen mode

特に確認すべき値はthoughtsTokenCountです。思考トークンは導入期間中、出力トークンとして100万トークンあたり$3.75で課金されます。Googleは、モデルがパフォーマンスを最大化するため、特に高い努力レベルでより多くのトークンを使う可能性があると説明しています。

Artificial Analysisの測定では、highでのインデックス実行に約48kの出力トークンが必要でした。これは3.7 Flashより30%多く、トークン単価が同じでもタスクあたりのコストは$0.40から$0.58に上昇します。

同じ測定におけるタスクあたりのコストは次のとおりです。

  • high: $0.58
  • medium: $0.41
  • low: $0.24

Gemini 3.8 Flashの思考レベルガイドでは、この差をルートごとの実装戦略に落とし込んでいます。

思考内容を確認する

モデルの推論過程を確認するには、thinkingConfigに"includeThoughts": trueを追加します。思考の要約は"thought": trueとフラグ付けされたパーツとして返されます。

ユーザー向けの回答を組み立てるときは、これらのパーツを表示対象から除外してください。

最初の1時間で遭遇しやすいエラー

thinking_level: "minimal"は使えない

Gemini 3.8 Flashがサポートする思考レベルはlow、medium、highです。minimalを送信すると、次の400 INVALID_ARGUMENTが返ります。

Thinking level MINIMAL is not supported for this model. Please retry with other thinking level.

このモデルでは思考レベルMINIMALはサポートされていません。別の思考レベルで再試行してください。

これは2026年9月3日のライブコールで確認されています。解決策はminimalをlowに変更することです。古い3.x設定やコピーしたスニペットが主な原因です。

429はティア制限

429エラーは、必ずしもバグではありません。ティアのレート制限に達した可能性があります。

レート制限ページによると、条件は次のとおりです。

  • 無料ティア:レート制限あり
  • Tier 1:課金アカウントをリンク
  • Tier 2:$100の利用実績と3日間の期間
  • Tier 3:$1,000の利用実績と30日間の期間

モデルごとの1分あたりのリクエスト数とトークン数は、AI Studioのアカウント別レート制限ページで確認してください。ブログ記事に記載された数値ではなく、自分のアカウントの値を使うことが重要です。

429が発生したら、まず待ってから再試行します。低ボリュームでも繰り返し発生する場合は、ティアをアップグレードしてください。

オフライン処理にはBatch APIが適しています。導入期間中は50%オフ、つまり入力$0.375 / 出力$1.875(100万トークンあたり)で利用できます。キューに入れられるトークン上限は、Tier 1が3M、Tier 2が400M、Tier 3が1Bです。

リクエスト形式はGemini APIのバッチモードガイドで確認できます。

関数結果にcall_idを含める

ツールを使う場合、3.8 Flashでは次のフィールドが必須です。

  • Interactions APIのfunction_result:call_idとname
  • レガシーAPIのfunctionResponse:対応するidとname

どちらかを省略すると、ターン全体が失敗します。

Apidogで両方のエンドポイントをテストする

ターミナルで両方のリクエストが動作したら、チームで再利用できるテストに変換します。Apidogをダウンロードし、プロジェクトを作成して、2つのエンドポイントを保存済みリクエストとして追加してください。

1. APIキーをリクエストから分離する

GEMINI_API_KEYを環境変数として登録し、x-goog-api-keyヘッダーから{{GEMINI_API_KEY}}として参照します。

保存済みリクエストにシークレットを含めなければ、無料ティアのキーと課金キーを環境変数の変更だけで切り替えられます。

2. ステータスとトークン使用量をアサートする

次の2つをJSONパスでアサートします。

  1. HTTPステータスが200であること
  2. usageMetadata.thoughtsTokenCountがプロンプトごとの上限を下回ること

後者をコスト回帰アラームとして使えば、プロンプト変更やモデルのサイレントアップデートによる思考トークンの増加を、請求書が届く前に検知できます。

ストリーミング版はSSE APIテストガイドで扱っています。Apidogでは、生のチャンクではなくマージされたイベントストリームとして表示できます。

3. 3つの思考レベルを比較する

同じプロンプトをlow、medium、highで実行し、次の値を比較します。

  • thoughtsTokenCount
  • 応答時間
  • タスクの品質

インデックスの平均値ではなく、自分のプロンプトに対する実測値を取得できます。

4. テストをスケジュールする

リクエストをテストシナリオに変換し、定期実行します。レート制限の変更、minimal削除のようなバリデーション変更、トークン使用量の急増を、本番環境ではなくテストレポートで検知できます。

セットアップ手順はApidogでAPIテストをスケジュールする方法を参照してください。

ApidogはモデルやSDKの代替ではありません。HTTP呼び出しを保存、共有、アサートできる形にし、壊れるまで放置されがちな統合テストをチームで運用できるようにします。

よくある質問

新しいプロジェクトではどのエンドポイントを使うべきですか?

新規開発ではInteractions APIを推奨します。GoogleはgenerateContentをレガシーと呼んでいますが、引き続き完全にサポートされています。

新機能はまずInteractions APIに実装され、サーバーサイドの状態管理によって複数ターンのコードも短くなります。一方、既存サービスは、移行する理由ができるまでgenerateContentを使い続けて問題ありません。

Gemini 3.8 Flashには有料アカウントが必要ですか?

いいえ。無料のAI Studioキーで利用できます。ただし、レート制限とGoogleのデータ使用規約が適用されます。

無料ティアでできることとできないことは、Gemini 3.8 Flashを無料で使う方法で確認できます。Geminiアプリで3.8 Flashを使う場合は、AI ProまたはUltraプランが必要です。

3.8 Flashは3.7 Flashより遅いですか?

トークン単位では、ほぼ同じ速度です。GoogleのLogan Kilpatrick氏によると速度はほぼ同じで、Artificial Analysisは毎秒約300出力トークンを測定しました。

ただし、タスク単位ではhighの方が時間がかかります。Artificial Analysisの実行では、3.7 Flashの2.2分に対して3.8 Flashは2.5分でした。より多くのトークンを生成するためです。

Gemini 3.7 Flashは引き続き使えますか?

はい。Googleは3.7 Flashが「完全にサポートされ続けている」と説明しており、廃止日は発表されていません。

3.8 Flashの追加トークン費用がワークロード上のメリットにつながらない場合は、3.7 Flashを使い続けるのも有効な選択肢です。

3.8 FlashはLive APIや画像生成に対応していますか?

いいえ。3.8 Flashはテキスト出力のみです。音声生成、画像生成、Live APIはサポートしていません。

次に進む

ここまでで、次の実装要素がそろいました。

  • Interactions APIによる初回呼び出し
  • generateContentによる既存コードとの互換パス
  • previous_interaction_idを使った複数ターン
  • ストリーミングレスポンス
  • thoughtsTokenCountによるコスト監視

次は、Gemini 3.8 Flashの関数呼び出しガイドでツールを連携し、思考レベルガイドでルートごとの設定を決めてください。

移行すべきか迷っている場合は、Gemini 3.8 Flashと3.7 Flashの比較でトレードオフを確認できます。

最後に、Apidogのテストシナリオを継続実行し、コストやレート制限の変化をテスト失敗として検知できる状態にしておきましょう。

Top comments (0)