Share
Embed
Transcript
24 slides
-
Agent Development Kitで作る マルチエージェントアプリケーション Google Cloud Next Tokyo 2025 株式会社スリーシェイク
山田悠之介 Copyright © 3-shake, Inc. All Rights Reserved. -
About US 3 会社名 株式会社スリーシェイク 設立日 2015/1/15 Mission: インフラをシンプルにして イノベーションが起こりやすい世界を作る
Vision: 労苦〈Toil〉を無くすサービスを適正な価格で提供し続ける Value: エンジニアリングレイヤーに横たわる人、手法、ツールが サイロ化されて労苦が発生しているプロセスをシンプルにし サービス機能開発に集中できるソリューション (SRE、DevSecOps、DataOps、HROps)を提供する 2015 2016 2017 2018 2019 2020 2021 2022 0 50 100 従業員: 200名over Engineer 60% 所在地 東京都新宿区大京町22-1 グランファースト新宿御苑3F・4F 代表者 代表取締役社長 吉田 拓真 沿革 2021年1月 JAFCOから総額5億円の資金調達 2022年8月 自動脆弱性診断ツール「Securify Scan」をリ リース。JAFCO、MUCAPから総額8.48億円の資金調達 Googleクラウド・AWSの両方のエンジニアリングに強みを持つ (2024年8月に国内2例目の、GoogleCloudのDevOpsスペシャライゼーションを取得) -
SREを主軸にクラウドネイティブ化/エンジニアリング内製化を支援 SRE/DevOps SecOps BizOps HR ・SRE総合支援からセキュリティ対 策を全方位支援 ・Geminiを用いた生成AIの活用支援 ・ワンストップで脆弱性診断を行う セキュリティ対策SaaS
・クラウド型ETL/データパイプ ラインSaaSの決定版 ・あらゆるSaaSをノーコードで連携 ・ハイスキルフリーランスエンジニ ア紹介エージェント IT内製化 / 高度化 クラウドネイティブ化 モダナイゼーション ITアジリティ向上 4 -
マルチエージェントの必要性 シングルエージェントの開発を進めていくと、肥大化し複雑さが増えていく • 利用可能なツールが増えていき、動作が不安定になる • コンテキストの複雑化 • 複数のドメインによる保守性低下 そのような場合には肥大化したシングルエージェントを分割し、 マルチエージェントにすることに一定のメリットがある
• フローを制御できるようになることで動作が安定 • 専門性の高いエージェントに分割することで全体の性能が向上 • モジュール化による開発の効率化 7 -
どちらが良いか • まずはSupervisorパターンがおすすめ ◦ Supervisorパターンは開発・運用の両方でシンプルかつそれなりの性能 ◦ 不要な最適化より分かりやすさ(YAGNI) ◦ 事例も多い(巨人の肩に乗る) •
性能が必要になってからSwarmパターンを検討すれば良い 11 -
Agent Development Kit(ADK) AIエージェントを実装するためのGoogle製OSS 13 root_agent = Agent( name="weather_time_agent", model="gemini-2.0-flash",
description=( "Agent to answer questions about the time and weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the time and weather in a city." ), tools=[get_weather, get_current_time], ) https://google.github.io/adk-docs/get-started/quickstart/ -
別のエージェントを利用する方法 ①sub_agentsによる指定 制御はサブエージェントに移る (サブエージェントがユーザに返答する) 14 parent_agent = LlmAgent( name="parent_agent", model="gemini-2.5-flash",
sub_agents=[child_agent_1, child_agent_2], ) parent_agent = LlmAgent( name="parent_agent", model="gemini-2.5-flash", tools=[ AgentTool(child_agent_1), AgentTool(child_agent_2), ], ) ②Agent-as-a-Toolによる指定 制御は親エージェントのまま (親エージェントがユーザに返答する) -
ADKでのSwarmパターンの実装 ADKでは自然には実装できない(sub_agentsに自身以外のエージェントを全て指定する) 問題点というよりは階層化を強制する「Pit of Success」 16 hotel_agent = LlmAgent( name="hotel_agent",
model="gemini-2.5-flash", ) flight_agent = LlmAgent( name="flight_agent", model="gemini-2.5-flash", ) hotel_agent.sub_agents = [flight_agent] flight_agent.sub_agents = [hotel_agent] -
Vertex AI Agent Engine AIエージェントのデプロイ、管理を行うGoogle Cloudのフルマネージドサービス サポート • ADK •
LangChain, LangGraph, etc... • カスタムコード 主な機能 • コンテキスト管理 • 評価 • オブザーバビリティ 19 -
エージェントのオブザーバビリティの必要性 AIエージェントの「難しさ」に対してオブザーバビリティを考える必要性 20 何が生成 される? どれくらい 時間がかかる? どれくらい お金がかかる? 巨大な
ワークフロー 外部サービス の呼び出し モデルの更新