Mastra - TypeScript AI エージェントフレームワーク チートシート
Mastra は AI エージェントとワークフロー構築用のオープンソース TypeScript フレームワーク で、Gatsby チームにより構築されています。ほとんどのエージェントフレームワークが Python ファーストである一方、Mastra は JavaScript/TypeScript エコシステムをターゲットとしており、完全な型安全性を備えています: ツールとメモリを持つ型付きエージェント、分岐と中断/再開を持つグラフとして表現される耐久的ワークフロー、RAG プリミティブ、組み込み評価、ブラウザでエージェントを反復するためのローカルデブプレイグラウンド。
インストール
| 方法 | コマンド |
|---|
| プロジェクト作成 | npm create mastra@latest |
| 既存に追加 | npm install @mastra/core |
| デブサーバー | npm run dev (プレイグラウンド at localhost:4111) |
| モデルプロバイダー | npm install @ai-sdk/openai (Vercel AI SDK を使用) |
| 確認 | プレイグラウンドを開く |
エージェント定義
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
export const supportAgent = new Agent({
name: "support",
instructions: "You are a concise support agent. Cite docs when possible.",
model: openai("gpt-4o"),
tools: { searchDocs },
});
const result = await supportAgent.generate("How do I rotate my API key?");
console.log(result.text);
| メソッド | 実行内容 |
|---|
.generate(input) | 1 回実行して結果を返す |
.stream(input) | トークン/ステップをストリーム |
tools | エージェントが呼び出す可能性のある型付きツール |
memory | 永続的な会話メモリ |
ツール
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const searchDocs = createTool({
id: "search-docs",
description: "Search the product documentation",
inputSchema: z.object({ query: z.string() }),
outputSchema: z.object({ results: z.array(z.string()) }),
execute: async ({ context }) => {
return { results: await search(context.query) };
},
});
Zod スキーマはエンドツーエンド型安全性を提供します。エージェントのツール呼び出しは両側で検証され型付けされます。
ワークフロー (耐久的グラフ)
import { createWorkflow, createStep } from "@mastra/core/workflows";
const fetchData = createStep({ id: "fetch", execute: async () => ({ ... }) });
const analyze = createStep({ id: "analyze", execute: async ({ inputData }) => ({ ... }) });
export const pipeline = createWorkflow({ id: "pipeline" })
.then(fetchData)
.then(analyze)
.commit();
| 機能 | 目的 |
|---|
.then() | 連続ステップ |
.branch() | 条件付きパス |
.parallel() | 並行ステップ |
.dowhile() / .foreach() | データ上のループ |
| 中断/再開 | ユーザー入力を待機、後で再開 |
| 耐久実行 | 再起動後も継続 |
メモリ
| タイプ | 使用 |
|---|
| 会話履歴 | コンテキスト内の最近のターン |
| セマンティック想起 | 過去のメッセージ上のベクトル検索 |
| ワーキングメモリ | ユーザーに関する永続的な事実 |
| ストレージアダプタ | LibSQL、Postgres、Upstash |
RAG プリミティブ
| ピース | 提供 |
|---|
| ドキュメントチャンキング | 設定可能な戦略でドキュメントを分割 |
| エンベディング | AI SDK プロバイダー経由 |
| ベクトルストア | pgvector、Pinecone、Qdrant、Chroma |
| 取得ツール | エージェント内のツールとして取得を配線 |
評価と可観測性
| 能力 | 注釈 |
|---|
| 組み込み評価 | 答え関連性、忠実性、毒性、バイアス |
| カスタムスコアラー | 独自のメトリクスを定義 |
| トレーシング | OpenTelemetry 互換トレース |
| プレイグラウンド | エージェント実行、ツール、メモリをローカルで検査 |
デプロイメント
| ターゲット | 注釈 |
|---|
| Node サーバー | mastra build はデプロイ可能なサーバーを生成 |
| Vercel / Cloudflare / Netlify | 公式デプロイアー |
| サーバーレス | ステートレスホスト向けに設計されたワークフロー |
Mastra 対 他のエージェントフレームワーク
| 側面 | Mastra | LangGraph | CrewAI |
|---|
| 言語 | TypeScript | Python | Python |
| ワークフロー | 耐久グラフ + 中断/再開 | ステートフルグラフ | ロールベースクルー |
| 型安全性 | 強力 (Zod エンドツーエンド) | Python 型付け | Python 型付け |
| 最適用途 | TS/JS チーム、ウェブアプリ | 複雑なステートフルエージェント | マルチエージェントロールプレイ |
LangGraph への TypeScript 対応。CrewAI と AutoGen (Python) と比較。
リソース