Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
450
1
Share
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
Kazuki Hara
November 27, 2025
Other Decks in Programming
See All in Programming
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
230
Road to RubyKaigi: Play Hard(ware)
makicamel
1
510
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
400
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
1
520
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
510
t *testing.T は どこからやってくるの?
otakakot
1
840
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
1.2k
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
900
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
290
Vibe NLP for Applied NLP
inesmontani
PRO
0
530
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
1.1k
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
Claude Code のすすめ
schroneko
67
220k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How to make the Groovebox
asonas
2
2.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
290
Test your architecture with Archunit
thirion
1
2.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
530
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
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/
ご清聴ありがとうございました 🙏