掲載済み (2025-12-06号)
#120 581文字 • 3分

## MastraにおけるHITL(Human-in-the-Loop)の実現

日本語

掲載情報

概要

https://qiita.com/Syoitu/items/7cf7e8b437fefc803052

詳細内容

## MastraにおけるHITL(Human-in-the-Loop)の実現 https://qiita.com/Syoitu/items/7cf7e8b437fefc803052 Mastraの最新アップデートにより、AIエージェントのツール実行時にもHuman-in-the-Loop (HITL)を組み込むことが可能になり、AIの自律的動作を人間が適切に制御する新たな手段を提供します。 **Content Type**: Tutorial & Guide **Language**: ja **Scores**: Signal:4/5 | Depth:4/5 | Unique:3/5 | Practical:5/5 | Anti-Hype:4/5 **Main Journal**: 100/100 | **Annex Potential**: 100/100 | **Overall**: 80/100 **Topics**: [[Mastra, AIエージェント, HITL, Next.js, ワークフロー]] 本記事は、MastraにおけるHuman-in-the-Loop(HITL)の実現、特にAIエージェントのツール実行におけるHITLの実装方法を深く掘り下げて解説しています。HITLとは、AIエージェントやワークフローの途中で人間の判断や承認を介在させる仕組みであり、AIの自律的な動作を適切に制御し、意図しない操作やミスを防ぐために不可欠です。 Mastraではこれまで、ワークフロー内でのHITLは可能でしたが、9月のアップデートによりAIエージェントのツール実行中にもHITLを組み込めるようになりました。これは、開発者がAIエージェントの動作に対してより細やかな制御を加え、安全性を高める上で非常に重要な機能追加です。 MastraのHITLは、`suspend()`と`resume()`の仕組みを利用します。ワークフローの実行を一時停止すると、その実行状態がスナップショットとして保存されます。人間による入力や承認が必要な場面で停止し、クライアントから`resumeData`を送信することで、ワークフローの次のアクションを制御できます。記事では、シンプルなメール送信ワークフローを例に、このプロセスとスナップショットによる状態維持の具体例を示しています。 特に注目すべきは、AIエージェントのツール実行におけるHITLの実現です。実装方法はワークフローと基本的に同じで、ツールの`execute`関数内で`suspend()`を使用したり、`resumeData`を受け取って実行を再開したりできます。承認パターンは二通りあり、`requireApproval: true`を設定することで常に承認を求める方法と、`suspend`と`resumeData`を使って条件付きで承認を求める方法(例:削除件数が11件を超える場合に承認を要求)が紹介されています。これにより、データベースの削除のような重要な操作でも、AIエージェントに人間による最終確認を義務付けることが可能になります。 クライアント側の実装としては、MastraModelOutputの`tool-call-suspended`レスポンスタイプを検知し、承認用UIを表示する流れが説明されています。承認時には、同じAIエージェントに対して`resumeData`、`runId`、`toolCallId`を渡すことで、中断された処理を再開します。API構成についても、通常のリクエスト用と承認フロー用に分けて用意する方法が提案されており、実践的なガイダンスが提供されています。 この新機能は、AIエージェントを本番環境で安全に運用するための重要な一歩であり、開発者が信頼性の高いAI駆動型アプリケーションを構築する上で「なぜ重要か」を明確に示しています。AIの能力を最大限に活用しつつ、人間の監視下で責任あるAIシステムを構築するための具体的な手段を提供する点が、本記事の最大の意義です。