Google GenAI SDK:Python チュートリアル付きガイド
Google の GenAI SDK は、最新の Gemini モデルを用いてテキスト・画像・動画などの高度な生成 AI 機能をアプリケーションにシームレスに統合できる、統一的で柔軟な開発者向けツールキットです。この記事は AI による翻訳です。誤訳の可能性があればコメント欄でお知らせください。
Created on August 26|Last edited on August 26
Comment
Google の GenAI SDK は、開発者が自分のアプリに生成 AI 機能を取り込む作業を容易にします。Web、モバイル、バックエンドのいずれを対象にしていても、テキスト生成、要約、画像解釈などのタスクで Google の Gemini models に直接アクセスできます。外部のツールや 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 の「Thinking Mode」を使うまとめ
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 の GenAI SDK を用いてマルチモーダル推論を行うための基本的な使い方を紹介します。テキスト、画像、動画といった異なる入力を組み合わせ、Gemini モデルに一度に渡して処理できます。実装例は Python を中心に示しますが、同様のパターンは Node.js、Go、Java でも共通です。 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 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 APIsVertex AI に必要な API を有効化します。処理が完了するまで数分かかる場合があります。

ステップ 3:Google Cloud CLI を設定する
ローカルの開発環境から Google Cloud のサービスを操作するには、Google Cloud CLI をインストールする必要があります。 Google Cloud のドキュメントから CLI をダウンロードしてインストールします。。インストール後、次のコマンドを実行して CLI を初期化します gcloud init ターミナルで実行します。このコマンドは、プロジェクトの選択と設定の構成を対話的に案内します。
次のコマンドを実行して、CLI コンポーネントを最新のツールと機能に更新できます。
gcloud components updategcloud 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=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 キーで接続し、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 の「Thinking Mode」を使う
Google GenAI API では、Gemini 2.5 Flash と Gemini 2.5 Pro で Thinking 機能も利用できます。アクセス状況に応じて 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 function で、各プロンプトに対してモデルの思考過程(推論の進め方)を制御できます。これを調整することで、 thinking_budgetこれを調整することで、Gemini が課題をどの程度まで深く検討するかを制御できます。さらに、モデルの内部「思考」を含めるかどうかを切り替えることで、逐次的な解説を表示するか、最終的な回答のみを受け取るかを選択できます。
このスクリプトを使うには、数式、ロジックパズル、一般的な質問などのプロンプトを指定するだけで構いません。必要に応じて推論の深さや思考表示をカスタマイズできます。たとえば、Gemini が複雑な課題に取り組む際の詳細な中間ステップを表示でき、ストリーミングモードを使えば思考と回答がリアルタイムに表示されます。モデルの推論過程を探索し、Gemini の最終的な答えだけでなく、その結論に至る道筋も理解したい人にとって有用なスクリプトです。
まとめ
大規模言語モデルと生成 AI の急速な進化は、アプリケーション開発のアプローチそのものを根底から変えつつあります。Google の GenAI SDK は、その変革の最前線に立つ存在です。テキストや画像の生成から動画理解に至るまで、最先端の Gemini モデルへの統一的なアクセスを提供することで、チームが迅速にプロトタイプを作成し、そのままスムーズに本番へ拡張できるようにします。洗練された設計により、実験段階とデプロイの隔たりを埋め、Gemini Developer API でも Vertex AI でも一貫したツールセットで開発を進められるよう支援します。
これらのモデルの能力が拡大し続ける中で、GenAI SDK のような堅牢なツールを採用することは、競争力を保ち、魅力的で知的なユーザー体験を実現するうえで不可欠です。ワークフローの最適化、創造的なアプリケーションの構築、既存プロダクトへの高度な分析の統合のいずれであっても、Google GenAI SDK は、最新の AI の進歩をコードベースの中で直接活用でき、かつ将来の課題に対応できる柔軟性を備えた強固な基盤を提供します。
Add a comment