Skip to main content

Google GenAI SDK:Python チュートリアル付きガイド

Google の GenAI SDK は、最新の Gemini モデルを用いて、テキスト、画像、動画の処理を含む高度な生成AI機能をアプリケーションにシームレスに統合できる、統一的で柔軟なツールキットを開発者に提供します。
Created on August 27|Last edited on September 3
Google の GenAI SDK は、開発者が自分のアプリに生成AI機能を組み込みやすくします。Web、モバイル、バックエンドのいずれを対象にしていても、テキスト生成、要約、画像解釈などのタスクに対して、Google の Gemini モデルへ直接アクセスできます。外部のツールや API に依存するのではなく、開発環境の中で Google のモデルを直接扱えるようになります。
本記事では、SDK のセットアップ方法、LLM(大規模言語モデル)での推論の実行方法に加え、開発および本番環境で W&B Weave を用いてモデルのパフォーマンスをトレーシングし、追跡する方法を解説します。


目次



Gemini API と Google GenAI SDK を理解する

新しい Google GenAI SDK は、従来の SDK に比べて大きな利点を提供します。特に、Gemini Developer API と Vertex AI の両方でシームレスに機能する統一インターフェースを備えている点が挙げられます。このアーキテクチャ上の改善により、開発者は Developer API でアプリケーションをプロトタイピングし、その後大規模運用向けに Vertex AI へ移行する際も、広範なコードの書き換えを必要としません。SDK の設計思想は、開発者の生産性とデプロイの柔軟性を重視しており、異なる Google の AI サービス間を切り替えるたびに大規模なコード修正が必要だった従来 SDK での一般的な課題を解消します。
Vertex AI の Gemini API と Gemini Developer API の主な違いを示した有用な表を見つけました。要するに、Gemini API は短期的な生産性向上と迅速なプロトタイピング向け、Vertex AI は本番運用レベルのエンタープライズ規模の AI ソリューション向けに設計されています。

さらに、GenAI SDK は Python、Go、Node.js、Java を含む複数のプログラミング言語をサポートしており、開発チームが慣れ親しんだ技術スタックで作業できます。プラットフォーム間で一貫した API パターンとこのマルチ言語対応を組み合わせることで、Google の AI エコシステム内の異なるコンポーネント間を行き来する開発者の学習コストを大幅に低減します。加えて、SDK は包括的なエラー処理、ストリーミング機能、堅牢な認証機構といったモダンな開発のベストプラクティスを取り込み、既存アプリケーションへの統合を容易にします。
現在、開発者に対する推奨は Google GenAI SDK への移行です。これは、Google の AI 開発ツールの将来的な方向性を示すものだからです。古い google-generativeai このパッケージは依然として動作しますが、新しい統合 SDK によって置き換えられつつあります。google-genai)強化された機能と優れたパフォーマンス、そして拡大を続ける Google の AI モデルエコシステムをより包括的にサポートするものです。この移行は、急速に進化する生成AIの状況に適応できる最先端のツールを開発者に提供するという Google の取り組みを反映しています��

Gemini API キーの取得

Gemini API にアクセスするには、Google の生成AIサービスに対する主要な認証手段である Gemini API キーが必要です。このキーはリクエストの認可に必須で、テキスト生成から高度なマルチモーダル処理までの機能にアクセスできます。キーは次の方法で取得できます。 Google AI Studio Google アカウントでサインインし、初期費用なしで API キーを作成します。

Gemini API キーを取得したら、GenAI Python SDK を使用する前に開発環境で設定します。SDK は複数の設定方法に対応しており、キーを直接渡す、環境変数を設定する、設定ファイルを使用する、のいずれでも構いません。

Google GenAI SDK のインストールと使用方法

システムに Google GenAI SDK をインストールするには、次のコマンドを実行します。
pip install google-genai
このチュートリアルでは Weave も使用します。次のコマンドでインストールします。
pip install weave

Gemini Developer API の設定

次に、Gemini モデルとやり取りするための主要なインターフェースであるクライアントオブジェクトの作成方法を示します。 genai.Client このオブジェクトは、設定に応じて Gemini API または Vertex AI バックエンドとの通信に加え、認証も処理します。以下では、このオブジェクトを作成するいくつかの方法を示します。

オプション 1:API キーをコード内で直接渡す

from google import genai
client = genai.Client(api_key='YOUR_GEMINI_API_KEY')

オプション 2:環境変数を使用する

アプリケーションを実行する前に、必要な環境変数をターミナルまたはコマンドプロンプトで設定できます。
export GOOGLE_API_KEY='your-api-key'
または、Python スクリプトの冒頭でプログラム的に環境変数を設定します。
import os
os.environ['GOOGLE_API_KEY'] = 'your-api-key'
from google import genai
client = genai.Client()

Vertex AI 経由での Gemini API の設定

バックエンドとして Vertex AI を使用する場合は、ローカル環境に gcloud CLI をセットアップする必要があります。開始手順は次のとおりです。

ステップ 1:Google Cloud プロジェクトを作成する

まず、次の場所で新しいプロジェクトを作成します Google Cloud Consoleプロジェクトセレクターページに移動し、既存のプロジェクトを選択するか新規プロジェクトを作成します。Vertex AI を利用するには課金の有効化が必要なため、対象プロジェクトで課金が有効になっていることを確認してください。まだプロジェクトを作成していない場合は、Google Cloud の検索バーで「create project」を検索し、最初に表示される結果をクリックすると、プロジェクト作成の手順に進めます。



ステップ 2:Vertex AI API を有効にする

次に、プロジェクトで Vertex AI API を有効にします。Google Cloud Console の検索バーに「Vertex AI」と入力し、結果から Vertex AI を選択して Vertex AI ダッシュボードに移動します。「」をクリックします。「Enable All Recommended APIs」Vertex AI に必要な API を有効化します。処理の完了まで数分かかる場合があります。



ステップ 3:Google Cloud CLI を設定する

ローカル開発環境から Google Cloud のサービスにアクセスするには、gcloud CLI をインストールする必要があります。 Google Cloud のドキュメントから CLI をダウンロードしてインストールしますインストール後、次のコマンドを実行して CLI を初期化します gcloud init ターミナルで実行します。プロジェクトの選択と設定の構成を対話的に案内します。
次のコマンドを実行して、最新のツールと機能を利用できるように CLI コンポーネントを更新します。
gcloud components update
gcloud components install beta

ステップ 4:IAM ロールを構成する

管理者は、適切な IAM ロールが割り当てられていることを確認する必要があります。これらのロールには次が含まれます。
  • Vertex AI ユーザーまたはVertex AI 管理者、および
  • サービス アカウント ユーザー
Vertex AI の具体的な要件や利用目的に応じて異なりますが、このチュートリアルでは Vertex AI 管理者 と サービス アカウント ユーザー の権限を付与することを推奨します。
そのためには、Google Cloud の検索バーで「IAM」を検索すると、次の操作が可能になります。

次に、ユーザーアカウントの横にある編集ボタンを選択します。ボタンは次のようなアイコンです。

そして、適切なロールを割り当てます。


Vertex AI を使用してクライアントを作成する

Vertex AI 経由で Gemini にアクセスする場合は、環境変数を 3 つ設定する必要があります。
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='us-central1'
または、クライアントを初期化する前に、Python でプログラム的に設定します。
import os
from google import genai

os.environ['GOOGLE_GENAI_USE_VERTEXAI'] = 'true'
os.environ['GOOGLE_CLOUD_PROJECT'] = 'your-project-id'
os.environ['GOOGLE_CLOUD_LOCATION'] = 'us-central1'

client = genai.Client()
これら2つのバックエンドの基本的なセットアップを確認したので、次は実際にコードを書いて、Gemini モデルで推論を実行してみましょう。

最初のリクエストを送る方法

環境とクライアントの設定が完了したら、Gemini に応答の生成を依頼できます。これは推論と呼ばれるプロセスです。モデルにプロンプト(必要に応じて画像も)を送信し、生成された返答を受け取ります。Gemini はテキストのみの対話とマルチモーダルな対話の両方に対応しており、詳細なシーン記述などのタスクに画像を含むプロンプトも処理できます。
推論を実行するためのコード例を以下に示します。
import requests
from io import BytesIO
from typing import Optional, Union
from PIL import Image
from google import genai
from google.genai import types

import weave; weave.init("google_genai")

@weave.op
def gemini_infer(
prompt: str,
api_key: str,
image: Image = None,
model: str = "gemini-2.0-flash-001"
) -> str:
"""
Run Gemini inference with an optional PIL image.

:param prompt: The user prompt/question/command
:param api_key: Your Gemini API key
:param image: An optional PIL Image object
:param model: Model string (default: "gemini-2.0-flash-001")
:return: Model's text response
"""
client = genai.Client(api_key=api_key) # <-- Replace with your key
# Assemble contents
if image is not None:
# Save image to buffer as JPEG
buf = BytesIO()
image.save(buf, format="JPEG")
image_bytes = buf.getvalue()
contents = [
types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg"),
prompt,
]
else:
contents = [prompt]
# Run inference
response = client.models.generate_content(
model=model,
contents=contents,
)
return response.text

# ---- Example usage ----

if __name__ == "__main__":
API_KEY = " " # <-- put your key here
# Download example image to PIL
img_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/800px-Fronalpstock_big.jpg"
headers = {"User-Agent": "Mozilla/5.0 (compatible; GeminiScript/1.0)"}
response = requests.get(img_url, headers=headers)
response.raise_for_status()
pil_img = Image.open(BytesIO(response.content))

# With image
r1 = gemini_infer(
prompt="Describe this alpine scenery in detail.",
api_key=API_KEY,
image=pil_img,
)
print("\nGemini vision response:")
print(r1)

# Text-only
r2 = gemini_infer(
prompt="Write a haiku about mountains.",
api_key=API_KEY
)
print("\nGemini text-only response:")
print(r2)

推論のセットアップが整ったら、さまざまなプロンプトや画像で容易に試行できます。モデルはリクエストに合わせた応答を返し、Gemini が創造的なタスクと分析的なタスクの双方で柔軟に対応できることを示します。こうしたプロセスが、Gemini を活用した機能をプロジェクトに統合する際の基盤となります。
スクリプトを実行したら、W&B Weave に移動して、モデルへの入力と出力をすべて確認できます。以下は Weave 内のスクリーンショットです。

Weave では、各 LLM 呼び出しのコストやレイテンシーなどの詳細情報も確認できます。LLM アプリケーションを構築する場合、モデルの動作データを保存する「トレーシング」フレームワークを活用することが重要です。これにより、直感ではなく実際の利用パターンやモデル出力の品質に基づいてデータを分析し、システムを改善できます。堅牢なトレーシングフレームワークを採用すると、挙動の不安定なプロンプトや入力データのデバッグが容易になり、アプリケーションの反復に伴う改善の追跡もしやすくなります。さらに、ユーザーやステークホルダーにシステムの挙動を説明する必要がある場合の透明性の確保にも役立ちます。

Veo 2 で動画を生成する

Gemini API を使用すると、Veo 2 にもアクセスして動画を生成できます。以下のスクリプトを使うと、動画を生成し、同時に Weave へ記録することもできます。次のように利用してください。 moviepy その形式を指定すると、生成した動画は自動的に Weave に記録されます。
import time
import weave
import moviepy.editor as mpy
from google import genai
from google.genai import types


API_KEY = "your_api_key" # <-- your Gemini key
weave.init("gemini-genai")


@weave.op
def gemini_generate_video(prompt: str, api_key: str, fname: str = "video0.mp4") -> mpy.VideoFileClip:
client = genai.Client(api_key=api_key)
op = client.models.generate_videos(
model="veo-2.0-generate-001",
prompt=prompt,
config=types.GenerateVideosConfig(
person_generation="dont_allow",
aspect_ratio="16:9",
),
)
while not op.done:
time.sleep(10)
op = client.operations.get(op)

vid = op.response.generated_videos[0]
client.files.download(file=vid.video)
vid.video.save(fname)
return mpy.VideoFileClip(fname)

# --- Example usage ---

clip = gemini_generate_video("rotating red cube in front of stars", API_KEY)

まず、API キーで API に接続し、Veo モデルの generate_videos メソッドにプロンプトを送信します。API は非同期のオペレーションを返すため、動画の準備が整うまで定期的にポーリングします。完了したら、生成された動画をダウンロードしてローカルに保存します(例:MP4 ファイル)。Weave を統合すると、各動画生成を記録して可観測性と実験管理のために追跡できます。もしあなたが使用するのが moviepy その形式を指定すると、生成した動画は Weave と自動的に互換性を持ち、ワークフローから直接、結果の分析・共有・可視化が容易になります。
Weave 内では次のように表示されます。

Weave の優れた機能のひとつは、API キーをマスキング(秘匿化)してくれる点です。これにより、Weave を使用していて誤って API キーが漏えいする心配がありません。

Gemini を用いた動画理解の活用方法

いくつかの Gemini モデルは動画を理解する機能も備えています。以下のスクリプトを使用すると、Gemini で推論を実行し、先ほど生成した動画の要約を取得できます。
from moviepy.editor import VideoFileClip
from google import genai
from google.genai import types
import weave

weave.init("gemini-video-analysis")

API_KEY = "your_api_key" # <- Replace with your key

client = genai.Client(api_key=API_KEY)

# Only for videos of size <20Mb
video_file_name = "./video0.mp4"
video_bytes = open(video_file_name, 'rb').read()

@weave.op
def gemini_summarize_video(video_bytes: bytes, prompt: str, api_key: str):
client = genai.Client(api_key=api_key)
response = client.models.generate_content(
model='models/gemini-2.0-flash',
contents=types.Content(
parts=[
types.Part(
inline_data=types.Blob(data=video_bytes, mime_type='video/mp4')
),
types.Part(text=prompt)
]
)
)
return response.text

# Logging and inference via Weave
summary = gemini_summarize_video(video_bytes, "Please summarize the video in 3 sentences.", API_KEY)
print(summary)

数行のコードだけで、動画をそのまま Gemini に入力し、自然言語の要約を取得できます。動画とプロンプトを指定するだけで、Gemini が映像を解析し、内容を明確で簡潔な文に要約します。


Google GenAI API の「思考モード」の使用方法

Google GenAI API では、Gemini 2.5 Flash と Gemini 2.5 Pro の思考機能も利用できます。アクセス状況に応じて Vertex AI と標準の API キーを切り替えて使用でき、レスポンスはストリーミング形式と標準(非ストリーミング)から選択できます。以下にコードを示します。
import os
from google import genai
from google.genai import types
import weave

# --- CONFIG: Toggle here ---
USE_VERTEX = True # Set to False for Gemini consumer API
STREAMING = True # Set to False for normal responses

PROJECT = "your-google-cloud-project"
LOCATION = "us-central1"
API_KEY = "your-api-key" # Only used if USE_VERTEX=False


weave.init("gemini-genai")

# --- SETUP ENV VARIABLES ---
if USE_VERTEX:
os.environ["GOOGLE_CLOUD_PROJECT"] = PROJECT
os.environ["GOOGLE_CLOUD_LOCATION"] = LOCATION
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"
else:
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "False"

# --- Initialize client ---
if USE_VERTEX:
client = genai.Client()
MODEL = "gemini-2.5-pro-preview-06-05"
else:
client = genai.Client(api_key=API_KEY)
MODEL = "gemini-2.5-pro-preview-06-05"


@weave.op
def run_gemini(
prompt,
streaming=STREAMING,
model=MODEL,
thinking_budget=1024,
include_thoughts=True
):
"""
Run a prompt through Gemini (Vertex or consumer API),
optionally using streaming, and configurable 'thinking_budget'
and 'include_thoughts'.

Returns (thoughts, answer) as strings.
"""
thoughts = ""
answer = ""
if streaming:
method = client.models.generate_content_stream
response = method(
model=model,
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=include_thoughts,
thinking_budget=thinking_budget
)
)
)
for chunk in response:
for part in chunk.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Answer:")
print(part.text)
answer += part.text
else:
method = client.models.generate_content
response = method(
model=model,
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=include_thoughts,
thinking_budget=thinking_budget
)
)
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Answer:")
print(part.text)
answer += part.text
return thoughts, answer

# -------- EXAMPLES ---------
if __name__ == "__main__":
# Algebra example
prompt1 = "Solve x^2 + 4x + 4 = 0"
print("\nAlgebra Example:")
run_gemini(
prompt1,
streaming=True,
thinking_budget=512, # You can override per-call
include_thoughts=True # You can override per-call
)

# Primes example, with less thinking budget and thoughts off
prompt2 = "What is the sum of the first 50 prime numbers?"
print("\nPrimes Example:")
run_gemini(
prompt2,
streaming=False,
thinking_budget=32,
include_thoughts=False
)

# Logic puzzle example -- use default thinking_budget/streaming
prompt3 = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""
print("\nLogic Puzzle Example:")
run_gemini(
prompt3,
thinking_budget=1024,
include_thoughts=True
)
このスクリプトの中心となるのは run_gemini 関数で、各プロンプトに対してモデルの推論過程をどのように進めるかを制御できます。これを調整することで、 thinking_budgetこれにより、Gemini が課題をどの程度まで掘り下げて検討するかを制御でき、さらにモデルの内部「思考」を含めるかどうかを切り替えることで、段階的な説明を見るか最終的な回答だけを受け取るかを選択できます。
このスクリプトを使用するには、数式、論理パズル、一般的な質問などのプロンプトを指定します。必要に応じて推論の深さや思考の表示方法を調整できます。たとえば、Gemini が複雑な課題に取り組む際の詳細な中間ステップを確認でき、ストリーミングモードを有効にすると、これらの思考や回答がリアルタイムで表示されます。モデルの推論過程を探り、Gemini の最終的な回答だけでなく、その結論に到達するまでの過程を理解したい人に有用です。

結論

大規模言語モデルと生成AIの急速な進化は、アプリケーション開発のアプローチを根本から変えつつあります。Google の GenAI SDK はその変革の最前線に立つ存在です。テキスト生成や画像生成から動画理解まで、最先端の Gemini モデルへの統合的なアクセスを提供することで、チームが迅速にプロトタイピングし、シームレスに本番環境へ拡張できるようにします。よく設計されたこの SDK は、実験とデプロイのギャップを埋め、Gemini Developer API と Vertex AI のいずれを利用する場合でも、一貫したツールセットで開発できるようにします。
これらのモデルの能力が拡大し続ける中で、GenAI SDK のような堅牢なツールを採用することは、競争力を維持し、魅力的で知的なユーザー体験を実現するうえで不可欠です。ワークフローの最適化、クリエイティブなアプリケーションの構築、既存プロダクトへの高度な分析の統合など、どの用途であっても、Google GenAI SDK は最新のAIの進歩をコードベースに直接取り込み、将来の課題に対応できる柔軟性を備えた堅実な基盤を提供します。

この記事は機械翻訳です。誤訳の可能性があれば、コメント欄でお知らせください。元のレポートはこちらをご覧ください。 元のレポートを表示
Iterate on AI agents and models faster. Try Weights & Biases today.