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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kazuki Hara
November 27, 2025
Programming
0
410
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
Kazuki Hara
November 27, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
190
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
220
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.2k
Ruby x Terminal
a_matsuda
5
530
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
200
TipKitTips
ktcryomm
0
140
atmaCup #23でAIコーディングを活用した話
ml_bear
4
720
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
320
浮動小数の比較について
kishikawakatsumi
0
360
Rubyと楽しいをつくる / Creating joy with Ruby
chobishiba
0
200
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
480
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
220
We Have a Design System, Now What?
morganepeng
55
8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
200
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
Paper Plane
katiecoart
PRO
0
47k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
300
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
Scaling GitHub
holman
464
140k
Discover your Explorer Soul
emna__ayadi
2
1.1k
A better future with KSS
kneath
240
18k
Chasing Engaging Ingredients in Design
codingconduct
0
130
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/
ご清聴ありがとうございました 🙏