$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
Search
Kazuki Hara
November 27, 2025
Programming
0
120
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
Kazuki Hara
November 27, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
【レイトレ合宿11】kagayaki_v4
runningoutrate
0
210
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
290
スタートアップを支える技術戦略と組織づくり
pospome
8
14k
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
380
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
390
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
5
16k
Integrating WordPress and Symfony
alexandresalome
0
110
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
320
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
550
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
4.5k
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
680
How Software Deployment tools have changed in the past 20 years
geshan
0
27k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
It's Worth the Effort
3n
187
29k
Facilitating Awesome Meetings
lara
57
6.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
Building Applications with DynamoDB
mza
96
6.8k
A better future with KSS
kneath
240
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Designing for humans not robots
tammielis
254
26k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Making Projects Easy
brettharned
120
6.5k
Transcript
Google ADKを活用した AI Agent開発と運用知見 2025/11/19 「CA.ai#3 〜事例から学ぶ実践 AIエージェント開発〜」 株式会社サイバーエージェント MIU
AI戦略本部 原 和希
1.導入の背景 2.Google ADKとは? 3.品質向上テクニック 4.UI/UX 5.Observability 6.Deployment 7.おわりに
原 和希 株式会社サイバーエージェント / MIU AI戦略本部 AIエンジニア • Google Developer
Experts (Google Cloud: AI) • CyberAgent Developer Experts (Google Cloud/ ML) • X: @harappa80
AI Agentを開発している方 ✋
ADKを使って開発している方 ✋
今日話すこと /話さないこと 【今日話すこと 】 • ADKでできることの紹介 • 自社での開発を通して得られた知見 【今日は話さないこと 】
• 作成しているAI Agentの具体的な仕様
今日のゴール 【ADKにまだ詳しくない方】 • ADKがAgent Frameworkの 候補の1つになる • Agent開発のTipsを知り、活かせる 【既にADKを使っている方】 •
ADKをより使いこなす • 情報共有・議論をしましょう! (懇親会でぜひ🍻)
導入の背景
開発しているアプリケーション とあるメディアサイトの記事校正支援用 AI Agent 📝 • 業務効率化が目的 • 社内用のWebアプリケーションとして提供
開発過程 n8nで開発をはじめた ◦ ローコードで早く開発・展開することが狙い ◦ Agent機能もあり、ツールも多く、初期段階はスムーズに進んだ
開発過程 ワークフローが肥大化 • 管理コストの増大、属人化が加速 • メモリー不足が発生 柔軟性が乏しい • 結局コードノードにPythonコードを書いていた ◦
使用できるPythonライブラリに制限
開発過程 n8nからADKへと移行( LangGraphも候補) ◦ Coding Agentの成長と普及もあり、エンジニアなら コードを書いた方が早く・高品質 ◦ ツール連携を活用しつつ、自由度高く開発ができる
ローコードツール or Agent Framework ローコードツール • 簡易的なAI機能の開発 • 素早く作れて便利 •
非エンジニアにも👍 Agent Framework • 中-高程度の規模/ サービスイン • Coding Agentを使って時短 • エンジニア向け
Google ADKとは?
ADKとは? - https://github.com/google/adk-python - https://github.com/google/adk-java - https://github.com/google/adk-go - https://github.com/google/adk-js •
Agent Development Kit • AIエージェント開発のフレームワーク • Googleが開発主導しているOSS • 2025年4月に公開 • Python, Java, Go, TypeScript版がある ◦ Pythonが一番開発・利用が盛ん
ADKを採用した理由 •使い慣れたGoogle Cloudとの連携 •Google Workspaceとの連携 •複数プロバイダーのモデルを利用できる •利用可能なToolが豊富
基本的なAgent定義方法 ※ gemini-3-pro-previewも既に使えます!
ADK Web 開発用のWebUI イベントやトレース、Stateの確認・ 評価などが可能 •adk web コマンドで起動 •ノーコードでのAgent構築にも対応 ◦
Visual Agent Builder
None
Agent Type Agent Typeのコンポーネントが大きく3種類 • LLM Agent • Workflow Agent
◦ Sequential ◦ Parallel ◦ Loop • Custom Agent これらを組み合わせて Agentシステムを構築
任意のLLMを使用可能 https://www.litellm.ai/ • モデルのロックインは避けたい ◦ LLMの性能向上は日進月歩 • LiteLLMにより、 Google以外のベンダー /
独自モデル を利用可能 ※ Geminiとの相性が一番よい (Google検索, Context Cashなど)
豊富なツールを利用可能 • ADK組み込みのツール • LangChain, CrewAI のツール • MCP https://google.github.io/adk-docs/tools/
品質向上テクニック
専門家チームをつくる設計思想
1つのLlmAgentに全てを任せると … • Tool選択の難易度が上昇 : ◦ 多数のツールを持つと、どれをいつ使うかの判断が困難 • Contextの肥大化: ◦
コンテキストを圧迫し、コスト増加と精度低下を招く • 品質改善・デバッグが困難 : ◦ 役割・依存関係が曖昧になる 例: 「旅行プラン作成もレビューも予約も全部やるLlmAgent」
マルチエージェントにする 役割ごとに SubAgentに分割し、専門タスクに集中させる • 役割: ◦ ”同じ情報・目的” を共有する単位 ◦ 業務効率化の場合、
1業務として切り出せるか • SubAgentをLlmAgentやWorkflow Agentなどでオーケストレーション 例: 「プラン作成Agent」「レビューAgent」「予約実行Agent」
マルチエージェントのメリット • 品質改善 ◦ SubAgentごとにプロンプトやロジックの改善が可能 • デバッグが容易に ◦ バグ発生時にどのAgentが原因かを特定しやすい •
再利用性の向上 ◦ 共通処理は他のAgentシステムでも使える
レビュープロセスを組み込む 一定の基準に達するまで「生成 →レビュー→再生成」を繰り返す • Reflectionパターン • 一度の生成で高品質を実現するのは困難 なため • LoopAgentで実装可能
Loop Agent LlmAgent 【校正内容生成】 LlmAgent 【レビュー】
チェックリストを作成 レールを敷いて、タスクの抜け漏れ・無駄な作業を省く • 実行タスクのチェックリストを作成 (例: Claude Code) • Plannerには強力な推論モデルをアサイン ◦
BuildinPlanner(Gemini), PlanReActPlanner(その他) • 指示が曖昧: フォローアップ or 指示拡張するLlmAgentを前段に配置 Sequential Agent LlmAgent(Planner使用) 【チェックリスト生成】 LlmAgent(Tool利用) 【タスク実行】
モデルを適材適所で使い分ける 生成品質・コスト・レイテンシの観点で決定 • 最先端モデル(Gemini-2.5-Proなど): ◦ 実行計画を立てる時 ◦ 最終的な出力を生成する時 • 軽量モデル
(Gemini-2.5-Flashなど): ◦ Web検索など、ツールの実行タスク
複数のモデルで並列生成 並列で生成を行い、結果を統合する • 同様のタスクでもLLMによって出力傾向が異なる • Parallel Agentで実装可能 LLM Agent (結果を統合)
Sequential Agent 参考: https://google.github.io/adk-docs/agents/workflow-agents/parallel-agents/
動的/固定ルーティングの使い分け 何でもかんでも LLMにルーティングをさせない • 現状はAgenticな動的ルーティングは完璧ではない • ハイブリッドに採用 ◦ 決定論的なタスク: Sequential
Agent ◦ 柔軟性が必要なタスク: LlmAgent 業務プロセスを分解、性質を見極めて決定することが重要
CustomAgentの活用 https://google.github.io/adk-docs/agents/custom-agents/
CustomAgentの活用 任意のロジックを組み込みたいケース • LLM介さないロジック ◦ 例: Webから記事を取得, 外部APIを使用 • LLMAgentのツール実行でも関数を呼べるが、注意が必要
◦ ツールを“必ず実行してくれる”とは限らない
CustomAgent + Sequential Agent 「毎回実行したい」「決定論的に流したい」場合の解決策 • LlmAgentによるミスを低減 • 確実に処理を実行できるフローを構築できる Sequential
Agent CustomAgent 【Web記事取得】 CustomAgent 【マークダウン変換】 LlmAgent 【記事要約】
CustomAgentの実装方法 • BaseAgentを継承してクラスを作成 • 実行ロジックを非同期メソッド内(_run_async_impl)に実装 • セッション状態(ctx.session.state)を使用して、データ受け渡し
None
output_schemaで出力形式を固定 フローの安定性・アプリケーション側での取扱いが向上 • 出力をJSON形式に固定 (内部で専用ツールを呼び出して固定) • PydanticのBaseModelで定義 • 後続のAgentが生成物を参照しやすく
リトライの実装 レートリミットやリソース不足でのエラーを低減 • LlmAgentにリトライを設定しておく ◦ Geminiではretry_options ◦ LiteLlmではretry_policy 参考:Gen AI
SDK & ADK で実装する 429 エラーのリトライ&フォールバック戦略
Contextを上手く管理しよう Contextに何が挿入されるのかを丁寧に設計・把握 不必要なものを与えない • トークン数が増加すると... ◦ Contextから情報を正確に参照するのが困難に ◦ レスポンスが悪化 ◦
コストも増加 Context Rot: How Increasing Input Tokens Impacts LLM Performance
Context管理のテクニック • LlmAgentのinclude_context ◦ 会話履歴を参照するか決める • Context Compression ◦ 会話履歴を要約
• Session State ◦ 必要なStateのみをプロンプトに含める • BuiltInPlanner ◦ ThinkingConfigのinclude_thoughtsを設定
UI/UX
どのような UIで提供するか 文章校正アプリケーションでは、 • フォーム形式の UI ◦ 柔軟な応答を必要としない機能なため • ユーザー応答は逐次、選択形式(ボタン/
チェックボックス )で取得
「AI Agent = チャットアプリ」ではない 目的に合わせた UIで実装することが重要 チャット形式 : 想定する入力の柔軟性・機能のカバー範囲が広いケース
AI Agentの処理プロセスを見える化 • AI Agentはどうしてもレイテンシが高くなる • ユーザーの待ち時間に安心感を与える 【導入例】 • 実行しているSubAgentやToolの情報を表示
• タスク全体の何%が完了しているか → ADKのEventを取得して、フロントエンドで表示 (参考: https://google.github.io/adk-docs/events/ )
Human-in-the-Loopを組み込む 100%意図している出力を得ることは困難 → 人間を介入させることで、品質を担保する • 生成物の確認やステップ実行に人間が介入する ◦ 入力・編集、承認など • 承認/否認:
require_confirmation • JSON形式の応答: tool_confirmation (参考: https://google.github.io/adk-docs/tools-custom/confirmation/ )
Human-in-the-Loopを組み込む 記事の校正アプリケーションでは、 反映する校正内容をユーザーが選択・編集可能にしている
Observability
Langfuseの活用 • ADK Webと併用して、開発時のデバッグに活用 ◦ レイテンシ・エラーの特定 • OpenTelemetry互換のサービスに対応 ◦ (一覧)
• GoogleADKInstrumentorを使用して OpenTelemetryスパンを送信 https://langfuse.com/integrations/frameworks/google-adk
Deployment
デプロイ VertexAI Agent Engine/ CloudRun/ GKE と相性がよい • adk deploy
cloud_run/ agent_engineコマンド 文章校正アプリケーションでは、 CloudRunにデプロイ • 社内アプリケーションであり、小規模利用 • Agent Engine固有の機能を利用しなかった (検討中)
デプロイ VertexAI Agent Engine: • Session Service(永続性)/Memory Bank(長期記憶)/Code Execution(コード 実行)など、固有の機能を利用したい
• Gemini EnterpriseからのAgent使用を検討している GKE: • 大規模なサービスでAgentを提供する • Open Modelを同クラスタにデプロイ
おわりに
とはいえ、継続的に使われる AI Agentを作るのは大変 😿。
最近思っていること • AI Agent開発の領域 (特にAgentic AI)はまだ発展途上 ◦ 我々も手探りで進めている状態 • スポット導入ではなく、根付かせるまでが重要
◦ Agent導入が目的にならないように、業務改善を主眼に ◦ 業務を丁寧に分解・言語化していく • Agentロジックに加えて、 UI/UXを合わせた体験設計も重要 • 品質担保のためには、出力評価も重要
一旦、なんでも好きな Frameworkを触ってみる • AI Agentに必要な機能や、出来る・出来ないことがわかる • ADKは頻繁に新機能がリリースされて楽しい!
まずはQuickstartからぜひ https://google.github.io/adk-docs/get-started/python/
ご清聴ありがとうございました 🙏