Engineering
Glossvation Engineering
AI

Vertex AI で生成 AI を本番化する — Gemini / Model Garden / Agent Builder

Google Cloud の Vertex AI による生成 AI 実装。Gemini 系モデル、Model Garden のサードパーティ提供、RAG 構成 (Vertex AI Search)、Agent Builder でのツール連携、料金の考え方。

Glossvation ·

Vertex AI の立ち位置

Vertex AI は Google Cloud が提供する AI / ML のフルマネージドプラットフォームです。2024+ 時点では以下の 3 階層で理解すると整理しやすい。

階層提供物用途
モデルGemini / PaLM / Imagen / Embeddings生成 AI の中核
ツール層Vertex AI Search, Agent Builder, Pipelinesモデルをアプリ化
MLOps 層Training, Workbench, Model Registry, Prediction自社モデルの開発・運用

本稿は 生成 AI 利用 (モデル + ツール層) にフォーカスします。自社モデル訓練 (MLOps 層) は別記事で扱います。

使えるモデル

Gemini (Google 自社)

  • Gemini 1.5 Pro: 大規模コンテキスト (100 万〜200 万トークン)、マルチモーダル
  • Gemini 1.5 Flash: 高速・低コスト、量が出る用途向け
  • Gemini Nano: オンデバイス (Android), モバイル組み込み

長所: マルチモーダル (画像・動画・音声) ネイティブ対応、長文処理が強力。 日本語性能も OpenAI GPT-4 系と遜色なし。

Model Garden (サードパーティ)

Vertex AI 経由で以下もデプロイ可能:

  • Claude 3.5 Sonnet / Haiku (Anthropic)
  • Llama 3 系 (Meta)
  • Mistral 系
  • Hugging Face 公開モデル

OpenAI 以外の主要 LLM を 1 つの基盤で切替可能。マルチベンダー戦略に向く。

最小実装 (Python)

from vertexai.generative_models import GenerativeModel
import vertexai

vertexai.init(project="my-project", location="asia-northeast1")

model = GenerativeModel("gemini-1.5-flash")
resp = model.generate_content(
    "Kubernetes の Pod と Deployment の違いを 100 字で説明して"
)
print(resp.text)

マルチモーダル (画像入力):

from vertexai.generative_models import Part

resp = model.generate_content([
    Part.from_uri("gs://my-bucket/invoice.pdf", mime_type="application/pdf"),
    "この請求書から合計金額を抽出して JSON で返して",
])

Google 検索の技術を内部に使った企業向け検索 + RAG プラットフォーム。

社内ドキュメント (GCS / BigQuery / Web)
    ↓ 自動 indexing + embedding
Vertex AI Search (grounding + 生成)
    ↓
回答 + 引用元 URL

特徴:

  • ドキュメントを放り込むだけで検索基盤完成 (インフラ設計不要)
  • 回答に 引用元 (grounding) を付けられる
  • Enterprise Search モードは PII マスク等 Enterprise 要件に対応

Agent Builder (ツール呼び出し)

LLM にツール (関数呼び出し / API コール) を使わせるフレームワーク:

from vertexai.generative_models import Tool, FunctionDeclaration

get_weather = FunctionDeclaration(
    name="get_weather",
    description="指定都市の現在の天気を取得",
    parameters={
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"],
    },
)

model = GenerativeModel("gemini-1.5-pro", tools=[Tool(function_declarations=[get_weather])])
resp = model.generate_content("明日の東京の天気を教えて")
# model が get_weather(city="Tokyo") を呼ぶように応答

OpenAI の Function Calling 相当。ReAct パターンや ReWOO も簡単に組める。

他 LLM プラットフォームとの比較

Vertex AI (GCP)OpenAI APIAzure OpenAIBedrock (AWS)
自社モデルGeminiGPT-4o / o1GPT-4o / o1無 (Nova)
サードパーティClaude, Llama 等無限定Claude, Llama 等
長文200 万トークン128K128K200K (Claude)
価格 (GPT-4o 相当)◎ (Flash が安い)$$$$$$
エンタープライズ◎△◎◎

選び方:

  • 長文処理 / マルチモーダル重視 → Vertex AI (Gemini)
  • OpenAI API 互換性維持 → Azure OpenAI
  • マルチベンダー戦略 → Vertex AI (Model Garden) or Bedrock

料金 (2024+ 時点, asia-northeast1)

モデル入力 ($/1M)出力 ($/1M)
Gemini 1.5 Pro$1.25$5.00
Gemini 1.5 Flash$0.075$0.30
Claude 3.5 Sonnet$3.00$15.00
text-embedding-004$0.025—

Gemini Flash の安さが特筆すべき点。量が出るユースケース (バッチ処理、ログ要約) はコスト最適化に直結。

落とし穴

1. プロジェクト / ロケーションの初期設定

vertexai.init(project, location) を忘れると意味不明なエラー。asia-northeast1 (東京) でも Gemini は利用可能。

2. Gemini の Safety Settings

Vertex AI の Gemini は デフォルトで複数のセーフティフィルター が有効。業務用プロンプトで誤発火することがある:

from vertexai.generative_models import HarmCategory, HarmBlockThreshold

safety = {
    HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
    HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH,
}
resp = model.generate_content(prompt, safety_settings=safety)

3. Function Calling の JSON 厳格性

Agent Builder / Function Calling では Pydantic 等で入力バリデーションを必ず。モデルが稀に不正な JSON を返す。

4. Quota と Rate Limit

Gemini 1.5 Pro はクォータが比較的厳しい (RPM / TPM)。本番規模なら事前に Google Cloud 営業経由で引き上げ申請。

5. ドキュメントの古さ

AI プロダクトは激しく変化。古い Qiita 記事・Stack Overflow 回答は 6 ヶ月で陳腐化することも。公式ドキュメントを一次情報として参照。

まとめ

  • Vertex AI は モデル (Gemini / Claude / Llama) + ツール (Search / Agent) + MLOps の統合プラットフォーム
  • 長文・マルチモーダル・コスト効率のバランスで Gemini は実務向き
  • サードパーティ LLM も Model Garden 経由で使える柔軟性
  • Vertex AI Search + Agent Builder で RAG + ツール連携が素早く組める

関連記事