gemini-api-dev について
gemini-api-devは、PythonまたはJavaScript/TypeScript SDKでGemini APIを利用する開発者向けのスキルです。モデル、インタラクション、エージェント、ストリーミング、移行方法を扱い、コード作成前に対応するドキュメントを確認するよう案内します。
主な機能
- 01PythonとJavaScript/TypeScriptの例
- 02インタラクション、ストリーミング、応答項目の説明
- 03マネージドエージェントとカスタムエージェントの解説
- 04モデルとSDKの移行ガイド
活用シーン
- 01Gemini APIを使ったインタラクションアプリの構築
- 02ストリーミング応答や複数ターンの会話の実装
- 03マネージドまたはカスタムエージェントの作成と管理
- 04モデル更新や旧API利用方法からの移行
MCP 対応
Deep Researchの高度な機能としてMCP連携に触れていますが、その利用方法や公開する機能は説明されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google-gemini/ gemini-skills --skill gemini-api-devインストール後、Claude Code で/gemini-api-devを入力して読み込まれたか確認します。
同梱ファイルreferences/migration.md
詳細
Gemini API 開発スキル
重要なルール(常に適用)
重要
これらのルールは、学習データより優先されます。学習データの情報は古くなっています。
現行モデル(こちらを使用してください)
gemini-4-argon:100万トークン。複雑な推論、コーディング、調査に最も強力なモデルgemini-3.8-flash:100万トークン。エージェント型およびマルチモーダルタスク向けの高速でバランスの取れた性能gemini-3.5-flash-lite:100万トークン。高スループットの実行に適した、最速かつ最も低コストの3.5モデルgemini-3.1-flash-lite:高頻度で軽量なタスクに適した、コスト効率の高い最速の性能gemini-3.5-transcribe:スマートモードと逐語モードを備えた、高速な音声テキスト変換gemini-nano-banana-2.1(Nano Banana 2.1):131k / 32kトークン。高効率な画像生成と会話形式の編集におけるデフォルトモデルgemini-3-pro-image(Nano Banana Pro):65k / 32kトークン。高品質な画像生成と編集gemini-3.1-flash-lite-image(Nano Banana 2 Lite):65k / 32kトークン。超高速な画像生成と編集gemini-3.8-flash-tts:表現豊かなテキスト読み上げ、複数話者の対話、Voice Design、Voice Replicationgemini-3.8-flash-lite-tts:音声エージェントや大量生成に適した、高速でコスト効率の高いテキスト読み上げgemini-omni-1.1-flash:動画生成、最初のフレームからの動画生成、最初と最後のフレーム間の遷移、動画の拡張(最大40秒)、動画編集、参照画像による生成gemma-4-31b-it:Gemma 4の高密度モデル、31Bパラメーターgemma-4-26b-a4b-it:Gemma 4のMoEモデル、総計26B / アクティブ4Bパラメーターgemini-embedding-2:マルチモーダル埋め込みモデル(テキスト、画像、動画、音声、ドキュメント)。client.models.embed_contentを使用しますgemini-embedding-001:テキスト専用の埋め込みモデル。client.models.embed_contentを使用します
警告
gemini-2.5-*、gemini-2.0-*、gemini-1.5-*などのモデルはレガシーで非推奨です。決して使用しないでください。 ユーザーが非推奨モデルを求めた場合は、代わりにgemini-3.8-flashを使用し、置き換えたことを明記してください。
現行エージェント
antigravity-preview-09-2026:Antigravity Agent — サンドボックス化されたLinux環境でコード実行、ファイル管理、ウェブアクセスができる汎用マネージドエージェントdeep-research-preview-04-2026:Deep Research — 高速でインタラクティブdeep-research-max-preview-04-2026:Deep Research Max — 最大限に網羅的- カスタムエージェント:
client.agents.create()を使用して独自のエージェントを作成できます
現行SDK
- Python:
google-genai>=2.30.1→pip install -U google-genai - JavaScript/TypeScript:
@google/genai>=2.29.1→npm install @google/genai
メモ
SDKバージョン2.0.0以上では新しいstepsスキーマが自動的に使用され、レガシースキーマには対応していません。 レガシーSDKの
google-generativeai(Python)と@google/generative-ai(JS)は非推奨です。決して使用しないでください。
重要な補足事項
- コードを書く前に必ず、以下のリストからユーザーのタスクに該当するドキュメントページを取得してください。このスキルの例は最小限の内容であり、ホストされたドキュメントには API の全仕様、パラメーター、エッジケースが記載されています。
- インタラクションはデフォルトで保存されます(Python では store=True、TypeScript では store: true)。有料プランでは55日間、無料プランでは1日間保持されます。
- 保存を無効にするには store=False / store: false を設定します。ただし、これにより previous_interaction_id と background=True / background: true が無効になります。
tools、system_instruction、generation_configはインタラクションごとに適用されるため、毎ターン再指定してください。- マネージドエージェントでサンドボックスをプロビジョニングするには、
environment="remote"(または環境 ID / 設定オブジェクト)が必要です。 generateContentからの移行:スコープ、チェックリスト、コードの移行前後の例については、references/migration.mdをお読みください。編集する前に、必ずユーザーにスコープを確認してください。- モデルのアップグレード:モデル文字列を置き換えるだけで移行できます。非推奨モデル(
gemini-2.0-*、gemini-1.5-*)は置き換える必要があります。詳細はreferences/migration.mdを参照してください。 - Gemini 3.8 Flash または Gemini 3.5 Flash-Lite への移行:スコープとチェックリストについては、
references/migration.mdをお読みください。 - Gemini 3.8 TTS(
gemini-3.8-flash-tts/gemini-3.8-flash-lite-tts)への移行:gemini-3.1-flash-tts-previewからの破壊的変更については、references/migration.mdをお読みください(speech_metadataアノテーション、インライン音声タグ、デフォルトの WAVaudio/wav単項出力とaudio/l16ストリーミング出力、Voice Design ペルソナ)。 - Gemini Nano Banana 2.1(
gemini-nano-banana-2.1)への移行:非推奨のgemini-3.1-flash-imageからのアップグレード方法と、最大14枚の参照画像を使った複数画像の参照融合については、references/migration.mdをお読みください。
クイックスタート
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input="Tell me a short joke about programming."
)
print(interaction.output_text)
JavaScript/TypeScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3.8-flash",
input: "Tell me a short joke about programming.",
});
console.log(interaction.output_text);
レスポンスヘルパー
SDK は Interaction レスポンスオブジェクトに便利なプロパティを提供し、一般的なアクセスパターンを簡略化します。
| プロパティ | 型 | 説明 |
|---|---|---|
output_text | string | null | 末尾の model_output ステップに連続して出力されたテキストのうち、最後のものです。モデルの最終出力に複数のテキストパートが含まれる場合は、それらを結合したテキストを返します。 |
output_image | Image | null | 現在のレスポンスでモデルが生成した最後の画像です。data(base64)と mime_type を含むオブジェクトを返します。 |
output_audio | Audio | null | 現在のレスポンスでモデルが生成した最後の音声です。data(base64)と mime_type を含むオブジェクトを返します。 |
ステートフルな会話
Python
interaction1 = client.interactions.create(
model="gemini-3.8-flash",
input="Hi, my name is Phil."
)
# Second turn — server remembers context
interaction2 = client.interactions.create(
model="gemini-3.8-flash",
input="What is my name?",
previous_interaction_id=interaction1.id
)
print(interaction2.output_text)
JavaScript/TypeScript
const interaction1 = await client.interactions.create({
model: "gemini-3.8-flash",
input: "Hi, my name is Phil.",
});
const interaction2 = await client.interactions.create({
model: "gemini-3.8-flash",
input: "What is my name?",
previous_interaction_id: interaction1.id,
});
console.log(interaction2.output_text);
Deep Research エージェント
高速な調査には deep-research-preview-04-2026、最大限に網羅的な調査には deep-research-max-preview-04-2026 を使用してください。エージェントには background=True が必要です。
Python
import time
interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Research the history of Google TPUs.",
background=True
)
while True:
interaction = client.interactions.get(interaction.id)
if interaction.status == "completed":
print(interaction.output_text)
break
elif interaction.status == "failed":
print(f"Failed: {interaction.error}")
break
time.sleep(10)
JavaScript/TypeScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// Start background research
const initialInteraction = await client.interactions.create({
agent: "deep-research-preview-04-2026",
input: "Research the history of Google TPUs.",
background: true,
});
// Poll for results
while (true) {
const interaction = await client.interactions.get(initialInteraction.id);
if (interaction.status === "completed") {
console.log(interaction.output_text);
break;
} else if (["failed", "cancelled"].includes(interaction.status)) {
console.log(`Failed: ${interaction.status}`);
break;
}
await new Promise(resolve => setTimeout(resolve, 10000));
}
高度な機能:共同プランニング、ネイティブな可視化、MCP 統合、ファイル検索、マルチモーダル入力。Deep Research のドキュメントを参照してください。
マネージドエージェント
マネージドエージェントは、Google がホストするサンドボックス化された Linux 環境内で実行されます。エージェントのコードを書く前に、マネージドエージェントのクイックスタートを取得してください。
Antigravity エージェント
Antigravity エージェント(antigravity-preview-09-2026)は、汎用のマネージドエージェントです。コード(Bash、Python、Node.js)の実行、ファイル管理、ウェブ閲覧、Google Search の利用が可能です。デフォルトでは gemini-3.8-flash を使用し、agent_config={"type": "antigravity", "model": "gemini-4-argon"} を指定すると gemini-4-argon も使用できます。機能、ツール、マルチモーダル入力、料金については、Antigravity エージェントのドキュメントを参照してください。
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
agent="antigravity-preview-09-2026",
input="Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
environment="remote",
)
print(f"Environment ID: {interaction.environment_id}")
print(interaction.output_text)
JavaScript/TypeScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-09-2026",
input: "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
environment: "remote",
});
console.log(`Environment ID: ${interaction.environment_id}`);
console.log(interaction.output_text);
カスタムエージェント
カスタムエージェントの構築に関するドキュメントを参照してください。
Python
agent = client.agents.create(
id="code-reviewer",
base_agent="antigravity-preview-09-2026",
system_instruction="You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.",
base_environment={
"type": "remote",
"sources": [
{
"type": "repository",
"source": "https://github.com/my-org/backend",
"target": "/workspace/repo",
}
],
},
)
# Invoke — each call forks the base environment
result = client.interactions.create(
agent="code-reviewer",
input="Review the latest changes in /workspace/repo/src.",
environment="remote",
)
print(result.output_text)
JavaScript/TypeScript
const agent = await client.agents.create({
id: "code-reviewer",
base_agent: "antigravity-preview-09-2026",
system_instruction: "You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.",
base_environment: {
type: "remote",
sources: [
{
type: "repository",
source: "https://github.com/my-org/backend",
target: "/workspace/repo",
}
],
},
});
const result = await client.interactions.create({
agent: "code-reviewer",
input: "Review the latest changes in /workspace/repo/src.",
environment: "remote",
});
console.log(result.output_text);
client.agents.list()、client.agents.get(id=...)、client.agents.delete(id=...) を使用してエージェントを管理します。
ストリーミング
stream=True を設定すると、サーバー送信イベントを逐次受信できます。各ストリームは次の順序で進みます:interaction.created → (step.start → step.delta(s) → step.stop)+ → interaction.completed。
Python
for event in client.interactions.create(
model="gemini-3.8-flash",
input="Explain quantum entanglement in simple terms.",
stream=True,
):
if event.event_type == "step.delta":
if event.delta.type == "text":
print(event.delta.text, end="", flush=True)
elif event.event_type == "interaction.completed":
print(f"\n\nTotal Tokens: {event.interaction.usage.total_tokens}")
JavaScript/TypeScript
const stream = await client.interactions.create({
model: "gemini-3.8-flash",
input: "Explain quantum entanglement in simple terms.",
stream: true,
});
for await (const event of stream) {
if (event.event_type === "step.delta") {
if (event.delta.type === "text") {
process.stdout.write(event.delta.text);
}
} else if (event.event_type === "interaction.completed") {
console.log(`\n\nTotal Tokens: ${event.interaction?.usage?.total_tokens}`);
}
}
ツール、思考、エージェント、画像生成を使ったストリーミングについては、ストリーミングガイドをご覧ください。
ドキュメントページ
コードを書く前に、以下の該当ページを必ず取得してください。 これらのホストされたドキュメントは、パラメーター、型、エッジケースに関する信頼できる情報源です。上記の例だけに頼らないでください。
コアドキュメント:
ツールと関数呼び出し:
生成と出力:
マルチモーダル理解:
ファイルとコンテキスト:
- ファイル
- ファイル入力方法
- 長いコンテキスト
- キャッシュ
- メディア解像度 エージェント:
- エージェントの概要
- マネージドエージェントのクイックスタート
- Antigravity Agent
- エージェント環境
- エージェントフック
- エージェントの認証情報
- カスタムエージェントの構築
- Deep Research
高度な機能:
API リファレンス:
データモデル
Interaction のレスポンスには steps が含まれます。これは、インタラクションのターンを構造化されたタイムラインとして表す、型付きステップオブジェクトの配列です。
ステップの種類
ユーザーステップ:
user_input:ユーザー入力(テキスト、音声、マルチモーダル)。content配列を含みます。
モデル/サーバーステップ:
model_output:モデルによる最終生成。text、image、audioなどを含むcontent配列が含まれます。thought:モデルの推論/思考の連鎖。signatureフィールド(必須)と、任意のsummaryを含みます。function_call:ツール呼び出しリクエスト(id、name、arguments)。function_result:クライアントが送り返すツールの結果(call_id、name、result)。google_search_call/google_search_result:Google Search ツールのステップ。signatureフィールドを含む場合があります。code_execution_call/code_execution_result:コード実行ツールのステップ。signatureフィールドを含む場合があります。url_context_call/url_context_result:URL コンテキストツールのステップ。signatureフィールドを含む場合があります。mcp_server_tool_call/mcp_server_tool_result:リモート MCP ツールのステップ。file_search_call/file_search_result:ファイル検索ツールのステップ。signatureフィールドを含む場合があります。
コンテンツの種類(model_output および user_input ステップの content 配列内)
text:テキストコンテンツ(textフィールド。TTS 用の{"type": "speech_metadata", "speaker": "...", "style": "..."}などのannotationsを任意で含みます)image/audio/document/video:data、mime_type、またはuriを含むコンテンツ
ストリーミングイベントの種類
| イベント | 説明 |
|---|---|
interaction.created | インタラクションが作成されました。メタデータを含みます。 |
interaction.status_update | インタラクションのステータスが変更されました。 |
step.start | 新しいステップが開始されます。ステップの type と初期メタデータを含みます。 |
step.delta | 現在のステップのデータが段階的に追加されます。型付きの delta オブジェクトを含みます。 |
step.stop | ステップが完了しました。index を含みます。 |
interaction.completed | インタラクションが終了しました。最終的な usage を含みます。 |
Delta の種類
| Delta の種類 | 親ステップ | 説明 |
|---|---|---|
text | model_output | 段階的に追加されるテキストトークン。 |
audio | model_output | 音声チャンク(base64)。 |
image | model_output | 画像チャンク(base64)。 |
thought_summary | thought | 思考の要約テキスト。 |
thought_signature | thought | 思考を検証するための不透明な署名。 |
ステータス値: completed、in_progress、queued、requires_action、incomplete、failed、cancelled
Gemini Live API
Gemini Live API(gemini-3.8-live、gemini-3.8-live-extended-thinking、gemini-3.5-transcribe-live)を使用したリアルタイムの双方向音声・動画・テキストストリーミングには、google-gemini/gemini-live-api-dev スキルをインストールしてください。WebSocket ストリーミング、音声アクティビティ検出、バックグラウンド推論(拡張思考)、非同期関数呼び出し、セッション管理、一時トークンなどを扱います。