Mastraの機能と開発者における導入メリット
この記事の概要: Mastraの開発者のメリットをまとめ直してみる
MastraのようなLLMオーケストレーションツールが開発者になぜ必要なのかを整理します。
Mastraの機能の概観
Mastraは複雑なタスクをLLMに実行させるための開発フレームワークです。 https://mastra.ai/
Mastraは複数のステップや外部ツール連携機能に伴うを提供します。 具体的には以下のような機能です。
- 状態管理: 目的、過去の対話履歴や生成結果を記憶し
- ツール連携: 外部APIや独自の関数(ツール)をLLMが呼び出せるようにする機能。
- 例)Google ドキュメントの作成やメール送信といった、
- タスクの連鎖(Chain/Workflow): タスクの自動実行やフローを定義できます。
- 例)「献立生成→買い物リスト生成→ドキュメント化」のような一連の処理を定義し、自動実行する機能。
- トリガー設定: 定期実行をトリガーできる機能
- 例)定期実行(毎週木曜)や外部からの入力(ユーザーからの修正依頼)をきっかけにタスクを開始させる機能。
素朴な疑問: Mastraによって何が便利になるのか?
機能性は様々ありますが、なぜこのような機能性が必要になるのでしょうか? シンプルにLLMのAPIをCallして、ステップをコーディングすれば良さそうに思います。
そのため、まずはシンプルにLLMのAPIをCallして、ステップを直接コーディングする際の課題を考えてみたいと思います。 このとき、改めてMastraの有用性をまとめ直してみようと思います。
課題:素朴なLLM APIで複雑なタスクを実行する際に困ること
単純なLLM APIの呼び出し、ステップを直接コーディングするときに困ることを考えてみましょう。
- 状態を記憶できない:
- 必要な実装1)LLMは過去の生成内容を覚えていないため、その都度プロンプトでLLMに状態を教えてやる必要があります。
- 課題1):このときLLMに毎回コンテキストを渡す処理を書く必要があります。
- 外部ツールを操作できない:
- 必要な処理2)タスクによってはGoogle ドキュメントやカレンダー操作が必要になります。
- 課題2)LLMにツールの利用のためにMCPの接続を設定する必要があります。
- 処理の連鎖が難しい:
- 必要な実装3)「献立生成」と「買い物リスト生成」の連鎖タスクを作った場合、それらをコーディングする必要があります。
- 課題3)手順そのものの実装の手間、それぞれの結果を次の処理に確実に引き渡す仕組みを自作する必要があります。
- 入力形式が多様:
- 必要な実装4)ユーザーからのURL、画像、自然言語による修正依頼など、多様な入力を受け付けて処理を分岐させるロジックが必要です。
- 課題4)これらの分岐を実現する必要があります。
Mastraはどのように解決するのか?
Mastraは、上記の課題を解決するための仕組みを提供します。
- 状態管理: 献立履歴やユーザーからのリクエストをMastraのメモリ機能で管理し、献立生成時にプロンプトへ自動的に含めることができます。
- ツール連携: 「Googleドキュメント作成ツール」を定義しておけば、LLMは献立生成後にそのツールを呼び出すだけでドキュメント作成と共有を実行できます。
- タスクの連鎖: 「献立生成→買い物リスト生成→ドキュメント化・共有」という一連の処理を一つのワークフローとして定義し、毎週木曜に自動実行させることが容易になります。
- エージェント化: ユーザーからの多様な入力(URL、画像、修正依頼)を解釈し、適切なツール(URL読込、画像解析、献立修正)を自律的に選択・実行する「エージェント」を構築できます。
Mastraの有用性とは?
LLMを利用した長期タスクを実現するAgentを開発する場合、Mastraを使うことで開発者は「何をしたいか」という本質的なロジックの定義に集中できます。 これはおそらく単発での処理や、LLMのAPI Call一発で済むようなタスクの場合には不要な処理でしょう。
複雑だったり、実行に長い時間が必要だったりする場合に複雑な処理の流れをシンプルに記述できるようになるのです。 これは個別のAPIコール、データ(献立履歴)の管理、Googleドキュメント連携といった「接着剤」の役割を果たすコードを自前で実装する手間が省けるからです。