3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【徹底解説】Mastra(マストラ)とは?JavaScript/TypeScript発のAIエージェント構築フレームワークの魅力

Posted at

Mastra(マストラ)とは?

Mastra(マストラ)は、JavaScript/TypeScript製のオープンソースAIエージェント開発フレームワークです。静的サイトジェネレーター「Gatsby.js」の開発チームが手掛けており、最新のWebアプリを構築するような感覚でAIエージェントを開発・デプロイできることを目指しています。
エージェント開発に必要な機能(ワークフロー、エージェント、RAG<Retrieval Augmented Generation:外部知識検索>、評価など)をまとめて提供するため、対話型アシスタントから自律的なタスク実行エージェントまで幅広く構築可能です。

TypeScript環境で完結するため、Webスタックとの親和性が高い点も大きな魅力。Python製フレームワークと比較して、コードをTypeScriptに書き直す手間を省けるメリットがあります。また、トレーシングや自動評価といったデバッグ支援機能が充実しており、短期間で高品質なエージェントを開発・検証できるよう配慮されています。

Mastraの基本コンセプト
Mastraは「AIエージェント開発のためのプリミティブ(基本部品)を提供する」ことに焦点を当てています。後述するエージェント(LLMがツールを使いタスクを遂行する自律システム)、ワークフロー(状態遷移や手続きを定義)、RAG(外部知識検索)、ツール(エージェントが呼び出す関数)、メモリ(会話記憶)、評価・監視(出力品質の評価・ログ追跡)を統合したフレームワークを提供。低レベル実装を気にせず、「何を作り、どう動かすか」に集中できる設計です。


Mastraの特徴と設計思想

Mastraは、AIエージェント構築に必要な機能をオールインワンで揃えながら、TypeScriptの強みを活かした**開発者体験(DX)**を追求しています。以下では、その主な特徴と設計思想を解説します。

統一されたLLMプロバイダAPI

Mastraは内部でVercel社の「AI SDK」を利用し、OpenAIのGPT-4やAnthropicのClaude、GoogleのGeminiなど複数のLLMを単一のインタフェースで扱えるのが特徴。モデル名を一行変更するだけで背後のモデルを差し替えたり、ストリーミング出力の有無を切り替えることが可能です。

ポイント

  • 開発時は安価なモデル、本番時は高精度モデルに切り替えが容易
  • 単一APIで複数プロバイダ対応

エージェント (Agents)

エージェントは、LLMが自律的に判断しながらタスクを遂行する仕組みです。MastraではAgentクラスを用いて定義し、ツールやワークフロー、知識データを渡すだけで高度な対話型アプリを作れます。

  • 自前の関数(ツール)や外部API、ベクトルデータベースなどを組み合わせて、LLMが必要に応じて呼び出す設計
  • 「料理レシピを提案するシェフエージェント」など、役割設定や人格設定も簡単

ツールとインテグレーション (Tools & Integrations)

ツールとはエージェントやワークフローが呼び出す外部関数のこと。Mastraでは、入力スキーマを備えた型安全な関数をツールとして実装・登録できます。
また、インテグレーション機能により外部サービス(GitHubやSlack、DBなど)を自動生成されたクライアントとしてすぐツール化でき、API呼び出しを型安全に実行可能です。

ワークフロー (Workflows)

複雑なタスクにはあらかじめ決められた手順や条件分岐が必要になります。Mastraのワークフローは、XStateライブラリを用いたステートマシンの考え方に基づく仕組み。

  • .step().then(), .after()などのメソッドチェーンで直列・並列処理や条件分岐を記述
  • エラー発生時のリトライ、ワークフローのネスト(入れ子)、人間オペレーターによる介入などにも柔軟に対応
  • OpenTelemetryによるトレースを自動記録し、どの分岐を通ったかを可視化

メモリ (Memory) と永続化

LLMは標準では直近の対話しか覚えませんが、Mastraでは長期メモリを付与できます。

  • 過去の会話履歴をベクトル埋め込み+検索して動的に想起
  • LibSQL(SQLite互換)によるローカルストレージでメモリや状態を永続化
  • セッションをまたいで継続的にユーザー情報を保持できる

Retrieval Augmented Generation (RAG)

RAGとは、LLMに外部知識を与えて正確で最新の回答を得る手法。Mastraでは、ドキュメント分割→埋め込み→ベクトル検索→再ランク付けの一連の処理を統一的に提供しています。

  • 自社ドキュメントやウェブ情報をベクトルDBに格納してRAGを実装
  • 主要なベクトルストアとの互換性(Pinecone、Chroma、PgVectorなど)
  • **「ベクトル検索ツール」**としてエージェントに組み込むことで、自律的なRAGが可能

評価 (Evals) とモニタリング

エージェント開発では回答品質の評価が欠かせません。Mastraは自動評価機能を備え、Hallucination(幻覚検知)、トーンの一貫性、事実忠実性などをあらかじめ評価可能。

  • モデル自身によるフィードバック(LLM採点)やルールベース評価
  • スコアは0~1で返され、CIや自動テストにも組み込める
  • 評価結果をログ化し、バージョン間の比較やモニタリングに活用

トレーシングと観測性 (Tracing & Observability)

複雑なエージェントやワークフローでは、各ステップの入出力やツール呼び出しを記録して可視化することが非常に重要。MastraはOpenTelemetry対応のトレーシング機能を提供し、実行経路や呼び出し履歴をすべてログします。

  • 開発用プレイグラウンドUIがあり、チャット履歴や評価結果をリアルタイム確認できる
  • どのツールを何回呼んだかや、どのフロー分岐を通過したかを時系列で追跡

結論:プロトタイプからプロダクションまで一貫して使える
MastraはAIエージェント開発に必要な機能を包括的に提供し、TypeScriptの型チェックや強力なデバッグ支援を強みとしています。他のフレームワークでバラバラに実装する機能も、Mastraなら一つのフレームワークで完結。プロトタイプから本番運用までスムーズに移行できます。


Mastraの使い方 – 導入と基本例

ここでは、プログラミング経験はあってもAIエージェント開発が初めてという方を対象に、Mastraの導入から実際にエージェントを動かすまでの流れを簡単に解説します。

導入とセットアップ

  1. 環境準備

    • Node.js(v20以降)をインストール
    • OpenAIやAnthropicなどのLLMプロバイダのAPIキーを取得
  2. プロジェクト作成

    npx create-mastra@latest
    

    上記コマンドで雛形プロジェクトを生成し、依存関係を自動でインストール。mastra/フォルダにエージェントやワークフローのファイル、src/ディレクトリに実行用コードなどが配置されます。

  3. APIキーの設定
    .envファイルにOpenAIやAnthropicなどのキーを設定します。

    OPENAI_API_KEY=(取得したOpenAIのAPIキー)
    

シンプルなエージェントの作成

例:家にある材料で作れる料理を提案する「シェフエージェント」

import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";

export const chefAgent = new Agent({
  name: "Chef Agent",
  instructions: 
    "You are Michel, a practical and experienced home chef " +
    "who helps people cook with whatever ingredients they have available.",
  model: openai("gpt-4"),  // OpenAIのGPT-4モデルを利用
});
  • name: エージェントの識別名
  • instructions: システムプロンプト(役割・人格の指示)
  • model: 利用するLLM(GPT-4, GPT-3.5, Claude などに簡単切り替え可)

エージェントの実行と開発フロー

  1. 対話の実行

    async function main() {
      const query = "冷蔵庫にパスタ、トマト缶、ニンニク、オリーブオイル、乾燥バジルとオレガノがあります。何が作れますか?";
      console.log(`Query: ${query}`);
    
      const response = await chefAgent.generate([{ role: "user", content: query }]);
      console.log("\nChef Michel:", response.text);
    }
    
    main();
    
    • generate()メソッドでエージェントにメッセージを渡し、応答を取得
    • response.textに回答が格納される
  2. ストリーミング応答

    const stream = await chefAgent.stream([{ role: "user", content: longQuery }]);
    for await (const chunk of stream.textStream) {
      process.stdout.write(chunk);
    }
    console.log("\n\n✅ Recipe complete!");
    
    • トークンが生成され次第、逐次的に受け取って出力
    • 長文回答もユーザーを待たせずインタラクティブに表示可能
  3. プレイグラウンドでの対話・検証

    npm run dev
    
    • ローカル開発サーバーを起動し、ブラウザ上でチャットUIトレースログを確認
    • プロンプト実験モードモデル切り替えなど、開発者に嬉しい機能が搭載
  4. デプロイ(展開)

    • Node.jsアプリとしてVercelやAWS Lambda、自社サーバーへデプロイ可能
    • mastra deployコマンドや、Next.jsアプリへの直接統合にも対応
    • ライセンスはElastic v2で、商用利用も問題なし

競合フレームワークとの比較

近年は多数のAIエージェント開発フレームワークが登場し、それぞれ得意分野や機能が異なります。ここではMastraを代表的なフレームワークと対比し、ユースケース別に選び方を紹介します。

主要なAIエージェントフレームワーク一覧

フレームワーク(主要言語) 特徴・強み 適したユースケース 注意点・弱み
Mastra
(TypeScript)
- エージェント/ワークフロー/RAG/評価を統合
- Web/JSスタックにシームレス連携
- ローカルUIとトレース機能が充実
- フロントエンド~バックエンドをTypeScriptで統一
- サーバーレス環境との親和性
- プロトタイプから本番まで一貫利用
- 新興プロジェクトで国内情報が少ない
- Python資産を直接活用しづらい
LangChain
(Python/JS)
- 豊富なツール・モデル連携と広大なコミュニティ
- ドキュメントや実装事例が最多
- Python中心の研究・実験
- 既存のML資産と組み合わせたい場合
- 機能が多く習得コストが高い
- バージョン変化が激しい
Microsoft AutoGen
(Python/.NET)
- マルチエージェント対話に特化
- Microsoft Research開発
- 複雑なタスク分担(複数エージェント協業)
- Azure環境への統合
- 上級者向け
- シンプル用途にはオーバースペック
crewAI
(Python)
- マルチエージェント協調の高レベルAPI
- 比較的簡単に複数ロールを設定可能
- カスタマーサポートなど複数AIが必要な対話シナリオ - LangChainに内部依存しやや冗長
- 拡張性にはカスタマイズが必要
MetaGPT
(Python)
- ソフトウェア開発支援特化のマルチエージェント - 要件定義・設計・コード生成など
- 開発プロセスを自動化
- 汎用フレームワークというより実証プロジェクト色
- 他分野への流用は限定的

Mastra独自のメリット・デメリット

  • メリット: TypeScriptの強みを活かし、Webアプリ~サーバーレスとスムーズ統合。ワークフローやRAG、評価・監視などをひとつのフレームワークで完結できる。
  • デメリット: 新しいプロジェクトでコミュニティ規模がまだ小さい、Python中心の資産を流用しづらいなど。

ユースケース別の選択ガイド

  • WebサービスにAIチャットを組み込みたいMastraが最有力。Next.jsやVercelとの相性◎
  • Python主体の研究・実験をしたいLangChain推奨。大規模コミュニティがサポート
  • マルチエージェント(複数AI協働)が必須AutoGencrewAIなど、役割分担に特化したフレームワーク
  • ごく単純なQ&Aやチャットのみ → フレームワーク不要、API直接呼び出し+最低限の実装でも可

Mastraの実例紹介 – 活用事例とコミュニティ

Mastraはリリース後、コミュニティを通じて様々な実プロジェクトに導入されています。公式サイトやSNSでも多数の事例が紹介されており、ここでは一部をピックアップします。

カスタマーサポート自動化

有料ユーザー多数のiOSアプリにMastraエージェントを組み込んだ例では、ユーザーからの問い合わせを自動対応。RAG機能を使い、FAQやマニュアルをエージェントが参照することで、高品質な回答が実現しました。

専門資料の解析とレポート生成

航空宇宙分野のPDF資料を読み込み、CAD図面を自動生成するElectronアプリも開発されています。複雑な解析フローをワークフロー機能で定義し、人間の確認を挟むHuman-in-the-Loop構成となっています。

スマートホーム・IoTチャットボット

家の各設備(エアコン、照明、防犯センサーなど)をエージェントのツールに登録し、「今日は寒い?」と聞けば室温センサーを参照して答える、というIoT連携チャットボットが作られています。インテグレーションが容易な点が評価されています。

旅行プラン提案アシスタント

Showcaseで公開された「TravelAI」は、複数のエージェントが協働して旅行プランを生成するデモ。ユーザーの要望をヒアリングしながら、観光地情報エージェントや日程最適化エージェントなどがマルチエージェント構成で最適解を提案します。

AI音楽生成スタジオ

複数の音楽エージェント(ドラム担当やベース担当など)が協調して曲を作る「AI Beats Laboratory」では、Mastra上のエージェント同士の対話を利用。バンドセッションのような創作過程を実現し、コードも公開中です。

その他の活用例

  • ノート内容からポッドキャストスクリプトを生成する「NotebookLMクローン」
  • 手書きホワイトボード画像をExcalidraw形式に変換するツール
  • ECサイトの商品DBをRAGで検索する商品レコメンドBOT

いずれも短期間で試作されており、Mastraの実用性・汎用性の高さがうかがえます。


まとめ

Mastraは**「少ない労力で賢いAIエージェントを実現する」ことを可能にする、意欲的なフレームワークです。TypeScriptによる開発者体験(DX)の高さ、ワークフロー・メモリ・RAG・評価などの包括的機能、そしてプレイグラウンドUIをはじめとするデバッグ支援**が大きな魅力と言えます。

他にLangChainやAutoGenなど強力な競合がありますが、Webスタックで統一して開発したい場合や、サーバーレス環境にスムーズにデプロイしたい場合は特にMastraが有力候補となるでしょう。まだ新興のため日本語情報は限られますが、コミュニティが活発化しつつあり、事例も増えています。

これからAIエージェント開発を始める方は、ぜひMastraの公式ドキュメントやテンプレートプロジェクトを確認してみてください。シンプルなエージェントでも動かしてみることで、その開発フローと拡張性を体感できるはずです。今後ますます成長が期待されるMastraは、AIエージェント開発の新たなスタンダードとなる可能性を秘めています。


【参考資料】

以上が、Mastra(マストラ)の特徴・導入方法・活用事例をまとめた解説です。少しでもAIエージェント開発のヒントになれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?