第八章:AIが暴走したらどうする? 幻覚と無限ループの予防
前章では、Agentを極めて賢く個性的にする方法を学びました。
しかし、この賢いAgentに外部ツール(Google検索、Wikipedia検索、データベースクローラーなど)を過剰に与えると、ターミナルに冷や汗が出るような恐怖の光景が現れることがあります:
AgentがGoogleでキーワードを検索し、結果に満足できない;
そこで別のキーワードで再検索するが、まだ完璧な答えが見つからない;
こうして10回、20回、50回と検索を繰り返し...「検索 → 不満 → キーワード変更」の**無限ループ(Infinite Loop)**に陥って抜け出せなくなるのです!
これはシステムをフリーズさせるだけでなく、ユーザーの待ち時間を大幅に浪費し、さらに恐ろしいことに、ツールを使用するたびにOpenAI APIの利用料金(実際の金銭です!)が浪費されます。このシステムを1000人に公開した場合、一晩の無限ループでクレジットカードが破産する可能性もあります。
🎯 本章の目標
- AIの暴走状態である「幻覚(Hallucination)」と「無限ループ(Infinite Loop)」を理解する
- Agentの
max_iter(最大思考回数)ガードレールの設定方法を学ぶ - Crewの
max_rpm(1分あたりのリクエスト制限)を設定して財布を守る方法を学ぶ
🛑 第一の防衛線:Agentの最大思考回数を設定(Max Iterations)
CrewAIのデフォルトでは、Agentは設定された目標を完璧に達成するため、最大25回(Iterations)まで執拗に思考を試みます。
単純なビジネスタスクにとって25回は明らかに計算リソースの浪費です。厳しい上司のように「考えてもわからなければ諦めて、今ある不完全なデータを次の担当者に渡しなさい!」と強制する必要があります。
🔥【Vibe Prompt実践呪文】
CrewAIでResearcher Agentが検索ツールの無限ループに陥る問題を発見しました
Agent作成時のmax_iterパラメータを5回に制限する方法を教えてください
また、回数制限に達した時、CrewAIはデフォルトでどう処理しますか?
Agentコードを修正:
researcher = Agent(
role='初級マーケットリサーチャー',
goal='2026年最新スマートフォン仕様データを収集',
backstory='勤勉だが、時々行き詰まる傾向がある',
tools=[search_tool],
# 🛡️ 重要な防護壁:最大5回のアクション(思考とツール使用を含む)のみ許可
max_iter=5
)
[基盤メカニズム解析]:
Agentが5回検索を試みても「完璧な答え」が見つからない場合、ターミナルにMax iterations reached警告が表示されます。その後、強制的に思考を停止し、5回の検索プロセスで「とりあえず収集したデータ」をまとめて次のAgentに引き渡します。
これにより、1人の頑固なメンバーによってCrew全体のワークフローが完全に停止するのを防ぎます。
⏱️ 第二の防衛線:財布を守る(Max RPM)
無限ループ以外にもう1つの一般的な問題が**APIレート制限(Rate Limits)**です。
Crew内に5人のAgentが激しく議論している場合、10秒間にOpenAIへ30回のリクエストを送信する可能性があります。通常のOpenAI��カウントでは、これは即座に429 Too Many Requestsエラーを引き起こし、プログラムがクラッシュします。
最上位のCrew作成時に、グローバルな「速度制限」を設定できます。
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, write_task, review_task],
process=Process.sequential,
# 🛡️ 財布の防護壁:チーム全体で1分あたり最大15回のOpenAI APIリクエストに制限
max_rpm=15,
)
max_rpm(Requests Per Minute)を設定すると、CrewAIは内部で送信頻率を自動計算します。制限速度に達しそうになると、Agentを数秒間sleep(一時停止)させ、リクエストを安定させ予算超過を防ぎます。
🧠 第三の防衛線:「AI幻覚(Hallucination)」対策
Agentがデータを見つけられない時、ループに陥る代わりに「自分でデータをでっち上げる」という最悪の選択をすることがあります。これは業界でAI幻覚と呼ばれる現象です。
例えば存在しない芸能人の年齢を調べるよう依頼し、見つからない場合、彼は「35歳です」と真面目そうに回答するかもしれません。
幻覚を防ぐ最も効果的な方法はパラメータではなく、前章の**Prompting(プロンプト技術)**に戻ることです。
AgentのbackstoryまたはTaskのdescriptionに致命的な制限を追加します:
「【厳重警告】:ツール使用後、検索結果に明確な答えが見つからない場合、必ず『関連情報を見つけられませんでした』と直接回答すること。決して架空のデータを創作、推測、捏造してはならない。虚偽が発覚した場合、即時解雇とする。」
AIがこの圧迫感満載のプロンプトを読むと、でっち上げの確率が90%以上低下します。
✅ 本章のまとめ
AIに賢い頭脳と強力なツールを与えることは良いことですが、アーキテクトとして最も重要な責任は「ガードレール(Guardrails)」を設定することです。
CrewAIシステムを本番環境(Production)にデプロイする準備ができたら、max_iterとmax_rpmを必ず追加してください。これは会社の評判とクレジットカードの安全を守る最も重要なステップです!
次章では、さらに過激な保護メカニズムを議論します:AIがメールを送信したりデータベースを削除する前に、強制的に「上司(人間)の意見を求める」ようにする方法です!
章のまとめ
- コアコンセプトと原理を理解
- 実装方法とテクニックを習得
- 一般的な問題と解決策に精通
- 実際のプロジェクトに適用可能
さらに読む
- 公式ドキュメントとAPIリファレンス
- GitHubのオープンソース例
- 技術書とオンラインコース
- コミュニティディスカッションと技術ブログ