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
130
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AIエージェントが動かないときの原因とその対処
sadnessOjisan
August 29, 2025
More Decks by sadnessOjisan
See All by sadnessOjisan
Cloudflare Workers で Rust 選ぶ理由 is 何?
sadnessojisan
1
60
React のルーター事情
sadnessojisan
1
620
PHPこそ OpenTelemetry が嬉しい
sadnessojisan
2
450
TypeScript、上達の瞬間
sadnessojisan
53
19k
フロントエンド・オブザーバビリティを支える要素技術を学ぼう
sadnessojisan
2
980
疎通2024
sadnessojisan
5
1.7k
BasicBasic認証
sadnessojisan
5
4.9k
ISUCON入門以前_ISUNARABE_LT#1
sadnessojisan
21
6.5k
サーバーとは何かを理解して、コンテナ1つで実行しよう | PHPerKaigi2024
sadnessojisan
38
16k
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
650
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
380
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
120
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
3.2k
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
120
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
3
2.1k
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.3k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
370
やさしいA2A入門
minorun365
PRO
10
1.7k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
230
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
140
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
From π to Pie charts
rasagy
0
200
Typedesign – Prime Four
hannesfritz
42
3.1k
Facilitating Awesome Meetings
lara
57
7k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
170
Leo the Paperboy
mayatellez
7
1.8k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
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からはエージェントがタスク中に停止したように見える •
エラー時のリトライ、非同期処理に対するタイムアウトを実装する