Skip to main content

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

Google の GenAI SDK は、最新の Gemini モデルを用いてテキスト、画像、動画などの高度な生成 AI 機能をアプリケーションにシームレスに統合できる、統一的で柔軟なツールキットを開発者に提供します。この記事は AI による翻訳です。訳抜けや不自然な箇所があればコメント欄でお知らせください。
Created on September 3|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 は、従来版に比べて大きな利点があります。とりわけ、Gemini Developer API と Vertex AI の両方でシームレ��に動作する統一インターフェースを提供する点が挙げられます。これにより、開発者はまず Developer API でプロトタイプを作成し、その後、大規模なコードの書き換えを伴わずに Vertex AI へ移行できます。SDK の設計思想は開発者の生産性とデプロイの柔軟性を重視しており、過去の SDK では異なる Google の AI サービス間で切り替えるたびに多くのコード変更が必要だったという一般的な課題を解消しています。
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 を使う前に開発環境へ設定します。設定方法は複数あり、キーを直接渡す、環境変数を設定する、設定ファイルを使う、のいずれにも対応しています。

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 UserまたはVertex AI Administrator、および
  • Service Account User
具体的な要件や Vertex AI の利用目的によって異なりますが、このチュートリアルでは Vertex AI Administrator と Service Account User の権限を推奨します。
これを行うには、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 Mode を利用できます。アクセス状況に応じて、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 function で、各プロンプトに対してモデルの推論の進め方を制御できます。これを調整することで、 thinking_budgetこれにより、Gemini が問題をどの程度まで掘り下げるかを制御でき、さらにモデルの内部の「思考」を含めるかどうかを切り替えることで、ステップごとの説明を見るか、最終的な答えだけを見るかを選べます。
このスクリプトを使うには、数式、論理パズル、一般的な質問などのプロンプトを入力するだけです。必要に応じて、推論の深さや思考表示の有無を調整できます。たとえば、Gemini が複雑な問題に取り組む際の詳細な中間ステップを確認でき、ストリーミングモードを有効にすると、思考と回答がリアルタイムに表示されます。モデルの推論過程を探り、Gemini の最終的な答えだけでなく、その結論に至る道筋も理解したい人に役立つスクリプトです。

結論

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

この記事はAIによる翻訳です。誤訳の可能性があれば、コメント欄でお知らせください。元のレポートはこちらをご覧ください。 元のレポートを表示