Gemini 3.5 Flash APIは、2026年5月19日のモデルローンチと同時に公開されました。Flashは現在利用可能な3.5ファミリーの唯一のバリアントです。Proは6月に登場します。このガイドでは、APIキーの取得、最初の呼び出し、マルチモーダル入力、ストリーミング、ツール利用、そしてApidogでのテストまでを、実装手順ベースで説明します。
以前にGemini APIを使ったことがある場合、基本パターンは同じです。変更点はモデル名文字列をgemini-3.5-flashにすることです。初めてでも、約10分でFlashへのリクエストを実行できます。
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(無料枠)
- aistudio.google.comにアクセス
- Googleアカウントでサインイン
- 左側のナビゲーションでAPIキーを取得をクリック
- 既存のプロジェクトを選択するか、新規作成
- APIキーを作成をクリックしてコピー
このフローは、無料のGemini APIキーガイドと同じです。取得したキーは、無料の日次クォータ内でgemini-3.5-flashにそのまま使えます。
パスB: Vertex AI(本番環境)
請求管理や監査ログが必要な本番ワークロードでは、Vertex AIを使います。
- Google Cloud ConsoleでVertex AI APIを有効にする
-
aiplatform.user権限を持つサービスアカウントを作成 - JSON認証情報をダウンロード
-
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
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)
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);
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."}]
}]
}'
これで最小構成の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)
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);
}
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)
サポートされるMIMEタイプは次のとおりです。
image/pngimage/jpegimage/webpimage/heicimage/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)}")
Flashはfunction_callオブジェクトを返します。アプリケーション側では次の流れで処理します。
-
function_call.nameで呼び出す関数を判定 -
function_call.argsを検証 - ローカルまたは外部APIで関数を実行
- 実行結果をモデルに返して会話を継続
このパターンは、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)
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 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)
無料枠のクォータは毎日リセットされます。目安は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"
切り替え後は、次の項目を確認してください。
- ツールスキーマ: 既存の関数定義が期待どおり呼び出されるか評価を再実行
- 出力速度: Flashはストリーミングが高速なため、UI側でスロットリングが必要になる場合がある
- トークン予算: 1M / 64Kの制限は同じだが、プロンプトによって出力トークン数が変わる可能性がある
- 拒否パターン: 安全ガードレールにより、エッジケースで異なる拒否が発生する可能性がある
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."
]
)
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}]})
このループでは、モデルがツール呼び出しを返した場合にアプリケーション側で実行し、その結果を会話に戻します。
よくある質問
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)