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
toB SaaSに導入したAI Agent機能開発奮闘記
Search
unsu0707
July 24, 2025
Technology
0
46
toB SaaSに導入したAI Agent機能開発奮闘記
toB SaaSに導入したAI Agent機能開発奮闘記 @Kodeveloper 2025.07.24
unsu0707
July 24, 2025
Tweet
Share
More Decks by unsu0707
See All by unsu0707
슬랙 Bolt를 이용해 개발팀 전체가 사용하는 슬랙봇을 만든 이야기
unsu0707
1
820
System Specについて調べてみた話
unsu0707
1
520
Other Decks in Technology
See All in Technology
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
260
Rustから学ぶ 非同期処理の仕組み
skanehira
1
140
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
130
Function Body Macros で、SwiftUI の View に Accessibility Identifier を自動付与する/Function Body Macros: Autogenerate accessibility identifiers for SwiftUI Views
miichan
2
180
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
160
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
410
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
110
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
190
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
180
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
180
Language Update: Java
skrb
2
300
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Balancing Empowerment & Direction
lara
3
620
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
4 Signs Your Business is Dying
shpigford
184
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Docker and Python
trallard
45
3.6k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
The World Runs on Bad Software
bkeepers
PRO
70
11k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Transcript
toB SaaS に導入した AI Agent 機能開発奮闘記 第64 回 Kodeveloper @Unsu
2025 年7 月24 日 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 1
自己紹介 @unsu 経歴 2025.01 ~ : Lead GenAI/LLM Application Engineer
@ EXPLAZA, Inc. 2022.02 ~ : Head of Engineering(Senior Manager) (CS プラットフォーム開発) @ Mercari, Inc. 2021.02 ~ : Technical Project Manager ( 銀行サービス開発) @ LINE 2016.04 ~ : Software Engineer / Engineering Manager (C2C サービス開発) @ Rakuten Group 2012.07 ~ 2014.12 : Web Developer @ 韓国 LinkedIn X(Twitter) toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 2
現在の業務 1. 会社広報活動 全社員がエバンジェリストとして登壇・発表・ テックブログ執筆・SNS 活動を推進中 最近執筆した記事 Cursor とのチャット履歴でブログ記事を自動生 成してみた
社内でAI 開発ツール調査したら、たった1 週間 で'Claude Code' 一択になった話 Zenn ウィークリーランキング登場 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 3
現在の業務 2. マーケティングコンテンツ生成AI サービス "Mark" 開発リード https://welcome.mark-ai.jp/ 最近開発中の機能 LLM-as-a-judge 社内ツール開発
AI Agent 機能開発 音声・映像からの記事・コンテンツ変換機能 Agent Framework 導入プロトタイプ(mastra ) など toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 4
今日のテーマ AI Agent 機能開発奮闘記 toB SaaS に導入したAI Agent 機能開発奮闘記 ©
2025 EXPLAZA Inc. 5
はじめに この話は2025 年4 月(LLM 開発経験3 ヶ月目)当時の実装事例 理論よりも実践的な試行錯誤の話 toB SaaS に導入したAI
Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 6
プロジェクトの始まり 2025 年4 月、入社3 ヶ月。AI Application エンジニアとして3 ヶ月目... お客様から興味深いご要望をいただきました。 お客様からのご要望(VoC
) " 機能を選ぶのではなく自由な文章で指示すれば、AI が自動的に: 記事内容をファクトチェックしたり 指示に合わせて部分的に編集したり 長い記事を読んで質問に答えたり こういった機能が欲しい" toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 7
プロトタイプ開発開始 CPO: Mark にAgentic AI チャット機能を追加してみましょうか? 私: (AI Agent 初心者だけど、挑戦してみよう)了解!やってみましょう。
toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 8
AI Agent とは? 基本的なLLM " 質問に答えるAI" ユーザー: " この文章を要約して" AI:
" はい、要約すると..." 単純な応答生成 AI Agent " 目標を達成するAI" ユーザー: " この記事を事実確認して修正して" AI が自動的に: ウェブ検索実行 事実確認 修正案生成 結果伝達 重要な違い: Agent は「どうやるか」を自分で判断し、利用可能なツールを使って複数のステップで目標を達 成する toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 9
設計・検証開始 実装方法の検討 結論: OpenAI Agents SDK を採用 選択理由 リリース直後にSlack Bot
でエージェント実装経験あり Multi-agent システム構築に最適化されていることを期待 公式SDK による安定性への期待 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 10
OpenAI Agents SDK の基本概念 Agents 指示とツールを持つ実行単位 特定の目的ごとに構成 例) ファクトチェック、編 集、検索など
agent = Agent( instruction = "...", tools = [tool1, tool2, ...], handoff = [agentA, agentB, ...], ... ) Handoffs Agent 間のタスク委譲 以下の定義により、Agent が 自動的にタスクを委譲 triage_agent = Agent( instruction = "...", handoff = [AgentA, AgentB, ...], ... ) Tools Agent が実行可能なアクション ウェブ検索、API 呼び出し、 コンピューター制御、MCP 使 用など Agents-as-tools エージェントがサブエー ジェントをツールとして 使用 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 11
Multi-Agent 構造 Triage Agent エージェントを統括するオーケストレーター ユーザーリクエストを分析して適切なAgent にタスク委譲 学術用語では"Orchestrator" (指揮者)とも呼ばれる Sub
Agents 特定のタスクを実行するエージェント Triage Agent から委譲されたタスクを実行 特定の指示とツールを持つ専門エージェント toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 12
Multi-Agent 構造の実装例 triage_agent = Agent( name='Triage Agent', instruction=( 'ユーザーのリクエストを処理します。' '予約希望の場合は、Booking
Agentに委譲します。' '返金希望の場合は、Refund Agentに委譲します。' ... ), handoff=[booking_agent, refund_agent] ) booking_agent = Agent( name='Booking Agent', instruction=( 'ユーザーの予約リクエストを処理します。' '予約情報を確認し、処理を進めます。' '処理完了後、Triage Agentに結果を返します。' ... ), tools=[booking_tool], handoff=[triage_agent] ) 処理フロー 1. ユーザー:「このホテルに7 月30 日シングルルーム予約してください」 2. Triage Agent :「予約リクエストを確認しました。Booking Agent に処理を委譲します」 3. Booking Agent :「予約処理を実行します」 4. Triage Agent :「予約が完了しました」 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 13
初期構想 ユーザーのリクエストに応じて自動的に検索や編集提案を実行してくれるといいな toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA
Inc. 14
初期設計フロー toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc.
15
初期設計フロー 設計方針 Triage がユーザーメッセージを解析して適切なAgent にHandoff 「ファクトチェック・ウェブ検索して」→ Fact Check Agent 「一部修正して」→
Edit Agent 「ファクトチェック後、事実を基に内容を修正して」 Triage Agent がFact Check Agent にHandoff Fact Check Agent がウェブ検索後、事実確認内容と共にEdit Agent にHandoff toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 16
初期設計: 実際の結果 Handoff が制御困難:動作が不安定 [Case 1] User: " ファクトチェックして" (
成功) Triage → Fact Check → ウェブ検索後、事 実確認結果返却 ( 失敗) Triage がHandoff せずに回答生成 ( 想定外) Triage → Fact Check → Edit Agent まで 実行して編集提案が生成される場合も toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 17
試行1: 実際の結果 Handoff が制御困難:動作が不安定 [Case 2] User: " ファクトチェックして事実通りに修正して" (
成功) Triage → Fact Check → Edit Agent で編集提案生成 ( 失敗) Triage → Fact Check Handoff 後、Edit Agent に渡さずウェブ検索結果のみ返却(頻発) toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 18
試行2: 各Agent が作業後Triage に復帰 改善アイデア 各Sub Agent は作業完了後、結果をTriage に返却 Triage
がユーザーチャットと直前の作業結果を基に次の処理を判断 期待フロー ユーザー → Triage → Sub Agent A → Triage → Sub Agent B → Triage → ... → 最終回答 結果 Handoff が多すぎて処理時間が増大 より効率的な方法を模索 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 19
試行3: Plan as LLM, Handoff by sub-agents 設計背景と仮説 最初に全体計画を立てて、各Sub-Agents に伝達すれば改善されるのでは?
改善アイデア Triage が全体計画を策定後、最初のSub-agent に計画を伝達 Triage がSub agent A にHandoff Sub agent A が作業完了後、Sub agent B にHandoff … Sub agent X が作業完了後、Triage に結果を返却 Triage が最終結果を返却 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 20
試行3: 実際の結果 計画を伝えても... Triage の計画 { "steps": [ {"agent": "fact_check",
"task": "ウェブ検索で事実確認", ...}, {"agent": "edit", "task": "検索結果を基に編集", ...} ], ... } toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 21
試行3: 実際の結果 実際の動作 Fact Check Agent :「ウェブ検索完了しました。検索結果は以下の通りです… (終了) 」 →
Edit Agent にHandoff しない 問題点 Handoff 連携が依然として不安定 タスク完了と判断して終了してしまうAgent Sub-agent の指示特性上、計画に従った次エージェントへの引き継ぎが優先度低 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 22
試行4: Single Agent with Agents-as-tools 設計背景と期待 シングルエージェントなら、より安定的にツールを活用できるのでは? 改善アイデア SingleAgent がすべてのSub-agent
をツールとして使用(Agents-as-tools パターン) Handoff なしで中央制御 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 23
試行4: Single Agent with Agents-as-tools 実装例 single_agent = Agent( instruction='xxx',
tools=[ agent_a_as_tool, agent_b_as_tool, # ... 各Agentをtoolとして登録 ], handoff=[] # handoffなし ) toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 24
試行4: 実行結果 一見成功したように見えたが... Input: " 検索して事実通りに編集して" [Streamed response] Thinking message:
" 作業中..." [Streamed response] Thinking message: " 作業完了" [Streamed response] Result message: " この部分が事実と異なるため、以下の編集を提案します: xxx... " 処理時間が通常より大幅に増加 ログを確認したところ... toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 25
試行4: 実際の結果 非同期実行の問題 - [00:00:00] SingleAgent -> call tool: AgentA-as-tool
- [00:00:03] SingleAgent -> call tool: AgentA-as-tool - [00:00:07] SingleAgent -> call tool: AgentB-as-tool - [00:00:07] SingleAgent -> call tool: AgentB-as-tool - [00:00:11] SingleAgent -> call tool: AgentA-as-tool - ... (計10回以上呼び出し) 制御不能の非同期実行:同じ処理を3 ~4 回ずつ繰り返し ウェブ検索が完了前に編集Agent-as-tool を呼び出し 編集完了後に再度ウェブ検索を実行 Tool 使用回数上限まで実行後、結果返却 それでも... 期待した複合的なタスクはほぼ完了 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 26
試行5: "Plan as LLM, Execute as Code" 設計背景と期待: OpenAI Agents
SDK だけでは要件に合わない LLM が計画を立て、コードで順次実行を制御する独自設計 Plan: LLM による計画策定 Planner Agent がユーザー要求を分析 ExecutionPlan 作成(実行順序の決定) Execute: コードによる実行制御 計画に従って順次実行 依存関係と実行順序を確実に保証 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 27
試行5: "Plan as LLM, Execute as Code" 主要な設計要素 独自Agent クラス定義:
OpenAI Agents SDK を使わず、マルチエージェントシステムの概念(Tools 、 Handoffs 等)を実装 依存関係管理: 前のエージェントの結果を次のステップのコンテキストとして確実に伝達 検索品質保証: 検索結果をLLM が評価し、不十分な場合は自動再検索(最大4 回) toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 28
試行5: ついに安定動作を実現 [Step1] Planner Agent 要求分析: 検索 + 編集計画生成 [Step2]
Search Agent ウェブ検索実行、結果を文字列で返却 検索結果をLLM が評価 → 不十分?Step2 繰り返し(最大4 回) [Step3] Edit Agent 検索結果を基に編集案生成 [Step4] 最終回答 編集案をストリーミングで伝達 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 29
試行5: 実際の結果 成果 期待通りの動作率が大幅向上 Handoff/Agent 連携問題を解決 各段階の結果が確実に伝達 無駄な重複実行なし toB SaaS
に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 30
検証結果の比較 試行 成功率 ( 概算) 処理時間 ( 相対値) API 呼び出し回数
試行1 ( マルチエージェント: Sub-Agent 間Handoff) 30% 基準値 少 試行2 ( マルチエージェント: 毎回Triage に復帰) 70~80% 2~3 倍 多 試行3 (Plan as LLM, Execute by sub-agents) 50~60% 1.5 倍 中 試行4 (Agents-as-tools) 90~95% 3~4 倍 非常に多 試行5 (Plan as LLM, Execute as Code) 95~99% 1 倍 最小 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 31
実際の動作デモ AI Agent 機能 1. エディターでテキスト選択 2. 自然言語で指示 3. AI
が自動的に: 指示分析 必要に応じてウェブ検索 編集提案生成 結果ストリーミング toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 32
実装を通じて学んだAgentic AI 開発の課題 完全自律型のAgentic AI 実装は難易度が高い 制御が困難で、予測不可能な動作が発生 コンテキスト伝達に高度な設計と検証が必要 より精密なプロンプト設計で安定性向上の余地あり ロジックベースの制御を組み合わせることで安定性向上
toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 33
後日談: 再検証してみたら... Slack に実装済みのOpenAI Agents SDK 基盤ボット 最近、マルチエージェントシステム(試行1 と類似設計)で複雑なタスクをテスト 「Slack
内のプロジェクト関連議論を探して要約し、音声生成後、関連イラストも生成して」 4~5 個のサブエージェントHandoff 後、すべてのタスク完了 複数回テストでも安定動作 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 34
振り返り Mark AI Agent 初期設計時、コンテキストエンジニアリングが不十分だった可能性 ただし、コンテンツエディター用途なので複雑度は高くなかった "Plan as LLM, Execute
as Code" は適切な選択だったと評価 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 35
まとめ 1. AI Agent 開発はまだベストプラクティスが確立されていない分野 - 試行錯誤が必要で、技術トレンドも急 速に変化 2. LLM
の創造性とコードの確実性を組み合わせることで良い結果を得られる 3. AI ツール活用開発が効率的 - 今回の開発では手作業でのコーディングはほとんどなし(ただし0 →1 開発で はないため時間はかかった) toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 36
会社紹介 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc.
37
株式会社エクスプラザ (EXPLAZA, Inc.) 生成AI プロダクト/ ソリューション開発スタートアップ 生成AI パートナー開発、ソリューションコンサルティング BtoB マーケティングコンテンツ生成AI
サービス "Mark" 開発・運営 急成長中 入社時より社員も2 倍近く急増 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 38
福利厚生 1. 全社員 Cursor Pro プラン提供 非エンジニアもCursor 積極活用中 2. エンジニア全員
Claude Pro Max 20x プラン提供 3. AI Boost 手当: その他AI サービス/ アプリ利用料を月5 万円まで補助 エンジニアは上記Cursor 、Claude プランに加えて月5 万円! 4. 1 階カフェ(Common ROPPONGI) コーヒー無料、食事20% 割引 5. ランチチームビルディング(2 人以上昼食) 1 人当たり1500 円まで補助 toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 39
募集ポジション リードAI プロデューサー AI/DX コンサルタント リード AI アプリケーションエンジニア 周りに生成AI プロダクト/
ソリューション開発に携わりたい方がいらっしゃいましたら、ぜひご紹介くださ い! https://lifeat.explaza.jp/ toB SaaS に導入したAI Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 40
ご清聴ありがとうございました! Q&A LinkedIn: Eunsu Jang X(Twitter): @unsu0707 toB SaaS に導入したAI
Agent 機能開発奮闘記 © 2025 EXPLAZA Inc. 41