Mastraで次世代AIエージェントを構築。TypeScript製フレームワークの特徴と活用事例

AIエージェント・ワークフロー

Mastraは、Gatsby開発チームによって創設されたオープンソースのTypeScript製AIエージェント開発フレームワークです。Web開発者が慣れ親しんだJavaScript/TypeScript環境で、エージェントの構築、ツール統合、RAG(Retrieval-Augmented Generation)による情報検索、ワークフローの組み立てなど、AIエージェント開発に必要な機能がオールインワンで提供されます。この記事では、Mastraの主要な技術的特徴、導入方法、具体的なユースケース、さらにはLangChain、AutoGen、Haystack、CrewAIなど他のエージェントフレームワークとの比較を通して、Mastraがどのように次世代AIエージェントの構築を支援するかを詳しく解説します。

1. Mastraの概要と特徴

Mastraの概要と特徴

Mastra(マストラ)は、オープンソースのTypeScript製AIエージェント開発フレームワークです。Gatsbyを開発したチームが手掛け、2024年に創設されました。Mastraは「JavaScript/TypeScriptでエージェントを構築する最も簡単な方法」を謳い、Web開発者がそのスキルセットをそのまま活かしてプロダクション品質のAIアプリケーションを迅速に構築できる環境を提供します。

1-1. Mastraの主要コンポーネント

Mastraは、エージェント、ワークフロー、RAG、ツール、長期メモリ、プロンプトチューニング、評価とモニタリングなど、AIエージェント開発に必要な主要な機能を統合しています。これにより、単一のフレームワークで複雑な対話システムや業務プロセス自動化を実現可能です。

  • エージェント (Agents): LLMを利用して自律的にタスクを遂行するエージェントを簡単に作成可能。
  • ワークフロー (Workflows): XStateベースの状態遷移グラフを用いて、複雑な処理を視覚的かつ宣言的に記述。
  • RAG (Retrieval-Augmented Generation): 外部知識の検索機能を統合し、最新情報を取り込んだ回答生成を実現。
  • ツール (Tools): スキーマ付きの関数を定義し、外部APIやデータ処理などの機能をエージェントから呼び出せる。
  • 長期メモリ (Memory): 対話履歴や過去の重要情報を永続的に保存し、エージェントの応答に反映。
  • プロンプトチューニング (Prompt Tuning): 開発用GUI「Mastra Playground」でプロンプトの調整が容易に行える。
  • 評価とモニタリング (Evals & Tracing): エージェントやワークフローの出力品質や実行状況を詳細にトレース、評価。

2. Mastraの技術的な詳細

Mastraの技術的な詳細

MastraはTypeScript/JavaScriptで構築され、Node.js上で動作するため、Web開発者にとって扱いやすい環境を提供します。また、Vercel社のAI SDKを活用しており、OpenAI、Anthropic、GoogleなどのLLMプロバイダーを統一的に利用できる点が大きな利点です。

2-1. 統合プロバイダーAPI

Mastraの統一プロバイダーAPIにより、異なるLLMプロバイダーへの呼び出しがシンプルなコードで実現できます。openai("gpt-4")anthropic("claude")などの記述で、APIエンドポイントやレスポンス形式の違いを意識せずに利用できるため、プロバイダー間の乗り換えも容易です。

2-2. 長期メモリとプロンプトチューニング

Mastraは、エージェントが対話履歴や重要な情報を保持し、必要に応じて呼び出す長期メモリ機能を提供します。また、ローカル開発用のMastra Playgroundにより、エージェントのプロンプトチューニングをインタラクティブに行え、最適な応答品質を実現します。

2-3. ツールコールとワークフロー機能

Mastraは、エージェントが外部APIや計算処理を行うためのツール(関数)を定義する機能を提供します。さらに、XStateベースのワークフロー機能により、複雑な処理の分岐やループ、エラーハンドリング、Human-in-the-loop制御を直感的に記述可能です。これにより、シンプルな対話エージェントから複雑な業務自動化まで、幅広いユースケースに対応できます。

3. Mastraの導入方法と開発手順

Mastra導入方法と開発手順

MastraはオープンソースプロジェクトとしてGitHub上で公開されており、専用のCLIコマンドで簡単にプロジェクト雛形を生成できます。まずは、npmを利用してプロジェクトを作成し、必要な依存関係をインストールします。

npx create-mastra@latest

このコマンドにより、プロジェクトディレクトリが生成され、npm run devまたはmastra devを実行することで、開発用サーバ(Playground)が起動します。

3-1. 基本的なエージェントの作成

例えば、冷蔵庫にある材料から作れる料理を提案するシェフエージェントの例を示します。以下のコードは、シンプルなLLM応答エージェントを定義するものです。


// src/mastra/agents/chefAgent.ts
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";

export const chefAgent = new Agent({
  name: "Chef Agent",
  instructions: "You are Michel, a practical and experienced home chef. " +
                "Help people cook great meals with the ingredients they have.",
  model: openai("gpt-4o-mini")
});

次に、Mastraインスタンスにこのエージェントを登録します。


// src/mastra/index.ts
import { Mastra } from "@mastra/core";
import { chefAgent } from "./agents/chefAgent";

export const mastra = new Mastra({
  agents: { chefAgent }
});

3-2. ツールの追加例:株価取得エージェント

株価取得ツールを実装し、エージェントに組み込む例を示します。以下のコードでは、Zodを用いて入力スキーマを定義し、外部APIから株価を取得するツールを作成しています。


// src/mastra/tools/stockPrice.ts
import { createTool } from "@mastra/core";
import { z } from "zod";

async function getStockPrice(symbol: string): Promise {
  const data = await fetch(`https://example.com/api/stock?symbol=${symbol}`)
                     .then(r => r.json());
  return data.price;
}

export const stockPriceTool = createTool({
  id: "Get Stock Price",
  inputSchema: z.object({ symbol: z.string() }),
  description: "Retrieve the latest closing price for a given stock symbol.",
  execute: async ({ context: { symbol } }) => {
    const price = await getStockPrice(symbol);
    return { symbol, price };
  }
});

このツールをエージェントに組み込む方法は、エージェント定義時にtoolsプロパティへ追加するだけです。


// src/mastra/agents/stockAgent.ts
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
import { stockPriceTool } from "../tools/stockPrice";

export const stockAgent = new Agent({
  name: "Stock Agent",
  instructions: "Provide current stock prices when queried. " +
                "Use the stock price tool to fetch real-time data.",
  model: openai("gpt-4o-mini"),
  tools: { stockPriceTool }
});

3-3. ワークフローの構築例:採用エージェント

ワークフロー機能を使い、履歴書テキストを解析して技術職か非技術職かを判定する採用エージェントの例を示します。以下のコードは、XStateを用いた状態遷移グラフの定義例です。


// src/mastra/workflows/candidateWorkflow.ts
import { Workflow } from "@mastra/core/workflow";
import { z } from "zod";
import { gatherCandidateInfo, askAboutSpecialty, askAboutRole } from "./steps"; 

export const candidateWorkflow = new Workflow({
  name: "candidate-workflow",
  triggerSchema: z.object({ resumeText: z.string() })
});

candidateWorkflow
  .step(gatherCandidateInfo)
  .then(askAboutSpecialty, { when: { "gatherCandidateInfo.isTechnical": true } })
  .after(gatherCandidateInfo)
  .step(askAboutRole, { when: { "gatherCandidateInfo.isTechnical": false } });

candidateWorkflow.commit();

ワークフローの実行は以下のように行います。


const { runId, start } = mastra.getWorkflow("candidateWorkflow").createRun();
const result = await start({ triggerData: { resumeText: "履歴書のテキスト…" } });
console.log("Final output:", result.results);

4. Mastraの活用事例とユースケース

Mastra活用事例とユースケース

Mastraは多様なユースケースに対応しています。ここでは、音楽生成、Web検索、知識管理、eコマース連携など、代表的な活用事例を紹介します。

4-1. AIビートラボ(音楽生成システム)

Mastraを用いることで、複数エージェントが協調して音楽のビートやメロディを自動生成するシステムが実現されています。音楽リファレンスエージェントと生成エージェントが連携し、創造性の高い音楽制作をサポートします。

4-2. Web検索エージェント

Mastraを活用したWeb検索エージェントは、検索APIやスクレイピングツールを統合し、ユーザーの質問に最新のWeb情報を基に回答を生成します。非同期処理やエラーハンドリングもワークフローで管理できるため、高品質な対話システムを構築可能です。

4-3. RAGを活用した知識管理エージェント

MastraのRAG機能を利用すれば、社内ドキュメントやPDF資料をチャンク化し、ベクトル埋め込みによって情報検索を行う知識管理エージェントが構築できます。これにより、最新の情報に基づく質問応答が可能になり、業務効率の向上が期待されます。

4-4. Next.jsとの統合によるeコマース連携

MastraはNext.jsとの統合も進められており、ECサイトにAIチャットボットやショッピングアシスタントを組み込む事例が増えています。独立したバックエンドサービスとして運用する方法と、Next.jsアプリ内に直接統合する方法の2パターンがあり、どちらも柔軟に対応可能です。

5. 他のAIエージェントフレームワークとの比較

フレームワーク比較

MastraはTypeScriptベースであるため、Python製のLangChainやAutoGen、Haystack、CrewAIなどと比較して、Web開発者に馴染みやすい環境を提供します。以下に主な違いを示します。

  • LangChain: Python製で豊富なチェーンやツール、メモリ機能を提供。MastraはXStateベースのワークフローにより、複雑な分岐ロジックを直感的に記述できます。
  • AutoGen: マルチエージェントの対話に注力する一方、Mastraは明示的なフロー制御とツール統合を提供し、より広範な業務自動化に対応可能です。
  • Haystack: RAGに特化し高い検索最適化を実現。MastraはRAG機能に加え、エージェントとワークフローの統合によって対話管理も柔軟に実装できます。
  • CrewAI: マルチエージェントの協調を重視。Mastraは単一から複数エージェント、ワークフローまで一元管理でき、包括的なプラットフォームとして優位性があります。

6. Mastraの市場での立ち位置と今後の展望

Mastra市場と今後の展望

Mastraは、2023年後半から2024年にかけて生成AIブームの中で注目され、「TypeScript製AIエージェント開発基盤」として急速に市場を拡大しています。GitHubスター数の急増やY Combinatorからの支援により、開発者コミュニティが活発に形成され、今後の機能拡充や商用展開が期待されています。

  • AgentNetworkの正式実装: 複数エージェントが協調してタスクを遂行するためのネットワーク機能が正式にリリースされる予定。
  • クラウドサービスの展開: Mastra Cloudとして公式ホスティングサービスが開始され、企業向け商用利用がさらに拡大する見込み。
  • 拡張プラグインの充実: コミュニティ主導のプラグインやテンプレートが増え、さらに多様なユースケースへの対応が期待されます。
  • Next.js統合の強化: フロントエンド開発者向けの統合ガイドがアップデートされ、ECサイトやWebアプリへのAI組み込みが一層容易になります。
  • 新たなライセンスモデルと商用展開: Elastic License v2を基に、企業が安心して利用できる環境が整備されています。

Mastraは「Web開発者がそのままAIエージェントを構築できる未来」を実現するプラットフォームです。企業や開発者は、既存のNode.js/Next.jsの知識を活かし、迅速かつ柔軟にAIエージェントを構築・運用できる点が大きな魅力です。

7. 導入事例とユースケースのまとめ

Mastra 導入事例とユースケース

Mastraは、以下のような多様なシーンで活用されています:

  • AIビートラボ: 複数エージェントが協調し、音楽生成を自動化するシステム。
  • Web検索エージェント: 自律的にWeb情報を収集し、最新情報に基づいた回答を提供するシステム。
  • 知識管理エージェント: 膨大な社内ドキュメントやPDF資料から情報を検索し、質問応答を実現するシステム。
  • eコマース連携: Next.jsとの統合により、商品レコメンドやカスタマーサポートを行うチャットボット。

これらの事例は、Mastraの柔軟性と拡張性、そして開発者体験の向上を実証しています。TypeScriptエコシステムとの親和性により、Webアプリケーションとシームレスに統合できる点が、企業やエンジニアに高く評価されています。

8. まとめ

Mastraは、TypeScriptを基盤とする次世代AIエージェント開発フレームワークとして、エージェント、ワークフロー、ツール、RAGなどの機能を一体的に提供します。これにより、Web開発者が自らのスキルセットを活かして、迅速に実用的なAIエージェントを構築できる環境が実現されました。さらに、LangChainやAutoGen、Haystack、CrewAIなどの他フレームワークとの比較において、Mastraは明確なフロー制御とHuman-in-the-loop機能、統一されたプロバイダーAPI、豊富な評価・モニタリングツールにより差別化されています。

今後、AgentNetworkの正式実装やクラウドホスティングサービスの開始、拡張プラグインの充実により、Mastraはさらに多くのユースケースに対応できるプラットフォームへと進化していくでしょう。企業やエンジニアは、Mastraを利用して高度なAIエージェントを自社のWebアプリケーションに組み込み、業務の自動化、顧客対応の効率化、新たなサービス創出などで競争優位性を得ることが期待されます。

Mastraが切り拓く「Web開発者がそのままAIエージェントを構築できる未来」は、次世代AIエージェント市場に大きな変革をもたらすでしょう。ぜひ、Mastraの導入を検討し、その可能性を最大限に引き出してください。

サービスが見つかりません。

Copied title and URL