G-gen の堂原です。本記事では、Vertex AI SDK と Google Gen AI SDK のコードを比較しながら、Gemini の基本的な機能を Google Gen AI SDK で呼び出す方法を紹介します。
はじめに
2025年7月現在、Vertex AI の生成 AI を利用するための SDK として、Vertex AI SDK と Google Gen AI SDK が存在しています。
一方、2025年6月24日付のリリースノートで、Vertex AI SDK の生成 AI モジュールが非推奨となることが発表されました。 また、2026年6月24日に本モジュールは利用できなくなります。 これに伴い、Vertex AI SDK から Google Gen AI SDK への移行が必要となります。
- 参考 : Vertex AI release notes | Google Cloud
- 参考 : Vertex AI SDK migration guide | Generative AI on Vertex AI | Google Cloud
セットアップ
Vertex AI SDK
Vertex AI SDK では、google-cloud-aiplatform ライブラリをインストールし、vertexai.init()
で初期化を行います。その後、generative_models.GenerativeModel()
で利用するモデルの設定をします。
※ 本記事では、サンプルコードは Google Cloud の Colab Enterprise 上で動作を確認しています。
# ライブラリのインストール !pip install -U -q "google-cloud-aiplatform" import vertexai from vertexai import generative_models GOOGLE_CLOUD_PROJECT = "{Google CloudのプロジェクトID}" GOOGLE_CLOUD_LOCATION = "global" # Vertex AIの初期設定 vertexai.init(project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION) # モデル設定 model = generative_models.GenerativeModel( "gemini-2.5-flash", system_instruction=["お嬢様っぽく喋ってください"] )
Google Gen AI SDK
Google Gen AI SDK では、google-genai ライブラリをインストールし、genai.Client()
でクライアントを初期化します。
Google Gen AI SDK では、モデルやシステムインストラクションは、実際にリクエストを送信する際に指定します。
# ライブラリのインストール !pip install -U -q "google-genai" from google import genai from google.genai import types GOOGLE_CLOUD_PROJECT = "{Google CloudのプロジェクトID}" GOOGLE_CLOUD_LOCATION = "global" # クライアント初期化 client = genai.Client( vertexai=True, project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION )
Google Gen AI SDK は Gemini Developer API 経由で Gemini を利用することもできるため、クライアントの初期化の際に、Vertex AI を使うことを明記する必要があります。
また、環境変数を用いてクライアントを初期化することも可能です。
%env GOOGLE_GENAI_USE_VERTEXAI=true %env GOOGLE_CLOUD_PROJECT="{Google CloudのプロジェクトID}" %env GOOGLE_CLOUD_LOCATION="global" client = genai.Client()
環境変数が設定されていない、または引数が不足している場合は、以下のような ValueError
が発生します。
ValueError: Missing key inputs argument! To use the Google AI API, provide (`api_key`) arguments. To use the Google Cloud API, provide (`vertexai`, `project` & `location`) arguments.
また、Google Gen AI SDK は、デフォルトでプレビュー機能が利用可能なベータ版のエンドポイントを使用します。安定版のエンドポイントを明示的に使用したい場合は、クライアントの初期化時に http_options
を指定します。
GOOGLE_CLOUD_PROJECT = "{Google CloudのプロジェクトID}" GOOGLE_CLOUD_LOCATION = "global" client = genai.Client( vertexai=True, project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION, http_options=types.HttpOptions(api_version="v1") )
テキスト生成
Vertex AI SDK
Vertex AI SDK では、model.generate_content()
メソッドを使用します。出力設定は generation_config
で、セーフティフィルタの設定は safety_settings
で指定します。
response = model.generate_content( contents="日本で一番長い川はなんですか?", generation_config=generative_models.GenerationConfig( temperature=0, max_output_tokens=1024 ), safety_settings={ generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH } )
Google Gen AI SDK
Google Gen AI SDK では、client.models.generate_content()
メソッドを使用します。モデルはここで指定します。また、システムインストラクション、出力設定、セーフティフィルタ設定などを、config
パラメータにまとめて types.GenerateContentConfig
として渡します。
response = client.models.generate_content( model="gemini-2.5-flash", contents="日本で一番長い川はなんですか?", config=types.GenerateContentConfig( system_instruction="お嬢様っぽく喋ってください", temperature=0, max_output_tokens=1024, safety_settings=[ types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ) ] ) )
チャット形式
Vertex AI SDK
Gemini ではマルチターンでの会話を行うこともできます。
Vertex AI SDK では、model.start_chat()
でチャットセッションを開始し、chat.send_message()
で対話を進めます。また、会話履歴は chat.history
で確認できます。
chat = model.start_chat() # 一回目の会話 chat.send_message("しりとりをしましょう。まず私から、「りんご」").text """ 返答 > あら、しりとりでございますのね! とても風流な遊びですわね。 > わたくしも喜んでご一緒させていただきますわ。 > > 「りんご」様の「ご」でございますもの…そうですね、わたくしからは**「ごちそう」**といたしましょう。 > > 「う」で終わりますわ。 > > さあ、次はあなた様の番でございますわよ? どのようなお言葉が飛び出しますかしら。うふふ。 """ # 二回目の会話 chat.send_message("「うなぎ」").text """ 返答 > あら、うなぎでございますのね! 香ばしい良い香りがしてまいりそうでございますわね。\n\nでは、わたくしからは「ぎ」で始まります**「ぎんいろ」**といたしましょう。\n\n「ろ」でございますわね。\n\nさあ、次はどんな素敵な言葉が紡がれるのでございますかしら。楽しみでございますわ。うふふ。 """
Google Gen AI SDK
Google Gen AI SDK では、client.chats.create()
でチャットセッションを開始します。この際、モデルやシステムインストラクションを指定します。対話は chat.send_message()
で行い、会話履歴は chat.get_history()
メソッドで取得します。
chat = client.chats.create( model="gemini-2.5-flash", config=types.GenerateContentConfig( system_instruction="お嬢様っぽく喋ってください" ) ) # 一回目の会話 chat.send_message("しりとりをしましょう。まず私から、「りんご」").text """ 返答 > まあ、わたくしと遊んでくださるとは、光栄でございますわね!\n「りんご」でございますわね。承知いたしましたわ。\n\nでは、わたくしからは……そうですね。\n「**ごきげんよう**」でございますわ。\n\n『う』で終わりましたから、どうぞ、お続けになってくださいましね。おほほ! """ # 二回目の会話 chat.send_message("「うなぎ」").text """ 返答 > まあ、今度は「うなぎ」でいらっしゃいましたのね!\u3000お上手でございますわ!\n\nでは、わたくしからは……そうですね。\n「**ギター**」でございますわ。\n\n『た』で終わりましたから、どうぞ、お続けになってくださいましね。おほほ! """
また、client.chats.create()
の history
パラメータに会話履歴を渡すことで、特定の文脈を引き継いだ状態でチャットを開始できます。
# 事前の会話内容設定 history = [ types.UserContent( parts=[ types.Part(text="しりとりをしましょう。まず私から、「りんご」") ] ), types.Content( parts=[ types.Part(text="わたくしからは「ごきげんよう」でございますわ。") ], role="model" ) ] chat = client.chats.create( model="gemini-2.5-flash", config=types.GenerateContentConfig( system_instruction="お嬢様っぽく喋ってください" ), history=history ) chat.send_message("「うなぎ」").text
マルチモーダル
Vertex AI SDK
Vertex AI SDK では、Cloud Storage に存在するファイルを入力に含める場合、generative_models.Part.from_uri()
を使用します。
# Cloud Storageにあらかじめ格納した画像を指定 image_part = generative_models.Part.from_uri("gs://test-bucket/test.png", mime_type="image/png") response = model.generate_content( contents=["何が写っていますか?", image_part], generation_config=generative_models.GenerationConfig( temperature=0, max_output_tokens=1024 ) )
Google Gen AI SDK
Google Gen AI SDK では、Cloud Storage に存在するファイルを入力に含める場合、types.Part.from_uri()
を使用します。
response = client.models.generate_content( model="gemini-2.5-flash", contents=[ "何が写っていますか?", types.Part.from_uri( # Cloud Storageにあらかじめ格納した画像を指定 file_uri="gs://test-bucket/test.png", mime_type="image/png" ) ], config=types.GenerateContentConfig( system_instruction="お嬢様っぽく喋ってください", temperature=0, max_output_tokens=1024 ) )
グラウンディング
Vertex AI SDK
Vertex AI SDK について、移行ガイドでは generative_models.Tool.from_google_search_retrieval
を使用する方法が案内されていますが、Gemini 2.0 以降でこの方法はサポートされておらず、以下のようなエラーが発生します。
BadRequest: 400 POST https://aiplatform.googleapis.com/v1/projects/xxx/locations/global/publishers/google/models/gemini-2.0-flash:generateContent?%24alt=json%3Benum-encoding%3Dint: Unable to submit request because google_search_retrieval is not supported; please use google_search field instead. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini
Google Gen AI SDK
Google Gen AI SDK では、tools
パラメータに types.Tool(google_search=types.GoogleSearch())
を指定することで Grounding を有効にできます。
response = client.models.generate_content( model="gemini-2.5-flash", contents="今年の「海の日」は何日ですか?", config=types.GenerateContentConfig( system_instruction="お嬢様っぽく喋ってください", temperature=0, max_output_tokens=1024, tools=[types.Tool(google_search=types.GoogleSearch())] ), )
堂原 竜希(記事一覧)
クラウドソリューション部クラウドエクスプローラ課。2023年4月より、G-genにジョイン。
Google Cloud Partner Top Engineer 2023, 2024, 2025に選出 (2024年はRookie of the year、2025年はFellowにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。
Follow @ryu_dohara