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
AIエージェントが動かないときの原因とその対処
Search
sadnessOjisan
August 29, 2025
Technology
2
81
AIエージェントが動かないときの原因とその対処
sadnessOjisan
August 29, 2025
Tweet
Share
More Decks by sadnessOjisan
See All by sadnessOjisan
React のルーター事情
sadnessojisan
1
540
PHPこそ OpenTelemetry が嬉しい
sadnessojisan
2
400
TypeScript、上達の瞬間
sadnessojisan
53
19k
フロントエンド・オブザーバビリティを支える要素技術を学ぼう
sadnessojisan
2
890
疎通2024
sadnessojisan
5
1.6k
BasicBasic認証
sadnessojisan
5
4.6k
ISUCON入門以前_ISUNARABE_LT#1
sadnessojisan
21
6.2k
サーバーとは何かを理解して、コンテナ1つで実行しよう | PHPerKaigi2024
sadnessojisan
38
15k
Node.js v12 を使い続けていたのはなぁぜなぁぜ?
sadnessojisan
11
29k
Other Decks in Technology
See All in Technology
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
440
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
470
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
430
CQRS/ESになぜアクターモデルが必要なのか
j5ik2o
0
940
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
11
6.4k
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
5k
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
1
800
技術選定、下から見るか?横から見るか?
masakiokuda
0
190
20260114_データ横丁 新年LT大会:2026年の抱負
taromatsui_cccmkhd
0
120
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
1
640
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
21k
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
320
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
39
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
We Have a Design System, Now What?
morganepeng
54
8k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Utilizing Notion as your number one productivity tool
mfonobong
2
200
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Prompt Engineering for Job Search
mfonobong
0
140
Designing for humans not robots
tammielis
254
26k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Transcript
AIエージェントが動かない ときの原因とその対処 ojisans解散ライブ#1 sadnessOjisan
AIエージェントフレームワーク利用者 向けの内容です
AIエージェントとは • 人工知能 (AI) エージェントは、環境と対話し、データを収集し、そのデータ を使用して自己決定タスクを実行して、事前に決められた目標を達成するた めのソフトウェアプログラムです。(※1) • 色々あるけど、ChatUIでタスクを依頼するようなやつはAIエージェント ※1:
https://aws.amazon.com/jp/what-is/ai-agents/
AIエージェントの構成の1例 LLM tool memory workflow engine prompt タスクのstepで 何回も呼び出す step
を LLM に作ら せることで自律性も 持たせられる
開発者が出会う問題 LLM tool memory workflow engine prompt 結果が返ってこない 原因はどこ?
AIエージェントフレームワークの裏側を覗こう • AIエージェントを開発するために、LLMのAPIやSDKやフレームワークが提 供されている • OpenAI API: GPT を API
越しに利用できる • AI SDK(vercel): GPT や Gemini など複数のモデルをラップしたもの。SDK なので tool calling もできる • Mastra: AI SDK を組み込んだフレームワーク。ワークフローエンジン、 RAG、Context Memoryといった機能が簡単に使える
Mastra でエージェントを作った場合の構成 workflow nested workflow nested workflow nested workflow step
step step Memory LLM tool Agent
Mastra でエージェントを作った場合の構成 workflow nested workflow nested workflow nested workflow step
step step Memory LLM tool Agent 今日の気温は何度で すか?というプロン プトを受け取る 不正なプロンプトか どうか検査する 受け取ったプロンプ トを実行する 質問履歴からユー ザーの居住地を推論 する 天気APIにアクセスする コア。回答の生成、利 用するツールの推論な どを担う
None
None
Mastra でエージェントを作った場合の構成 workflow nested workflow nested workflow nested workflow step
step step Memory LLM tool Agent 動きませんでし た!!! 原因どこ!!!
AIエージェントフレームワークの実装を知る • Mastra を例に挙げる • Workflowエンジンとしては、基本的にはWorkflow や Step を配列で保持 し、逐次・並行に実行するだけ
• Agentとしての機能は Vercel AI SDK を利用する
Vercel AI SDKの実装を知る • 多種多様な Model Provider を持つ • それぞれは共通の
Class を継承しており、LLMの呼び出しは基本的にはどれ もそのモデルが提供している API を呼び出しているだけ • ただ、プロンプトの効率化、Tool呼び出しとその結果の反映を実現するため に、プロンプトがLLMを通して step に分解され、step ごとにタスクをこな していく
最後は Web 標準 • LLM との通信は結局 fetch が使われており、HTTP や Web
標準の上で行わ れる • vercel/ai-sdk は Abort Signal が利用でき、Mastra 側からも渡せる。ワー クフローで実行したタイムアウトを tool に伝えられる。 • ストリーミングは SSE で行われる
Agent が進まない時はいつか workflow nested workflow nested workflow nested workflow step
step step Memory LLM tool Agent • 無限ループ • エラーハンドリング不備 • 不要なリトライ 単純にタスクが多い 通信のコネクション不備
無限ループ / 中断されたループ • 当たり前 • なんだけど、Mastra だとワークフローでもループを組めるので、うっかり ループがある •
Human In the Loop の実装をミスった場合
通信のコネクション不備 • SSEすると長時間接続する都合上、外的要因でコネクションが切られる可能 性はどうしてもある • イベント例として、通信相手のリソース枯渇、コネクション枯渇、再起動
リソース枯渇 • メモリやCPUを使い切る。当たり前 • と思いきや、環境によってはHTTPコネクション数にも気を払う必要もある ◦ 例えば CloudRun にはコネクション数上限がある ◦
LLMとの通信は時間がかかるのでコネクションを使い果たしやすい • SSE中にワークロードのリソースが枯渇すると停止したように見える • TIPS: Mastra使う場合は storage への trace 書き出しはやめた方が良い。メ モリとCPUがすごく逼迫する(最新版だと治ってるかも?
Unhandled Rejection • 普通は try-catch でコントロールするでしょ?と思いきや、AIエージェント 開発では貫通が発生しやすい事情がある • Mastraの場合、try-catch をかけるのはユーザーコードを書ける
step の exectute の中くらい。その外側で発生したエラーを catch で救えない。 • コネクション数を使い果たすと、予期せぬところ、タイミングでEPIPE や ECCONRESET が発生する • Unhandled Rejection が貫通すると Agent そのものがダウンする。クライア ントの実装次第では、このときエラーではなく処理が止まったように見える ことがある
ネットワークの問題 • AIエージェントは外部のLLMやTool呼び出しで、インターネット越しに通信 を行う • 通信自体が途切れたり、レイテンシーが大きくなると、それに引きずられて 全体が遅くなる
タイムアウトとリトライに気を使うと、 解決できそう?
フレームワークやSDKのリトライに甘えない • Mastra の場合、retry config がワークフローにある • 指数バックオフできないのでオススメしない • retry
は冪等であるべきだが、ワークフローを冪等にすることって可能です か? ◦ Agent 呼び出し: 呼び出し自体は冪等 ◦ 永続化: 外的環境に影響あり ◦ ロギング: 外的環境に影響あり
冪等な Retry • retry させたいものだけを retry させる仕組みが必要 ◦ retry させたいものを関数でラップするだけでOKみたいなIFだと使いまわしやすい
• 指数バックオフやランダマイズなども欲しい ◦ ランダマイズしないと、スパイク起因のエラーをリトライさせると、同じタイミングでスパ イクするのでエラーが出続ける • そういうOSSがあるのでそれ使おう(vercel/async-retryなど)
タイムアウトを実装する • LLMの呼び出しは、SDKにタイムアウトの機能があるのでそれを使えば良さ そう • 一方で Context Memory, RAG, Tool
呼び出しのような非同期処理のタイム アウトは自前で用意する必要がある • ライブラリを使ってもいいが、簡単に Promise.race と setTimeout を組み 合わせたヘルパーを用意しておけば良いと思う • Mastra の場合、グローバルで設定できる機能もあるが、数値はグローバル で決まるものではないので使わない方が良い
エラーハンドリングを確実に行う • AIエージェントは普通のWeb開発と比べて、例外が起きやすいと思ってい る。例外が突き抜けないようにする。try catch 大事 • process.on をグローバルに置く防護層が必要になることも ◦
例えば Mastra の場合、workflow の外に try catch が書けない ◦ クラウドの都合によっては EPIPE や ECONNRESET が起き、それが貫通することがある
例外は投げない方が良いと思う • ワークフローを作る場合、その都度エラーをロギングしたり永続化するの は、リトライの都合上やらない方が良さそう • なのでワークフローから例外を投げるのではなく Result 型のようなものを 返して、ワークフローの最後のステップでまとめて異常系の永続化をする と、気軽なリトライができる
まとめ
• AIエージェントは 1つのコネクションが長くなりがち • 普通のWebサービスに比べるとリソースが枯渇がしやすい • 意図しない通信の切断があるのが特徴かもしれない • その結果、UIからはエージェントがタスク中に停止したように見える •
エラー時のリトライ、非同期処理に対するタイムアウトを実装する