Skip to main content

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

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


目次



Gemini API と Google の GenAI SDK を理解する

新しい Google GenAI SDK は、従来版に比べて大きな利点があります。とりわけ、Gemini Developer API と Vertex AI の両方でシームレスに機能する統一インターフェースを提供する点が際立っています。これにより、開発者は Developer API でプロトタイプを作成し、その後ほとんどコードを書き換えることなく Vertex AI に移行できます。SDK の設計思想は開発者の生産性とデプロイの柔軟性を重視しており、異なる Google の AI サービス間を切り替える際に大規模なコード変更が必要だった従来の SDK での課題を解消します。
Vertex AI Gemini API と Gemini Developer API の中核的な違いを示した有用な表を見つけました。要するに、Gemini Developer 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 コンソールプロジェクトセレクターページに移動し、既存のプロジェクトを選択するか、新しいプロジェクトを作成します。Vertex AI のサービスを利用するには課金が有効である必要があるため、プロジェクトで課金が有効になっていることを確認してください。まだプロジェクトを作成していない場合は、Google Cloud の検索バーで「create project」と検索し、最初に表示される結果をクリックすれば、プロジェクト作成の手順に進めます。



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

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



ステップ 3:Google Cloud CLI をセットアップする

ローカルの開発環境から Google Cloud の各種サービスを操作するには、Google Cloud 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 キーで接続し、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 の「Thinking Mode」を使う方法

Google GenAI API では、Gemini 2.5 Flash と Gemini 2.5 Pro で「Thinking」機能も利用できます。アクセス状況に応じて、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 の最終的な回答だけでなく、その結論に至る過程も理解したい人に有用なスクリプトです。

まとめ

大規模言語モデル(LLM)と生成 AI の急速な進化は、アプリケーション開発のアプローチそのものを根底から変えつつあります。Google の GenAI SDK は、その変革の最前線に立つ存在です。テキスト生成や画像生成から動画理解まで、最先端の Gemini モデルへの統一的なアクセスを提供することで、チームは素早くプロトタイプを作成し、本番環境へ無理なくスケールできます。練り上げられた設計により、実験とデプロイの溝が埋められ、Gemini Developer API でも Vertex AI でも、同一の一貫したツールセットで開発を進められます。
これらのモデルの能力が拡張し続けるなかで、GenAI SDK のような堅牢なツールを採用することは、競争力を維持し、魅力的で賢いユーザー体験を実現するうえで不可欠です。ワークフローの最適化、クリエイティブなアプリケーションの構築、既存プロダクトへの高度な分析の統合など、どの目的であっても、Google GenAI SDK は最新の AI の進歩を直接コードベースで活用するための強固な基盤を提供し、将来の課題に対応できる柔軟性も備えています。
Iterate on AI agents and models faster. Try Weights & Biases today.