DEV Community

Cover image for Gemini 3.5 Flash API の使い方
Akira
Akira

Posted on • Originally published at apidog.com

Gemini 3.5 Flash API の使い方

Gemini 3.5 Flash APIは、2026年5月19日のモデルローンチと同時に公開されました。Flashは現在利用可能な3.5ファミリーの唯一のバリアントです。Proは6月に登場します。このガイドでは、APIキーの取得、最初の呼び出し、マルチモーダル入力、ストリーミング、ツール利用、そしてApidogでのテストまでを、実装手順ベースで説明します。

今すぐApidogを試す

以前にGemini APIを使ったことがある場合、基本パターンは同じです。変更点はモデル名文字列をgemini-3.5-flashにすることです。初めてでも、約10分でFlashへのリクエストを実行できます。

Gemini 3.5 Flash API

Gemini 3.5 Flash APIでできること

最初に押さえるポイントは3つです。

  • gemini-3.5-flash: 現在利用可能な高速・低コスト・マルチモーダルモデル
  • 既存のGemini APIパターンを踏襲: Gemini 3またはGemini 3.1を呼び出しているプロジェクトに適用しやすい
  • AI Studioの無料枠: クレジットカードなしで1日あたり約1,500リクエスト

Flash APIで利用できる主な機能は次のとおりです。

  • 1Mトークンの入力コンテキスト、64Kの出力トークン
  • テキスト + 画像入力
  • テキスト + 構造化出力
  • ネイティブ関数呼び出しとツール利用(MCP Atlas 83.6%)
  • ストリーミング応答(他の最先端モデルより約4倍速い出力トークン/秒)
  • GoogleのMRCR v2テーブルでトップのロングコンテキスト検索スコア
  • チャートおよびドキュメント推論(CharXiv 84.2%)

料金の詳細は、Gemini 3.5 Flash料金ガイドを参照してください。

ステップ1: Gemini 3.5 Flash APIキーを取得する

APIキーの取得方法は、無料枠を使うか、本番向けにVertex AIを使うかで分かれます。

パスA: Google AI Studio(無料枠)

  1. aistudio.google.comにアクセス
  2. Googleアカウントでサインイン
  3. 左側のナビゲーションでAPIキーを取得をクリック
  4. 既存のプロジェクトを選択するか、新規作成
  5. APIキーを作成をクリックしてコピー

このフローは、無料のGemini APIキーガイドと同じです。取得したキーは、無料の日次クォータ内でgemini-3.5-flashにそのまま使えます。

Google AI Studio API key

パスB: Vertex AI(本番環境)

請求管理や監査ログが必要な本番ワークロードでは、Vertex AIを使います。

  1. Google Cloud ConsoleでVertex AI APIを有効にする
  2. aiplatform.user権限を持つサービスアカウントを作成
  3. JSON認証情報をダウンロード
  4. gcloud auth application-default loginまたはJSONファイルで認証

Vertex AIではSDKパターンが少し異なります。多くのチームはAI Studioで検証し、組織の制御や本番運用が必要になった段階でVertex AIへ移行します。

ステップ2: SDKをインストールする

公式のGoogle GenAI SDKはPython、Node.js、Go、Javaで提供されています。

# Python
pip install -U google-genai

# Node.js
npm install @google/genai

# Go
go get google.golang.org/genai
Enter fullscreen mode Exit fullscreen mode

RESTエンドポイントを直接呼び出す場合はSDK不要です。後述のcurl例を使えます。

ステップ3: 最初のFlash呼び出しを実行する

Python

import os
from google import genai

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Explain how OAuth 2.0 PKCE flow works in 3 short paragraphs."
)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

Node.js

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: "Explain how OAuth 2.0 PKCE flow works in 3 short paragraphs.",
});

console.log(response.text);
Enter fullscreen mode Exit fullscreen mode

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [{"text": "Explain how OAuth 2.0 PKCE flow works in 3 short paragraphs."}]
    }]
  }'
Enter fullscreen mode Exit fullscreen mode

これで最小構成のFlash呼び出しは完了です。ここからストリーミング、画像入力、ツール呼び出し、構造化出力を追加していきます。

ストリーミング応答を使う

Flashの出力速度をUIで活かすには、ストリーミングを使います。

Python

stream = client.models.generate_content_stream(
    model="gemini-3.5-flash",
    contents="Write a 5-step tutorial on writing a REST API client in Go."
)

for chunk in stream:
    print(chunk.text, end="", flush=True)
Enter fullscreen mode Exit fullscreen mode

Node.js

const stream = await ai.models.generateContentStream({
  model: "gemini-3.5-flash",
  contents: "Write a 5-step tutorial on writing a REST API client in Go.",
});

for await (const chunk of stream) {
  process.stdout.write(chunk.text);
}
Enter fullscreen mode Exit fullscreen mode

RESTで直接呼び出す場合は、エンドポイントを:generateContentから:streamGenerateContentに変更します。

Flashでマルチモーダル入力を処理する

Gemini 3.5 Flashは、テキストと画像を同時に受け取れます。ダッシュボードやチャートを読み取り、構造化データとして返す用途に使えます。

Python: ディスク上の画像を送信する

import os
from google import genai
from google.genai import types

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

with open("dashboard.png", "rb") as f:
    image_bytes = f.read()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents=[
        types.Part.from_bytes(data=image_bytes, mime_type="image/png"),
        "Extract every metric in this dashboard as a JSON object."
    ]
)

print(response.text)
Enter fullscreen mode Exit fullscreen mode

サポートされるMIMEタイプは次のとおりです。

  • image/png
  • image/jpeg
  • image/webp
  • image/heic
  • image/heif

PDFと動画もtypes.Part.from_uri()経由で扱えます。

Flashで関数呼び出しとツール利用を実装する

Flashはネイティブの関数呼び出しをサポートしています。モデルにツール定義を渡すと、必要に応じて呼び出す関数名と引数を返します。

Python

from google.genai import types

weather_tool = types.Tool(
    function_declarations=[{
        "name": "get_current_weather",
        "description": "Get the current weather for a city.",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "City name"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            },
            "required": ["city"]
        }
    }]
)

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="What's the weather in Singapore right now?",
    config=types.GenerateContentConfig(tools=[weather_tool])
)

for part in response.candidates[0].content.parts:
    if part.function_call:
        print(f"Call: {part.function_call.name}")
        print(f"Args: {dict(part.function_call.args)}")
Enter fullscreen mode Exit fullscreen mode

Flashはfunction_callオブジェクトを返します。アプリケーション側では次の流れで処理します。

  1. function_call.nameで呼び出す関数を判定
  2. function_call.argsを検証
  3. ローカルまたは外部APIで関数を実行
  4. 実行結果をモデルに返して会話を継続

このパターンは、Gemini 3 Flash APIで使われていた実装と同じです。

構造化出力(JSONモード)を使う

レスポンスのMIMEタイプとスキーマを指定すると、FlashからJSON形式の出力を得られます。

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="List 3 popular API testing tools with their pricing.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json",
        response_schema={
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "price_per_month": {"type": "number"},
                    "free_tier": {"type": "boolean"}
                },
                "required": ["name", "free_tier"]
            }
        }
    )
)

import json
data = json.loads(response.text)
Enter fullscreen mode Exit fullscreen mode

JSONモードを使うと、正規表現でレスポンスを抽出したり、壊れたJSONのリトライ処理を書いたりする必要が減ります。

料金(2026年5月現在)

gemini-3.5-flashの従量課金制料金は次のとおりです。

ティア 入力 出力
Standard 約$1.50 / 1Mトークン 約$9.00 / 1Mトークン
Cached input 割引料金 該当なし
Batch mode 約50%オフ 約50%オフ

バッチワークロードでは、Gemini APIバッチモードにより、リアルタイムのレイテンシを必要としないジョブで約50%の割引を利用できます。

より具体的なコスト計算は、Flash料金の内訳を参照してください。公式情報はGemini Developer API料金にあります。

ApidogでGemini 3.5 Flash統合をテストする

SDK呼び出しが成功しても、本番統合では次の検証が必要です。

  • ストリーミングチャンクが正しく処理されるか
  • ツール呼び出しの引数がスキーマに一致するか
  • 画像やPDFを含むマルチモーダルペイロードが壊れないか
  • エラー時にリトライできるか
  • レート制限時の挙動が想定どおりか

Apidog Gemini testing

Apidogを使うと、Gemini Flash APIのテストを1つのワークスペースで管理できます。

  • Flashエンドポイントをリクエストとして保存: URLを貼り付け、x-goog-api-keyを設定して送信
  • モデルバージョンをまたいでリプレイ: 同じリクエストでgemini-3.5-flashを古いgemini-3-flashに変更し、出力を比較
  • ストリーム応答をインラインで確認: 到着したストリームチャンクをタイミング付きで確認
  • JSONスキーマ出力を検証: プロンプト変更によるレスポンス形状のずれを検出
  • Flashエンドポイントをモック: APIクォータを消費せずに下流コードをテスト
  • エージェントループのテストシナリオを構築: 複数のFlash呼び出しとツール呼び出し検証を組み合わせる

始めるには、Apidogをダウンロードし、Flashエンドポイントを指す新しいリクエストを作成して、この記事のcurlスニペットをインポートします。設定は約2分で完了します。

エラー処理とレート制限

Flashでよく扱うHTTPステータスは次のとおりです。

  • 400: 不正なリクエスト。contents配列の形式不備、または未対応MIMEタイプが多い
  • 401: APIキーが不正
  • 403: クォータ超過、またはモデルが有効になっていない
  • 429: レート制限。待機して再試行
  • 500/503: サーバー側エラー。指数関数的バックオフで再試行

最小限のリトライ処理は次のように実装できます。

import time
from google import genai

def call_with_retry(client, model, prompt, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.models.generate_content(model=model, contents=prompt)
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            time.sleep(2 ** attempt)
Enter fullscreen mode Exit fullscreen mode

無料枠のクォータは毎日リセットされます。目安は1分あたり15リクエスト、Flashでは1日あたり約1,500リクエストです。本番ティアでは、クォータは1分単位および1日単位で管理されます。

高スループットのジョブでは、バッチモードを検討してください。制限に達したときのフォールバックとして、Gemini 3 Flashへの切り替えを設計することもできます。

Gemini 3.1から3.5 Flashへ移行する

多くのプロジェクトでは、変更するのはモデル名だけです。

# Before
model="gemini-3.1-pro"  # or gemini-3.1-flash

# After
model="gemini-3.5-flash"
Enter fullscreen mode Exit fullscreen mode

切り替え後は、次の項目を確認してください。

  1. ツールスキーマ: 既存の関数定義が期待どおり呼び出されるか評価を再実行
  2. 出力速度: Flashはストリーミングが高速なため、UI側でスロットリングが必要になる場合がある
  3. トークン予算: 1M / 64Kの制限は同じだが、プロンプトによって出力トークン数が変わる可能性がある
  4. 拒否パターン: 安全ガードレールにより、エッジケースで異なる拒否が発生する可能性がある

SDKパターンの詳細は、Gemini 3.1 Pro APIガイドを参照してください。基本的な実装はそのまま引き継げます。

よく使うFlash実装パターン

ロングコンテキストのドキュメント分析

with open("large_report.pdf", "rb") as f:
    pdf_bytes = f.read()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents=[
        types.Part.from_bytes(data=pdf_bytes, mime_type="application/pdf"),
        "Summarize the financial outlook from this report in 5 bullet points."
    ]
)
Enter fullscreen mode Exit fullscreen mode

Flashの1Mトークンコンテキストにより、チャンキングなしで大きなPDFを処理できます。

ツール呼び出しを伴うエージェントループ

conversation = [{"role": "user", "parts": [{"text": "Book me a flight to Tokyo"}]}]

while True:
    response = client.models.generate_content(
        model="gemini-3.5-flash",
        contents=conversation,
        config=types.GenerateContentConfig(tools=[flight_search_tool, booking_tool])
    )

    part = response.candidates[0].content.parts[0]
    if not part.function_call:
        print(part.text)
        break

    result = execute_tool(part.function_call)
    conversation.append({"role": "model", "parts": [part]})
    conversation.append({"role": "user", "parts": [{"function_response": result}]})
Enter fullscreen mode Exit fullscreen mode

このループでは、モデルがツール呼び出しを返した場合にアプリケーション側で実行し、その結果を会話に戻します。

よくある質問

Gemini 3.5 Flash APIに無料枠はありますか?

はい。Google AI Studioを通じて日次クォータ(1日あたり約1,500リクエスト)を利用できます。クレジットカードは不要です。

FlashはOpenAI互換エンドポイントをサポートしていますか?

はい。Googleは/v1beta/openai/でOpenAI互換のシムを提供しています。base_urlを設定し、Geminiキーを使うことでOpenAI SDKから呼び出せます。モデル名はgemini-3.5-flashのままです。

FlashをLangChainまたはLlamaIndexで使えますか?

はい。どちらもネイティブのGemini統合があります。各ラッパーでmodel="gemini-3.5-flash"を指定してください。

Gemini 3.5 Proはいつ提供されますか?

Googleの発表によると2026年6月です。それまではFlashが利用可能な唯一の3.5バリアントです。

Flashの最大画像サイズは?

推奨は3072×3072です。これより大きい画像はリサンプルされます。OCR中心のワークフローは、Gemini 2.0 Flash OCRワークフローを参照してください。同じパターンを適用できます。

Apidogでストリーミングエンドポイントをテストするには?

リクエストを開き、エンドポイントサフィックスを:streamGenerateContentに設定します。Apidogは到着したSSEチャンクをレンダリングするため、不完全な応答のデバッグに役立ちます。

APIログはどこで確認できますか?

AI Studioでは「アクティビティ」、本番デプロイではVertex AIの「ログエクスプローラ」で確認できます。

最初に構築するなら

Flashを使い始めた最初の週に試しやすいスタータープロジェクトは次のとおりです。

  • PDF Q&Aボット: PDFを1Mコンテキストウィンドウに入れ、質問に対して引用付きで回答する
  • チャートからJSONへのパイプライン: ダッシュボードのスクリーンショットから構造化データを抽出する
  • 顧客サポートエージェント: CRMに対する関数呼び出しを実行する
  • コードレビューアシスタント: マルチファイル差分を読み、重要度付きの構造化出力を返す
  • 内部検索エージェント: 1Mコンテキストと内部APIへのツール呼び出しを組み合わせる

どのプロジェクトでも流れは同じです。プロンプトを作成し、SDK呼び出しでラップし、Apidogでレスポンス形状を検証してからリリースします。

Top comments (0)