Mastraとは
Mastraは、TypeScriptで書かれたオープンソースのAIエージェント開発フレームワークです。2024年に創設され、Gatsbyを開発したチームが手掛けています。Web開発者が慣れ親しんだJavaScript/TypeScript環境で、AIエージェントの構築から複雑なワークフローまで実装できる統合的なフレームワークとなっています。
Y Combinatorからの支援を受けており、信頼性の高いプロジェクトとして注目されています。特に、複数のLLMプロバイダー(OpenAI、Anthropic、Google Geminiなど)に対応する柔軟なアーキテクチャが特徴で、特定のベンダーにロックインされることなくAIアプリケーションを構築できます。
プロジェクト構造
Mastraは柔軟なモジュール構成を採用しており、特定のフォルダ構造を強制しませんが、推奨される基本構造は以下の通りです:
プロジェクトルート/
├── src/
│ └── mastra/
│ ├── agents/ # エージェントの設定と定義
│ ├── tools/ # カスタムツールの定義
│ ├── workflows/ # ワークフローの定義
│ └── index.ts # メイン設定ファイル
└── .env # 環境変数
CLIを使用して初期化すると、このような構造が自動的に生成されます:
mastra init
このコマンドは対話式で、Mastraファイルを配置するディレクトリの選択、必要なコンポーネント(エージェント、ツール、ワークフロー)のインストール、デフォルトのLLMプロバイダーの選択、サンプルコードの追加などを設定できます。
主要コンポーネント
1. Mastra(中核エンジン)
Mastraクラスはフレームワーク全体のエントリポイントとして機能し、すべてのコンポーネントを初期化・管理します:
export class Mastra<
TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,
TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,
TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,
TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,
TLogger extends Logger = Logger,
TNetworks extends Record<string, AgentNetwork> = Record<string, AgentNetwork>,
> {
// ...
}
主な責務:
2. エージェント
エージェントは特定のタスクを実行するAIの「働き手」です。システムプロンプトを通じて振る舞いを定義し、ユーザーとの対話や特定のタスクを処理します。
const assistantAgent = mastra.createAgent({
name: 'アシスタント',
description: 'ユーザーの質問に答えるエージェント',
systemPrompt: `あなたは丁寧で役立つアシスタントです。`
});
3. ツール
ツールはエージェントが使用する機能や操作を提供します。外部APIの呼び出しや計算処理など、エージェントの能力を拡張します。
const weatherTool = mastra.createTool({
name: '天気ツール',
description: '特定の場所の天気情報を取得する',
function: async (location: string) => {
// 天気APIを呼び出す処理
return `${location}の天気は晴れです`;
}
});
4. ワークフロー
ワークフローは複数のエージェントやツールを組み合わせて、より複雑なタスクを実行するためのプロセスを定義します。XStateベースの設計により、分岐やループ、エラーハンドリングなどを直感的に記述できます。
const customerServiceWorkflow = mastra.createWorkflow({
name: '顧客サービスワークフロー',
description: '顧客の問い合わせを処理するワークフロー',
agents: [assistantAgent],
tools: [weatherTool],
steps: [
{
name: '問い合わせ内容の分析',
action: async (context) => {
// 処理内容
}
},
// 他のステップ...
]
});
技術的な特徴
1. 統合プロバイダーAPI
Mastraは、VercelのAI SDKを活用しており、異なるLLMプロバイダーへの呼び出しを統一的なインターフェースで実現します:
// OpenAIを使用
const openaiProvider = new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY
});
// Anthropicを使用
const anthropicProvider = new AnthropicProvider({
apiKey: process.env.ANTHROPIC_API_KEY
});
// プロバイダーの切り替えが容易
const mastra = new Mastra({
llmProvider: openaiProvider // または anthropicProvider
});
2. 長期メモリとRAG
Mastraは、エージェントが対話履歴や重要な情報を保持する長期メモリ機能を提供します。また、RAG(Retrieval-Augmented Generation)による情報検索機能も組み込まれており、エージェントの知識を拡張できます。
3. プロンプトチューニング
Mastra Playgroundを使用して、エージェントのプロンプトをインタラクティブに調整できます。これにより、最適な応答品質を実現するためのプロンプトエンジニアリングが容易になります。
まとめ
Mastraは、TypeScriptで書かれた包括的なAIエージェントフレームワークであり、エージェント、ツール、ワークフロー、RAGなど、AIアプリケーション開発に必要な主要コンポーネントを提供しています。モジュール化された設計により、必要なコンポーネントだけを使用したり、独自のカスタム実装に置き換えたりすることが可能です。