
Gemini 2.0 の APIのはじめ方
「Gemini 2.0」の APIのはじめ方をまとめました。
1. Gemini 2.0 Flash
「Gemini 2.0 Flash」は、「Gemini Developer API」と「Google AI Studio」を通じて、実験的なプレビューリリースとして利用できるようになりました。
このモデルの新機能は、次のとおりです。
・Multimodal Live API
ツールを使用してリアルタイムのビジョンおよびオーディオストリーミング アプリケーションを作成するのに役立ちます。
・速度とパフォーマンス
「Gemini 1.5 Flash」とに比べて、最初のトークン生成までの時間 (TTFT) が大幅に改善されています。
・品質
「Gemini 1.5 Pro」と比べて、ほとんどのベンチマークでより優れています。
・エージェント機能の向上
マルチモーダル理解、コーディング、複雑な指示の追跡、Function Callingが改善されています。
・新しいモダリティ
ネイティブ画像生成と制御可能なテキスト読み上げ機能が導入されています。
新しいSDKもリリースしています。「Gemini 2.0」の技術的な詳細については、Geminiモデルを参照してください。
【注意】画像と音声の生成は、許可リストの下、非公開の実験的リリースです。その他のすべての機能は公開実験的です。
2. Google Gen AI SDK (experimental)
新しい「Google Gen AI SDK」は、「Gemini Developer API」と「Vertex AI」上の「Gemini API」の両方を通じて、「Gemini 2.0」への統合インターフェースを提供します。いくつかの例外を除き、1つのプラットフォームで実行されるコードは両方のプラットフォームで実行されます。つまり、「Developer API」を使用してアプリケーションのプロトタイプを作成し、コードを書き直すことなくアプリケーションを「Vertex AI」に移行できます。
「Gen AI SDK」は「Gemini 1.5」もサポートしています。
新しいSDKは「Python」と「Go」で利用可能で、「Java」と「JavaScript」でも近日中に利用可能になります。
SDKの使用手順は、次のとおりです。
(1) 新しいSDKをインストール
pip install google-genai
(2) ライブラリをインポートし、クライアントを初期化して、コンテンツを生成。
from google import genai
client = genai.Client(
api_key="YOUR_API_KEY"
)
response = client.models.generate_content(
model='gemini-2.0-flash-exp', contents='How does AI work?'
)
print(response.text)
【オプション】環境変数の設定
環境変数を使用してクライアントを初期化することもできます。
# YOUR_API_KEYを自分のAPIキーに置き換える
export GOOGLE_API_KEY=YOUR_API_KEY
引数なしでクライアントを初期化できます。
client = genai.Client()
Python 開発者は、 Cookbook の「Getting Started」ノートブックを試すこともできます。
3. Multimodal Live API
「Multimodal Live API」を使用すると、「Gemini」との低遅延の双方向音声およびビデオインタラクションが可能になります。エンド ユーザーに自然で人間のような音声会話の体験を提供し、音声コマンドを使用してモデルの応答を中断することができます。モデルはテキストとオーディオとビデオの入力を処理し、テキストとオーディオの出力を提供できます。
「Gemini API」でBidiGenerateContentメソッドとして利用でき、 WebSocket上に構築されています。
使い始める際に役立つ、簡単なText-to-Textの例を次に示します。
from google import genai
client = genai.Client()
model_id = "gemini-2.0-flash-exp"
config = {"response_modalities": ["TEXT"]}
async with client.aio.live.connect(model=model_id, config=config) as session:
message = "Hello? Gemini, are you there?"
print("> ", message, "\n")
await session.send(message, end_of_turn=True)
async for response in session.receive():
print(response.text)
主な機能は次のとおりです。
・マルチモーダル性 : モデルは、見たり、聞いたり、話したりできます。
・低遅延のリアルタイムインタラクション : 高速応答を提供します。
・セッションメモリ : モデルは、1 つのセッション内のすべてのインタラクションのメモリを保持し、以前に聞いたり見たりした情報を呼び出します。
・Function Calling・コード実行・ツールとしての検索のサポート : 外部サービスおよびデータ ソースとの統合を可能にします。
・自動音声アクティビティ検出 (VAD) : モデルは、ユーザーが話し始めたときと話し終えたときを正確に認識できます。これにより、自然な会話インタラクションが可能になり、ユーザーはいつでもモデルを中断できます。
言語は英語のみです。
オーディオ入力とオーディオ出力はどちらも、Function Callingを使用するモデルの能力に悪影響を及ぼします。APIの機能と制限事項の詳細については、「Multimodal Live API reference guide」を参照してください。
「Google AI Studio」で「Multimodal Live API」を試すことができます。開発を開始するには、Webコンソール (Reactで記述) を試してください。Python開発者の場合は、スターターコード (notebookと.py file) を試してください。ノートブックから始めるのが最も簡単かもしれませんが、APIはターミナルから実行すると最もうまく機能します。
4. Search as a tool
「Grounding」を「Google検索」と併用すると、モデルからの応答の精度と最新性を向上させることができます。「Gemini 2.0」以降では、「Google検索」をツールとして使用できます。つまり、モデルは「Google検索」をいつ使用するかを決定できます。
次の例は、検索をツールとして構成する方法を示しています。
from google import genai
from google.genai.types import Tool, GenerateContentConfig, GoogleSearch
client = genai.Client()
model_id = "gemini-2.0-flash-exp"
google_search_tool = Tool(
google_search = GoogleSearch()
)
response = client.models.generate_content(
model=model_id,
contents="When is the next total solar eclipse in the United States?",
config=GenerateContentConfig(
tools=[google_search_tool],
response_modalities=["TEXT"],
)
)
for each in response.candidates[0].content.parts:
print(each.text)
# 応答例:
# The next total solar eclipse visible in the contiguous United States will be on ...
# To get grounding metadata as web content.
print(response.candidates[0].grounding_metadata.search_entry_point.rendered_content)
また、ツールとしての検索機能により、「マルチターン検索」や「マルチツールクエリ」も可能になります (たとえば、GroundingをGoogle検索やコード実行と組み合わせる)。
ツールとしての検索により、計画、推論、思考を必要とする複雑なプロンプトやワークフローが可能になります。
・事実性と最新性を高め、より正確な回答を提供するための基盤構築
・Web から成果物を取得してさらに分析
・マルチモーダル推論または生成タスクを支援するために、関連する画像、ビデオ、その他のメディアを検索
・コーディング、技術的なトラブルシューティング、およびその他の専門的なタスク
・地域固有の情報を検索するか、コンテンツを正確に翻訳するのを支援
・さらに閲覧するための関連Webサイトを検索
Search tool notebookからはじめることができます。
5. ツールの改善
「Gemini 2.0」では、Function Callingと、エージェント体験のサポートを強化するツールが改善されました。
5-1. Compositional Function Calling
「Gemini 2.0」は、新しい「Functin Calling」である「Compositional Function Calling」をサポートしています。「Compositional Function Calling」により、「Gemini API」は応答を生成するプロセスで複数のユーザー定義関数を自動的に呼び出すことができます。たとえば、「現在の場所の気温を取得してください」というプロンプトに応答する場合、「Gemini API」は get_current_location() と、場所をパラメータとして受け取る get_weather() 関数の両方を呼び出すことがあります。
コード実行による「Compositional Function Calling」には双方向ストリーミングが必要であり、新しい「Multimodal Live API」でのみサポートされています。
「Compositional Function Calling」、コード実行、「Multimodal Live API 」を一緒に使用する方法を示す例は、次もとおりです。
turn_on_the_lights_schema = {'name': 'turn_on_the_lights'}
turn_off_the_lights_schema = {'name': 'turn_off_the_lights'}
prompt = """
Hey, can you write run some python code to turn on the lights, wait 10s and then turn off the lights?
"""
tools = [
{'code_execution': {}},
{'function_declarations': [turn_on_the_lights_schema, turn_off_the_lights_schema]}
]
await run(prompt, tools=tools, modality="AUDIO")
【注意】非同期 Websocket セットアップを処理する関数run()宣言は、簡潔にするために省略されています。
Python開発者は、 Live API Tool Use notebookでこれを試すことができます。
5-2. Multi-tool use
「Gemini 2.0」では、複数のツールを同時に有効にすることができ、モデルがいつそれらを呼び出すかを決定します。以下は、「Multimodal Live API」を使用したリクエストで、「Grounding with Google Search」と「コード実行」の 2つのツールを有効にする例です。
prompt = """
Hey, I need you to do three things for me.
1. Turn on the lights.
2. Then compute the largest prime palindrome under 100000.
3. Then use Google Search to look up information about the largest earthquake in California the week of Dec 5 2024.
Thanks!
"""
tools = [
{'google_search': {}},
{'code_execution': {}},
{'function_declarations': [turn_on_the_lights_schema, turn_off_the_lights_schema]}
]
await run(prompt, tools=tools, modality="AUDIO")
【注意】非同期 Websocket セットアップを処理する関数run()宣言は、簡潔にするために省略されています。
Python開発者は、 Live API Tool Use notebookでこれを試すことができます。
6. バウンディングボックス検出
この実験的なリリースでは、画像やビデオ内の物体検出と位置特定を行う強力なツールを開発者に提供します。バウンディングボックスを使用して物体を正確に識別して描画することで、開発者は幅広いアプリケーションを解き放ち、プロジェクトのインテリジェンスを強化できます。
主な利点は次のとおりです。
・シンプル
コンピュータビジョンの専門知識に関係なく、物体検出機能をアプリケーションに簡単に統合できます。
・カスタマイズ可能
カスタムモデルを学習することなく、カスタム指示 (「この画像内のすべての緑色のオブジェクトの境界ボックスを表示したい」など) に基づいてバウンディングボックスを生成します。
技術的な詳細は次のとおりです。
・入力
プロンプトと関連する画像またはビデオ フレーム。
・出力
形式の境界ボックス[y_min, x_min, y_max, x_max]。左上隅が原点です。x軸はy水平方向、軸は垂直方向です。座標値は、画像ごとに 0 ~ 1000 に正規化されます。
・視覚化
AI Studio ユーザーは、UI 内に境界ボックスがプロットされているのを確認できます。「Vertex AI」ユーザーは、カスタム視覚化コードを使用して境界ボックスを視覚化する必要があります。
Python開発者は、 2D spatial understanding notebookまたはexperimental 3D pointing notebookでこれを試すことができます。
7. 音声生成 (early access/allowlist)
「Gemini 2.0」は、新しいマルチモーダル生成機能であるテキスト読み上げをサポートしています。テキスト読み上げ機能を使用すると、モデルに人間の声のような高品質のオーディオ出力を生成するように指示することができ ( say "hi everyone")、音声を操作して出力をさらに調整することもできます。
8. 画像生成 (early access/allowlist)
「Gemini 2.0」は、インライン画像付きのテキストを出力する機能をサポートしています。これにより、「Gemini」を使用して会話形式で画像を編集したり、マルチモーダル出力 (たとえば、1 ターンでテキストと画像を含むブログ投稿) を生成したりできます。以前は、複数のモデルを連結する必要がありました。
「画像生成」は、非公開の実験リリースとして利用可能です。次のモダリティと機能をサポートしています。
・テキスト→画像
プロンプト例:「花火を背景にしたエッフェル塔の画像を生成します。」
・テキスト→画像・テキスト (インターリーブ)
プロンプト例:「パエリアのイラスト付きレシピを生成します。」
・画像・テキスト→画像・テキスト (インターリーブ)
プロンプト例: [家具付きの部屋の画像] +「私の部屋に合うソファの色は他に何色でしょうか? 画像を更新してもらえますか?」
・画像編集 (テキスト・画像→画像)
プロンプト例:「この画像を編集して漫画のように見せてください」
プロンプト例: [猫の画像] + [枕の画像] + 「この枕に私の猫のクロスステッチを作成してください。」
・マルチターン画像編集 (チャット)
プロンプトの例: [青い車の画像] +「この車をコンバーチブルに変えてください。」 「次に、色を黄色に変更してください。」
・透かし (synthID)
制限事項は次のとおりです。
・人物の生成や、アップロードした人物画像の編集は禁止です。
・画像生成は、EN、es-MX、ja-JP、zh-CN、hi-IN の言語でのみサポートされています。
・画像生成では、オーディオまたはビデオ入力はサポートされません。
・画像生成によって必ずしも次のことがトリガーされるわけではありません:
・モデルはテキストのみを出力する場合があります。画像出力を明示的に要求してみてください (例: 「画像を生成する」「作業中に画像を提供する」「画像を更新する」)。
・モデルの生成が途中で停止する可能性があります。もう一度試すか、別のプロンプトを試してください。