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

目次
Gemini API と Google GenAI SDK を理解するGemini API キーの取得Google GenAI SDK のインストールと使用方法Gemini Developer API の設定オプション 1:API キーをコード内で直接渡すオプション 2:環境変数を使用するVertex AI 経由での Gemini API の設定ステップ 1:Google Cloud プロジェクトを作成するステップ 2:Vertex AI API を有効にするステップ 3:Google Cloud CLI を設定するステップ 4:IAM ロールを構成するVertex AI を使用してクライアントを作成する最初のリクエストを送る方法Veo 2 で動画を生成するGemini を用いた動画理解の活用方法Google GenAI API の「思考モード」の使用方法結論
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 genaiclient = genai.Client(api_key='YOUR_GEMINI_API_KEY')
オプション 2:環境変数を使用する
アプリケーションを実行する前に、必要な環境変数をターミナルまたはコマンドプロンプトで設定できます。
export GOOGLE_API_KEY='your-api-key'
または、Python スクリプトの冒頭でプログラム的に環境変数を設定します。
import osos.environ['GOOGLE_API_KEY'] = 'your-api-key'from google import genaiclient = 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 updategcloud 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=trueexport GOOGLE_CLOUD_PROJECT='your-project-id'export GOOGLE_CLOUD_LOCATION='us-central1'
または、クライアントを初期化する前に、Python でプログラム的に設定します。
import osfrom google import genaios.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 requestsfrom io import BytesIOfrom typing import Optional, Unionfrom PIL import Imagefrom google import genaifrom google.genai import typesimport weave; weave.init("google_genai")@weave.opdef 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 contentsif image is not None:# Save image to buffer as JPEGbuf = 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 inferenceresponse = 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 PILimg_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 imager1 = gemini_infer(prompt="Describe this alpine scenery in detail.",api_key=API_KEY,image=pil_img,)print("\nGemini vision response:")print(r1)# Text-onlyr2 = 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 timeimport weaveimport moviepy.editor as mpyfrom google import genaifrom google.genai import typesAPI_KEY = "your_api_key" # <-- your Gemini keyweave.init("gemini-genai")@weave.opdef 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 VideoFileClipfrom google import genaifrom google.genai import typesimport weaveweave.init("gemini-video-analysis")API_KEY = "your_api_key" # <- Replace with your keyclient = genai.Client(api_key=API_KEY)# Only for videos of size <20Mbvideo_file_name = "./video0.mp4"video_bytes = open(video_file_name, 'rb').read()@weave.opdef 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 Weavesummary = 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 osfrom google import genaifrom google.genai import typesimport weave# --- CONFIG: Toggle here ---USE_VERTEX = True # Set to False for Gemini consumer APISTREAMING = True # Set to False for normal responsesPROJECT = "your-google-cloud-project"LOCATION = "us-central1"API_KEY = "your-api-key" # Only used if USE_VERTEX=Falseweave.init("gemini-genai")# --- SETUP ENV VARIABLES ---if USE_VERTEX:os.environ["GOOGLE_CLOUD_PROJECT"] = PROJECTos.environ["GOOGLE_CLOUD_LOCATION"] = LOCATIONos.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.opdef 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_streamresponse = 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:continueif part.thought:if not thoughts:print("Thoughts summary:")print(part.text)thoughts += part.textelse:if not answer:print("Answer:")print(part.text)answer += part.textelse:method = client.models.generate_contentresponse = 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:continueif part.thought:if not thoughts:print("Thoughts summary:")print(part.text)thoughts += part.textelse:if not answer:print("Answer:")print(part.text)answer += part.textreturn thoughts, answer# -------- EXAMPLES ---------if __name__ == "__main__":# Algebra exampleprompt1 = "Solve x^2 + 4x + 4 = 0"print("\nAlgebra Example:")run_gemini(prompt1,streaming=True,thinking_budget=512, # You can override per-callinclude_thoughts=True # You can override per-call)# Primes example, with less thinking budget and thoughts offprompt2 = "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/streamingprompt3 = """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の進歩をコードベースに直接取り込み、将来の課題に対応できる柔軟性を備えた堅実な基盤を提供します。
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.