導入:AIエージェントの夜明け、その可能性と立ち塞がる壁
Google CloudのVertex AIでClaudeを活用!AIエージェント構築の未来を解き放つ「Agentic Stack」徹底解説
人工知能の進化は、私たちの日々の生活やビジネスのあり方を根本から変えようとしています。特に近年、大規模言語モデル(LLM)の登場は、まるでSFの世界から飛び出してきたかのような「AIエージェント」という概念を現実のものにしました。AIエージェントは、単一のタスクをこなすだけでなく、複雑な目標を達成するために自律的に計画を立て、ツールを使いこなし、他のエージェントと連携する能力を持っています。これにより、顧客サービス、データ分析、コンテンツ生成、さらには科学研究といった多岐にわたる分野で、これまでにないレベルの自動化とインテリジェンスが実現されつつあります。
しかし、その圧倒的な可能性とは裏腹に、AIエージェントを実際に構築し、本番環境で運用するまでには、いくつかの深刻な課題が存在します。現在のAIエージェント開発エコシステムは急速に成長しているため、利用可能なフレームワークやツールが乱立し、開発者はその選択と統合に苦慮しています。さらに、エージェントが互いに連携するようなマルチエージェントシステムでは、依存関係の管理やデバッグが極めて複雑になりがちです。そして何よりも、開発が完了したエージェントを本番環境で信頼性高くデプロイし、スケーリング、モニタリング、そしてガバナンスを徹底するための堅牢なプラットフォームが不足しているのが現状です。
このような課題に直面する開発者の声に応えるべく、Google Cloudは、AIエージェントの構築、デプロイ、そして運用を根本から変革する革新的なソリューション「Agentic Stack」を発表しました。本記事では、このAgentic StackがAIエージェント開発にもたらす意義、その具体的な構成要素、そしてAnthropicのClaudeモデルをVertex AI上で活用してAIエージェントを構築する実践的な方法について、専門性と分かりやすさを両立させながら徹底的に解説していきます。
第1章:AIエージェント構築の現状と克服すべき課題
AIエージェントは、まるで人間のように目標を理解し、その達成のために思考し、行動する能力を持つAIシステムです。単なる自動化ツールを超え、状況に応じて柔軟に対応し、学習を通じてパフォーマンスを向上させることができます。しかし、この強力な技術を実社会に適用する上では、いくつかの大きな障壁が存在します。
1.1. AIエージェントの爆発的な可能性
AIエージェントが提供する価値は計り知れません。以下にその一部を挙げます。
- 自律的なタスク実行: 複雑なマルチステップタスクを、人間の介入なしに計画し実行できます。例えば、旅行の計画、市場調査の実施、ソフトウェアコードの生成とテストなどが考えられます。
- パーソナライズされた体験: ユーザーの過去の行動、好み、現在の状況に基づいて、高度にパーソナライズされた推奨や支援を提供できます。
- リアルタイムの意思決定: 大量のデータからリアルタイムで洞察を抽出し、迅速な意思決定を支援したり、自律的に行動を起こしたりできます。
- ヒューマン・イン・ザ・ループ: 人間の専門知識とAIの処理能力を組み合わせることで、より正確で信頼性の高い結果を生み出すことができます。
これらの可能性は、さまざまな業界に革命をもたらし、生産性の向上、コスト削減、そして新たなビジネスモデルの創出に貢献すると期待されています。
1.2. 現状の課題:パワフルだが複雑
しかし、このようなクールなアプリケーションを構築できるAIエージェントも、いざ開発を始め、プロトタイプを経て本番環境に移行しようとすると、以下の3つの主要な課題に直面します。
断片化されたランドスケープ (Fragmented landscape): AIエージェントの開発は、多種多様なフレームワーク、ライブラリ、そしてLLMが乱立する、非常に断片化された状況にあります。LangChain、LlamaIndex、CrewAIなど、それぞれが異なる機能やアプローチを提供しており、開発者は自分のユースケースに最適なものを選択し、それらを組み合わせて使用する必要があります。しかし、この選択と統合のプロセスは複雑で時間がかかり、結果として迅速な開発とイテレーションを妨げる要因となっています。どのツールをどのように使えば良いのか、最適な組み合わせを見つけるだけでも一苦労です。
統合の難しさ (Hard to integrate): たとえ単一のエージェントをうまく構築できたとしても、それを他のシステムや既存のサービスと統合するのは容易ではありません。さらに、複数のエージェントが連携して動作するマルチエージェントシステムでは、エージェント間の依存関係を効果的に管理し、デバッグの難しいワークフローが発生するのを避ける必要があります。異なる技術スタックで構築されたエージェント同士がスムーズに通信し、情報を共有するための標準的なプロトコルやメカニズムが不足しているため、開発者は手作業で複雑な接着コードを書くことになり、これがシステムの複雑性を増大させ、メンテナンス性を低下させます。
運用とガバナンスの欠如 (Lack of ops & governance): AIエージェントがプロトタイプ段階から本番環境に移行すると、信頼性、スケーラビリティ、モニタリング、そしてガバナンスといったMLOps(Machine Learning Operations)の課題が顕在化します。エージェントを大規模にデプロイし、そのパフォーマンスを継続的に監視し、予期せぬ挙動を検知して対処し、さらには規制や倫理的ガイドラインに準拠したガバナンス体制を構築することは、多大な労力と専門知識を要します。ロギング、トレース、エラー処理、リソース管理、バージョン管理など、AIエージェントエコシステム全体を安定して運用するための包括的なソリューションが求められています。
これらの課題を解決し、AIエージェントの真のポテンシャルを引き出すためには、開発者がより効率的に、より信頼性高く、そしてよりスケーラブルにエージェントを構築・運用できるような、新しいアプローチとプラットフォームが不可欠です。
第2章:Google Cloudの革新的な「Agentic Stack」とは?
Google Cloudが提唱する「Agentic Stack」は、AIエージェント構築における上記のような課題を解決し、開発者がイノベーションに集中できる環境を提供するための包括的なソリューションです。このスタックは、ツールキット、プロトコル、そしてエージェントプラットフォームという3つの主要な柱に基づいています。
2.1. ビジョン:標準化された開発と運用によるAIエージェントエコシステムの実現
Agentic Stackの根底にあるのは、「AIエージェント開発を標準化し、エージェントがツールや他のエージェントとシームレスに連携できるプロトコルを提供し、そしてエージェントを本番環境で容易にデプロイ・管理できるプラットフォームを構築する」という明確なビジョンです。これにより、開発者は断片化されたエコシステムの複雑さに煩わされることなく、より迅速に、より大規模に、そしてより信頼性の高いAIエージェントアプリケーションを市場に投入できるようになります。
2.2. Agentic Stackの構成要素
Google CloudのAgentic Stackは、以下の4つの主要なコンポーネントで構成されています。
Agent Development Kit (ADK)
- 概要: ADKは、AIエージェントの構築、評価、デプロイのためのオープンソース、コードファースト、開発者フレンドリーなツールキットです。Pythonで提供されており、既存のソフトウェアエンジニアリングのベストプラクティスに沿って設計されています。
- 特徴:
- コードファースト: 開発者が使い慣れたコードでエージェントのロジックを記述できます。
- 開発者フレンドリー: 直感的なAPIとシンプルな抽象化により、エージェント開発の学習曲線を軽減します。
- オープンソース: コミュニティによる貢献と透明性を促進します。
- スケーラビリティ: シンプルなエージェントから複雑なマルチエージェントシステムまで、さまざまな規模のアプリケーションに対応します。
- 利点: 開発者はADKを使用することで、エージェントのプロトタイピングから本番デプロイまでのプロセスを大幅に加速し、より迅速なイテレーションを実現できます。
Model Context Protocol (MCP)
- 概要: MCPは、アプリケーションが大規模言語モデル(LLM)にコンテキスト(情報、ツール、機能など)を提供する方法を標準化するオープンプロトコルです。AIエージェントが、LLMの推論能力を最大限に活用するために必要な外部情報やツールに、一貫した方法でアクセスできるように設計されています。
- 背景: 従来のAPIがWebアプリケーションとバックエンド(サーバー、データベース、サービス)間のインタラクションを標準化したように、MCPはAIアプリケーションが外部システム(プロンプト、ツール、リソース)とどのように対話するかを標準化します。また、IDEにおけるLSP(Language Server Protocol)がコードナビゲーションや分析を言語間で標準化したように、MCPはLLMに対するコンテキスト提供を標準化します。
- 機能:
- ツールへのアクセス: エージェントはMCPを介して、外部ツール(例えば、カレンダーサービス、データベース、検索エンジンなど)の機能にアクセスし、自身の能力を拡張できます。
- コンテキスト管理: LLMに渡すコンテキスト(過去の会話履歴、関連文書、ユーザー設定など)を標準化された形式で管理し、より正確で関連性の高い応答を引き出します。
- エージェント間連携: 複数のエージェントが同じMCPプロトコルを介して情報を共有し、互いの機能を発見し、協力してタスクを達成するための基盤を提供します。
- 利点: エージェントと外部システムの間の統合を簡素化し、異なるフレームワークやプロバイダーのLLMでも一貫した動作を保証します。
Vertex AI Agent Engine
- 概要: Vertex AI Agent Engineは、Google CloudのVertex AI上で提供される、AIエージェントを本番環境でデプロイ、管理、スケーリングするためのフルマネージドプラットフォームです。AIエージェントのライフサイクル全体をサポートし、運用上の複雑さを抽象化します。
- 機能:
- フルマネージドランタイム: エージェントのコードを実行するためのインフラストをGoogle Cloudが管理します。開発者はインフラのプロビジョニング、スケーリング、メンテナンスについて心配する必要がありません。
- 自動スケーリング: トラフィックの変動に応じて、エージェントのリソースが自動的に増減します。
- 高可用性: グローバルなリージョン展開と冗長性により、高い可用性を保証します。
- セキュリティとガバナンス: コンテナの脆弱性管理、アクセス制御、データプライバシー保護など、エンタープライズレベルのセキュリティ機能を提供します。
- 可観測性: Cloud Logging、Cloud Monitoring、Cloud TraceなどのGoogle Cloudの監視ツールと統合され、エージェントのパフォーマンス、エラー、リソース使用量をリアルタイムで可視化します。
- 評価機能: Vertex AIのGen AI評価機能と連携し、エージェントのパフォーマンスを継続的に測定し、改善サイクルをサポートします。
- 利点: 開発者はインフラ管理から解放され、エージェントのコアロジック開発に集中できます。信頼性、スケーラビリティ、セキュリティが組み込まれたプラットフォーム上で、AIエージェントを迅速かつ安全に本番環境にデプロイできます。
Agent2Agent (A2A) protocol
- 概要: A2Aプロトコルは、異なるAIエージェント間でのコミュニケーションとコラボレーションを可能にするオープンスタンダードです。マルチエージェントシステムにおいて、エージェントがお互いの存在を発見し、能力を理解し、協調してタスクを遂行するための共通言語とルールを提供します。
- 機能:
- エージェントスキルの記述: 各エージェントが提供できる特定の機能や能力を記述します。これは、他のエージェントがそのエージェントにどのようなタスクを依頼できるかを理解するための「サービスカタログ」のようなものです。
- エージェントカード (Agent Card): エージェントの「デジタル名刺」として機能するJSON仕様(
.well-known/agent.json)です。これには、エージェントの識別情報、利用可能なスキル、アクセス方法などが含まれます。他のエージェントやアプリケーションは、このエージェントカードを読み取ることで、そのエージェントが何をするものなのか、どのように連携すればよいのかを知ることができます。 - 協調とオーケストレーション: HTTP、SSE(Server-Sent Events)、JSON-RPCなどの既存の広く採用されている標準プロトコルに基づいて構築されており、セキュアでガバナンスの効いた方法でエージェント間の動的な対話を実現します。
- 利点: 異なるフレームワークやチームによって開発されたエージェントが、相互運用性を心配することなく連携できる、真のAIエージェントエコシステムを構築するための鍵となります。
これらのコンポーネントが連携することで、Google CloudのAgentic Stackは、AIエージェントの設計、開発、デプロイ、そして運用におけるあらゆる段階を合理化し、開発者が次世代のAIアプリケーションを自信を持って構築・提供できるよう支援します。
第3章:実践!ClaudeとADKでAIエージェントを構築する
ここからは、実際にGoogle CloudのVertex AI上でAnthropicのClaudeモデルとADKを使用してAIエージェントを構築するプロセスを、具体的なデモンストレーションの内容に基づき詳細に解説します。
3.1. Vertex AI Model GardenからClaudeにアクセスする
AIエージェントを構築するには、まずLLMが必要です。Vertex AIは、Google自身のモデルだけでなく、Anthropicのようなサードパーティプロバイダーのモデルも提供する「Model Garden」を通じて、Claudeモデルへのシームレスなアクセスを提供します。
- Model Gardenの概要: Model Gardenは、基盤モデルやオープンソースモデルを一元的に発見、デプロイ、管理できる集中ハブです。画像生成、テキスト分類、エンティティ抽出など、様々なタスクに対応する事前学習済みマルチタスクモデルが多数用意されています。
- Claudeモデルへのアクセス: Model GardenのパートナーセクションにはAnthropicのモデルが含まれており、最新のClaudeモデル(例えば、Claude 3.7 Sonnet、Claude 3.5 Sonnet v2、Claude 3.5 Haiku、Claude 3 Opus)が利用可能です。開発者は簡単な設定と認証プロセスを経て、これらのモデルにAPI経由またはVertex AI StudioのプロンプトUIからアクセスできます。
- Vertex AI Studioでのテスト: Vertex AI StudioのプロンプトUIを使用すると、コードを書くことなくClaudeモデルと対話し、その応答をテストできます。例えば、「hello」と入力すると、モデルは「Hello! How can I help you today?」と応答し、その場でモデルの挙動を確認できます。また、このUIから、モデルをアプリケーションに統合するためのPython、curl、Node.jsなどのAPIコードを簡単に取得できます。
このように、Vertex AI Model Gardenは、AIエージェント開発の基盤となるLLMへのアクセスとテストを非常に効率的に行える環境を提供します。
3.2. ADKエージェントのコアコンセプト
ADKは、エージェントを構築するための明確な抽象化を提供します。ここでは、エージェントを構築するために知っておくべき主要なコンセプトを素早く確認します。
LlmAgent (Agent):
- ADKにおけるエージェントの基本クラスであり、エージェントの「脳」または「ワーカー」を表します。
- LLM(例:Claude、オープンモデル、Geminiなど)を使用して推論を行い、タスクを実行します。
- キーパラメータとして、エージェントの
name、使用するmodel、エージェントに与えるinstruction(指示)、そしてエージェントが利用できるtools(ツール)を設定します。これらのパラメータを設定するだけで、基本的なエージェントが動作します。
Tools (FunctionTool):
- エージェントの「スキル」や「アクション」を定義するものです。これは、エージェントが実行できる特定の機能をPython関数としてカプセル化したものです。
- ADKは、これらのPython関数から自動的にLLMが理解できるスキーマ(Function Callingの仕様)を生成し、エージェントが適切なタイミングでツールを呼び出せるようにします。
- ADKには、事前構築されたツールも提供されていますが、開発者は自身のカスタムツールを定義し、エージェントの能力を拡張することができます。
Runner:
- エージェントの実行を管理するコンポーネントです。
ADK runコマンドを使用すると、CLIからエージェントとインタラクティブに対話できます。ADK webコマンドを使用すると、Web UIを介してエージェントと対話し、その動作を視覚的にデバッグできます。- Runnerは、エージェントとのセッション(会話状態)を管理し、会話の履歴を保持します。
Session & state:
- Session: エージェントとの個々の会話を表します。各セセッションは独立しており、会話履歴を追跡します。
- State: セッション内でデータを渡すための辞書のようなものです。エージェントがタスクを実行する際に、この
stateオブジェクトを通じて情報(例:ユーザーID、クエリ、中間結果など)を共有し、記憶を維持します。
これらのコアコンセプトを理解することで、ADKを使用したAIエージェントの構築がより明確になります。ADKは、ソフトウェアエンジニアリングのベストプラクティスに可能な限り近づけるように設計されており、簡潔で構造化されたコードでエージェントを開発できます。
3.3. シンプルな誕生日プランナーエージェントの構築
ここでは、誕生日パーティーのテーマやアクティビティを提案するシンプルなADKエージェントを構築します。このエージェントは、Claude 3.7 Sonnetモデルを使用します。
ADKエージェントを構築するために必要なファイルは基本的に3つです。
agent.py: エージェントのロジックを記述するメインファイルです。.env: 環境変数を定義するファイルです。Claudeモデルへの認証情報などを格納します。__init__.py: Pythonパッケージの初期化ファイルです。
agent.pyの中では、以下のようにLlmAgentクラスをインスタンス化します。
from google.adk.agents import LlmAgent
from google.adk.models.anthropic_llm import Claude
from google.adk.models.registry import LlmRegistry
# ClaudeモデルをADKに登録
llm_registry.register(Claude)
# 誕生日プランナーエージェントを定義
birthday_planner_agent = LlmAgent(
name="BirthdayPlannerAgent",
model="claude-3-7-sonnet@20250219", # 使用するClaudeモデルのバージョン
description="Helps plan birthday party themes and activities.",
instruction=(
"You are a friendly and creative Birthday Planner assistant.\n"
"Your goal is to help the user brainstorm ideas for a birthday party.\n"
"1. First, ask for the age of the birthday person.\n"
"2. After receiving the age, ask about their interests or hobbies.\n"
"3. Once you have both age and interests, provide 3-5 suitable and creative "
"birthday party theme or activity suggestions.\n"
"4. Maintain a cheerful and helpful tone throughout the conversation.\n"
"5. If the user provides both age and interests in their first message, "
"you can skip asking and directly provide suggestions."
),
tools=[], # このエージェントはまだ外部ツールを使用しない
)
このコードでは、まずClaudeモデルをADKのLLMRegistryに登録します。次に、LlmAgentをインスタンス化し、エージェントの名前、使用するClaudeモデルのID、エージェントの概要(description)、そしてエージェントの役割と行動規範を詳細に記述したinstructionを設定します。
エージェントを実行するには、CLIでadk run birthday_planner_agentコマンドを使用します。これにより、エージェントとのインタラクティブなセッションが開始され、以下のような会話が可能です。
user: hello
BirthdayPlannerAgent: Hi there! I'm your friendly birthday party planning assistant.
I'd love to help you brainstorm some fun ideas for a birthday celebration.
To get started, could you tell me the age of the birthday person? This will help me suggest age-appropriate themes and activities.
このように、たった数行のコードと1つのCLIコマンドで、Claudeを搭載したAIエージェントを簡単に起動し、対話を開始できます。これはADKがソフトウェアエンジニアリングのベストプラクティスを取り入れ、開発プロセスを極めて効率的に設計していることを示しています。
3.4. MCPを活用した「カレンダーサービス」エージェントの拡張
誕生日プランナーエージェントが完成したら、次にその能力を拡張してマルチエージェントシステムを構築しましょう。例えば、誕生日パーティーのアイデアを提案するだけでなく、提案されたアクティビティをカレンダーにスケジュールできるようにしたいとします。このためには、エージェントが外部のカレンダーサービスと連携する必要があります。ここでModel Context Protocol (MCP)が役立ちます。
ADKでは、MCPを使用して既存のMCPサーバーをエージェントのツールとして組み込むか、またはADKで構築したツールをMCPサーバーとして公開することができます。ここでは、既存のMCPカレンダーサービスをADKエージェントに組み込む方法を見ていきます。
まず、カレンダーサービスのエージェントを定義します。
# calendar_service.py (エージェントファイルの一部)
async def create_calendar_service_agent():
# MCPカレンダーサービスからツールをフェッチ
mcp_tools, exit_stack = await MCPToolSet.from_server(
connection_params=SseServerParams(url=MCP_CALENDAR_SERVER_URL),
)
# フェッチしたツールでカレンダーサービスエージェントを定義
calendar_service_agent = LlmAgent(
name="CalendarServiceAgent",
model="claude-3-7-sonnet@20250219",
description="Manages Calendar operations like checking available slots.",
instruction=(
"You are a Calendar Assistant connected to an external calendar service.\n"
"Use the tool 'check_calendar_availability' to check for free time slots.\n"
"Use the tool 'create_calendar_event' to schedule new events.\n"
"Ensure you have all necessary details (date, time, duration, title) "
"before creating an event. Confirm actions with the user."
),
tools=mcp_tools, # MCPから取得したツールを渡す
)
return calendar_service_agent, exit_stack
上記のコードでは、MCPToolSet.from_server()メソッドを使用して、指定されたURLのMCPカレンダーサービスから利用可能なツールをフェッチしています。これらのツール(check_calendar_availabilityやcreate_calendar_eventなど)は、そのままLlmAgentのtoolsパラメータに渡すことができます。ADKがMCPとの連携を抽象化してくれるため、開発者はたった2行のコードで外部サービスをエージェントの能力として統合できます。
このようにして、誕生日プランナーエージェントとは別に、カレンダーサービスに特化したエージェントをMCPを介して構築できます。
3.5. マルチエージェントオーケストレーターの構築
次に、誕生日プランナーエージェントとカレンダーサービスエージェント、これら2つのエージェントを連携させ、ユーザーのリクエストに応じて適切なエージェントにタスクを委譲する「EventOrganizerAgent」を構築します。このオーケストレーターエージェントは、より高レベルな目標を達成するために、専門エージェントを管理・調整する役割を担います。
# event_organizer.py (エージェントファイルの一部)
from google.adk.agents import LlmAgent
from google.adk.agents import AgentTool
# 誕生日プランナーエージェントとカレンダーサービスエージェントのインスタンスを事前に作成
planner_agent_instance = ... # BirthdayPlannerAgentのインスタンス
calendar_agent_instance = ... # CalendarServiceAgentのインスタンス
# EventOrganizerAgentを定義
organizer_agent = LlmAgent(
name="EventOrganizerAgent",
model="gemini-2.0-flash", # オーケストレーターは別のモデルを使用することも可能
description="Main coordinator for event planning. Delegates birthday planning to a specialist and calendar tasks to another.",
instruction=(
"You are an expert Event Organizer.\n"
"You have a team of specialist agents:\n"
f"- {{planner_agent_instance.name}}: This agent handles all requests related to birthday ideas.\n"
f"- {{calendar_agent_instance.name}}: This agent is an expert in managing calendar events.\n"
"Your primary job is to understand the user's request and delegate to the correct specialist agent.\n"
"If the user asks for birthday ideas, delegate to the BirthdayPlannerAgent.\n"
"If the user asks to create a calendar event, delegate to the CalendarServiceAgent.\n"
"If the request is unclear, ask clarifying questions to determine which specialist to use or what information is missing for a task."
),
tools=[
AgentTool(agent=planner_agent_instance), # 誕生日プランナーエージェントをツールとして登録
AgentTool(agent=calendar_agent_instance), # カレンダーサービスエージェントをツールとして登録
],
)
このオーケストレーターエージェントは、Gemini-2.0-Flashのような異なるLLMを使用することも可能です。最も重要なのは、toolsパラメータに、AgentToolラッパーを介してplanner_agent_instanceとcalendar_agent_instanceを渡している点です。これにより、EventOrganizerAgentは、これら2つの専門エージェントを自身の「ツール」として認識し、ユーザーのリクエストに応じて適切なエージェントにタスクを委譲できるようになります。
adk web event_management_local_agent_systemコマンドでこのマルチエージェントシステムをWeb UIで実行すると、以下のような動作を可視化できます。
- ユーザーが「こんにちは」と入力すると、EventOrganizerAgentが応答します。
- ユーザーが「誕生日パーティーのアイデアが欲しい」と入力すると、EventOrganizerAgentは内部的にBirthdayPlannerAgentにリクエストを委譲し、その応答をユーザーに返します。
- ユーザーが「来週の金曜日にミーティングをスケジュールして」と入力すると、EventOrganizerAgentはCalendarServiceAgentにリクエストを委譲し、カレンダーへのイベント作成プロセスを開始します。
Web UIの「Events」タブでは、どのエージェントがいつ、どのようなアクションを実行したか、そしてどのような応答を生成したかといった、システム内部の動作をグラフ形式で確認できます。これにより、複雑なマルチエージェントシステムのデバッグと理解が大幅に容易になります。
ADKの設計思想により、開発者は少数のファイルとコマンドで、単一のAIエージェントから、MCPを介して外部サービスと連携し、さらに他のエージェントをオーケストレートするマルチエージェントシステムまで、様々な複雑さのAIアプリケーションを構築できます。
第4章:Vertex AI Agent Engineへのエージェントデプロイ
AIエージェントが開発段階でうまく機能したとしても、それを本番環境で運用するには、開発、インフラ運用、そして可観測性と評価の面で多くの課題が伴います。Vertex AI Agent Engineは、これらの課題を解決し、AIエージェントを自信を持って大規模にデプロイするためのマネージドプラットフォームを提供します。
4.1. なぜAgent Engineが必要なのか?
AIエージェントを本番環境で実行しようとすると、以下のような課題に直面します。
| 項目 | Agent Engineなし | Agent Engineあり |
|---|---|---|
| 開発 | FastApiやDjangoなどのアプリケーションサーバーを開発し、HTTP API経由でコード(LangChainなど)を提供する。Dockerのエキスパートとしてコンテナをビルドし、ローカルでテスト。GCP環境を構成。 | Vertex AI SDKのagent_engines.create()メソッドを呼び出すだけでデプロイ。コードがテナントプロジェクトにデプロイされる。 |
| インフラ運用 | ユーザーコードはユーザープロジェクトにデプロイされ、ユーザーがすべての運用ワークロードを管理する。 | Vertex AIがオートスケーリング、リージョン拡張、コンテナ脆弱性対応など、すべての運用ワークロードを管理する。 |
| 可観測性と評価 | ログ、モニタリング、トレース、評価を手動で追加する必要がある。 | 可観測性: Cloud Logging、Monitoring、Tracingにシームレスに統合される。Vertex Extensions as Toolsにより、SDK体験がさらに合理化される。 評価: Vertex AI Gen AI Evaluationと統合される。 |
Agent Engineは、開発者がインフラの複雑さから解放され、エージェントのコアロジックと価値創造に集中できるように設計されています。
4.2. Agent Engineの全体像
Vertex AI Agent Engineは、以下のような包括的なエコシステムを提供します。
- クライアント (Client): フロントエンド、SDK、またはAI Agent Starter Packを通じて、Agent Engineと対話します。
- Agent Engine:
- マネージドセッション: エージェントとの会話セッションを管理し、記憶を保持します。
- コード実行: エージェントのコードを安全かつスケーラブルに実行します。
- セキュアな環境: エージェントが安全に動作するための実行環境を提供します。
- Agenspace: エージェントを登録し、公開するためのゲートウェイとして機能します。カスタムエージェントもAgentSpaceに登録できます。
- エージェントフレームワーク (Agent Frameworks): ADKはもちろんのこと、LangGraph、LangChain、CrewAI、AG2、その他のPythonフレームワークで構築されたエージェントをサポートします。
- ツール (Tools):
- 組み込みツール: ADK自体が提供するツール。
- カスタムツール: 開発者が独自に作成したツール。
- エコシステムツール: Google Cloudのサービス(Cloud Storage、Vertex AI Searchなど)と連携するツール。
- MCPツール: Model Context Protocolを介して統合されたツール。
- Open APIツール: OpenAPI仕様に準拠した外部APIをツールとして利用。
- モデル (Models): Gemini、Model Gardenのモデル、ファインチューニングされたモデルなど、様々なLLMをエージェントに組み込むことができます。
- Agent2Agent: エージェント間のコミュニケーションを標準化するプロトコル。
Agent Engineは、これらの要素をすべて統合し、開発者がエージェントを定義、デプロイ、管理、観察、呼び出し、そして登録するためのエンドツーエンドのプラットフォームを提供します。
4.3. Agent Engineへのデプロイプロセス
AIエージェントをAgent Engineにデプロイするプロセスは、非常にシンプルです。
要件の定義: エージェントの実行に必要なPythonライブラリやその他の依存関係を
requirements.txtファイルに定義します。deploy_agents.pyスクリプトの実行: 提供されているdeploy_agents.pyのようなスクリプトを使用します。このスクリプトは、エージェントのコード、要件、その他の設定をパッケージ化し、Agent Engineにデプロイします。# deploy_agents.py (簡略化された例) # デプロイするエージェントをリストアップ AGENTS_TO_DEPLOY = [ birthday_planner_agent, # calendar_agent, # 他のエージェントも追加可能 # organizer_agent, ] # ヘルパー関数で個々のエージェントをデプロイ def deploy_single_agent(agent_object, requirements, display_name_prefix="adk-"): # ... (エラーチェック、名前の取得など) ... try: remote_app = agent_engines.create( # Agent Engineにエージェントを作成 agent_engine=reasoning_engines.AdkApp( # ADKアプリケーションとして指定 agent=agent_object, enable_tracing=True # トレースを有効化 ), requirements=list(set(requirements)), display_name=display_name_prefix + agent_name, extra_packages=["src"], # 追加パッケージのパス ) logging.info(f"Deployment submitted successfully for {agent_name}") return remote_app except Exception as e: logging.error(f"Failed to deploy agent {agent_name}: {e}") return None # すべてのエージェントをループしてデプロイ for agent in AGENTS_TO_DEPLOY: deploy_single_agent(agent, BASE_REQUIREMENTS)このスクリプトは、Agent Engineにエージェントを作成するための
agent_engines.create()メソッドを呼び出します。ここには、エージェントのオブジェクト、依存関係、表示名、そしてトレースの有効化などの設定を含めることができます。デプロイの監視: デプロイが開始されると、Vertex AIコンソールのAgent Engine UIで、デプロイの進行状況をリアルタイムで監視できます。ビルドプロセスやリソースのプロビジョニングにかかる時間は、エージェントの複雑さによって異なります。
デプロイ後の監視と管理: デプロイが成功すると、Agent Engine UIには以下のような情報が表示されます。
- メトリクス:
- Queries per second (QPS): エージェントが1秒間に処理するクエリ数。
- Query latencies (by percentile): クエリ応答時間の分布(P50、P95、P99レイテンシーなど)。
- Query error ratio: エージェントがエラーを返したクエリの割合。
- Agent Engine Resource Allocations: コンテナのCPU使用量とメモリ割り当て。これらのメトリクスは、エージェントが十分なリソースを使用しているか、またはリソースを過剰に消費しているかを理解するのに役立ちます。
- セッション: ユーザーとエージェント間の個々の会話セッションを追跡します。各セッションには一意のIDが割り当てられ、会話履歴が保持されます。
- API URLs: デプロイされたエージェントにアクセスするためのクエリURLとストリームクエリURLが提供されます。これにより、リアルタイムまたはストリーミングアプリケーションからエージェントを簡単に統合できます。
- デプロイ詳細: エージェントの名前、説明、使用されたパッケージのURI、要件ファイル、Pythonバージョンなど、デプロイに関する詳細情報が確認できます。
- メトリクス:
このように、Vertex AI Agent Engineは、AIエージェントのライフサイクル管理におけるあらゆる側面をカバーし、開発者がイノベーションを加速するための強力な基盤を提供します。
まとめと今後の展望
本記事では、Google CloudのVertex AIでAnthropicのClaudeモデルを活用し、AIエージェントを構築・デプロイする方法について、Google Cloudが提供する「Agentic Stack」の概念から実践的な実装までを詳しく解説しました。
私たちは、AIエージェント構築における従来の課題、すなわち断片化されたランドスケープ、統合の難しさ、そして運用とガバナンスの欠如という3つの主要な問題を確認しました。そして、これらの課題に対するGoogle Cloudの包括的な回答として、以下のAgentic Stackの構成要素が提示されました。
- Agent Development Kit (ADK): 効率的なエージェント開発を可能にするコードファーストのツールキット。
- Model Context Protocol (MCP): LLMと外部ツール・エージェント間の標準化されたコミュニケーションを促進するプロトコル。
- Vertex AI Agent Engine: エージェントの本番環境デプロイ、スケーリング、管理、可観測性を一元的に行うマネージドプラットフォーム。
- Agent2Agent (A2A) protocol: 異なるエージェント間のシームレスな連携と協調を実現するオープンスタンダード。
さらに、実際にClaudeモデルへのアクセス方法、ADKを使用したシンプルな誕生日プランナーエージェントの構築、MCPを活用したカレンダーサービスエージェントとのマルチエージェントシステムの構築、そして最終的にVertex AI Agent Engineへのデプロイと監視のプロセスを詳細に見てきました。
このAgentic Stackは、開発者がAIエージェントの真の可能性を解き放ち、より複雑でインテリジェントなアプリケーションを、かつてないスピードと信頼性で構築できるよう支援します。断片化されたエコシステムの障壁を取り除き、エージェントが互いに、そして世界と協調するための共通言語を提供することで、Google CloudはAIエージェントの新しいエコシステムを推進しています。
今後、AIエージェントの技術はさらに発展し、私たちの想像を超えるようなユースケースが生まれるでしょう。Google CloudのAgentic Stackは、その未来を形作る最前線に立ち、開発者が自信を持って次世代のAIイノベーションをリードするための基盤を提供し続けます。
AIエージェントの時代は始まったばかりです。Google Cloudと共に、そのエキサイティングな旅に参加し、未来を創造しましょう。
さらに詳細な情報が必要な方へ:
サンプルコードの入手: 本記事で紹介したコードサンプルを含むリポジトリは、以下のQRコードからアクセスできます。 [QRコード(GitHubリポジトリへのリンク)]
ウェビナー参加: Google CloudとAnthropicが共同で開催するウェビナーでは、Agentic StackとA2Aプロトコルの統合について、さらに踏み込んだ解説とデモンストレーションが行われます。ぜひご参加ください。 [QRコード(ウェビナー登録ページへのリンク)]
ご質問はこちらまで [QRコード(Ivan Nardini氏の連絡先)]
ご参加ありがとうございました!