Mastra

MastraでAIエージェントを作る:開発環境・CLI・RAG実装ガイド

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1. 開発環境の準備

1‑1. Node.js とパッケージマネージャの要件

ローカルで Mastra を快適に動かすには、Node.js 18 系以上npm 9 系以上(または yarn) が推奨されます。古いランタイムでは ESモジュールや最新の JavaScript 機能がサポートされず、ビルドエラーが頻発することがあります。

⚠️ 注意
公式ドキュメントで「Node.js 20」や「npm 10」への対応が開始された場合は、上記コマンドの結果がそれらを満たすか必ず確認してください。

古いバージョンの場合は、Node.js の公式サイトから LTS バージョンをダウンロードしてインストールしましょう。


1‑2. TypeScript 設定の基本

Mastra プロジェクトは TypeScript が必須です。tsconfig.json に最低限必要な設定例と、各オプションが果たす役割を解説します。

  • targetmodule:最新 Node が扱える構文に合わせることで、トランスパイル時の余計なポリフィルを回避できます。
  • strict:型安全が保証されるだけでなく、IDE の補完やリファクタリングが正確になります。

このファイルをプロジェクト直下に置いたら、以下コマンドでビルドできることを確認しましょう。


2. Mastra CLI の取得とプロジェクト雛形作成

2‑1. 最新 CLI を取得する安全な手順

Mastra のテンプレート生成は create-mastra コマンドで行います。公式では npx create-mastra@latest <project-name> が推奨されていますが、実際に使用できるかはリポジトリの公開状態を確認してください。

  • npx は一時的に最新パッケージを取得するため、グローバルインストールの必要がありません
  • 実行後は プロンプトで依存関係のインストール確認 が表示されるので、そのまま続行してください。

⚠️ 注意
CLI のバージョンやオプションは公式リリースノートに従ってください。この記事に記載したコマンドは執筆時点の情報です。


2‑2. CLI バージョンの確認とアップデート方法

プロジェクトディレクトリに移動し、以下でバージョンを取得します。

新しいリリースが出た場合は、再度 create-mastra@latest を実行するか、ローカルで CLI パッケージを更新します。

補足:上記コマンドは mastra-cli が npm に公開されていることが前提です。公式ドキュメントでパッケージ名が変わっていないか必ず確認してください。


2‑3. 生成されたプロジェクト構造の概要

create-mastra が作成するディレクトリは次のようになっています(実際の構成はバージョンにより若干異なる場合があります)。

  • src/agent.ts:プロンプトと LLM プロバイダーを組み合わせたコアロジック。
  • tools/:GitHub API など、外部サービスへのアクセスコードを配置します。

⚠️ 注意:本稿で示すファイルパスや名前は 公式テンプレートの最新版 に合わせてください。


3. 安全な環境変数とシークレット管理

3‑1. .env の扱い方(ベストプラクティス)

項目 推奨設定
ファイル名 .env(本番では使用しない)
バックアップ Git 管理外.gitignore に必ず追加)
本番環境 CI/CD のシークレットストア(GitHub Actions Secrets、Vercel Secrets など)へ移行

セキュリティ上のポイント
- .env は絶対にリポジトリにコミットしない。
- 本番環境では 暗号化されたシークレット を使用し、コード中で直接参照しないようにする(例:process.env.OPENAI_API_KEY)。


3‑2. 環境変数のロードと型安全

  • dotenv依存関係として明示的にインストールしてください(CLI が自動で入れる保証はありません)。


4. エージェント本体の実装

4‑1. プロンプトテンプレートとマルチLLM の切り替えロジック

まず、共通プロンプトを PromptTemplate で定義します。プレースホルダーは後述の RAG 結果やユーザー入力が埋め込まれます。

  • provider は非同期関数で、実行時のフラグ useAnthropic に応じてインスタンスを生成します。
  • 型安全テスト容易性 のためにプロバイダー取得ロジックは別ファイルに切り出すことも推奨します。

4‑2. RAG(Retrieval‑Augmented Generation)実装例

以下では GitHub リポジトリの README を取得し、Pinecone にベクトル埋め込み・検索するフローを示します。依存パッケージは手動でインストールしてください

4‑2‑1. GitHub README の取得

4‑2‑2. Pinecone へのベクトル登録・検索

4‑2‑3. エージェント呼び出し側で RAG を組み込む

ポイント
- upsertDocumentqueryDocuments非同期で実行され、エラーは呼び出し側でハンドリングしてください。
- ベクトル検索の結果数(topK)はユースケースに合わせて調整可能です。


5. 開発・テストフローと Mastra Studio の活用

5‑1. Mastra Studio ローカルサーバの起動

プロジェクト直下で次コマンドを実行すると、ブラウザ上にインタラクティブ UI が立ち上がります。

  • デフォルトは http://localhost:3000 です。
  • ソース変更時に自動で ホットリロード が走り、手動リフレッシュは不要です。

5‑2. UI からのデバッグ方法(導入文)

Studio の右側パネルには実行ログがリアルタイムで表示されます。以下項目を確認しながらデバッグすると効率的です。

項目 内容
Request ID 各呼び出しの一意識別子(トレースに便利)
Prompt LLM に送信されたプロンプト全文
Provider 使用した LLM(OpenAI / Anthropic)
Response 生成結果とトークン使用量

これらは Chrome DevTools のコンソールでも確認でき、console.log を埋め込んだコードの出力も同時に表示されます。


5‑3. Jest によるユニットテストとモック戦略(導入文)

外部 LLM 呼び出しはコストが高くなるため、モック化してロジックだけを検証します。以下は myAgent のテスト例です。

  • jest.mock によりネットワーク通信を完全に除外し、実行時間を数ミリ秒に短縮できます。
  • CI では npm test -- --runInBand としてシリアル実行すればリソース競合を防げます。

5‑4. ログ出力・モニタリングのベストプラクティス(導入文)

本番環境では 構造化ログ が不可欠です。Mastra の Agent は任意のロガーオブジェクトを受け取れるため、pino など高速ロガーと組み合わせます。

  • JSON 形式のログは CloudWatch、Datadog、Logstash 等への転送が容易です。
  • エラー時は必ず logger.error({ err, payload }, 'LLM 呼び出し失敗') としてスタックトレースを残すようにします。

5‑5. エラーハンドリングとリトライロジック(導入文)

LLM API は レートリミットタイムアウト が頻発するため、指数バックオフでのリトライが推奨されます。axios-retry を利用した例を示します。

  • 最大リトライ回数は 3 回が経験的にバランスが良いとされています。
  • axios-retry がインストールされているかは必ず確認し、package.json に明記してください。

6. 本番デプロイと既存システムへの統合

6‑1. npm パッケージとしてのエクスポート(導入文)

完成したエージェントを 社内・外部で再利用可能なパッケージ として公開します。package.json のエントリは次のように設定します。

  • prepare スクリプトにより npm publish 前に自動でビルドが走ります。
  • 公開前に必ず 2FA と OTP の有効化を行い、認証情報の漏洩リスクを低減してください。

6‑2. GitHub Actions による CI/CD パイプライン(導入文)

以下はビルド・テスト・パッケージ公開までを自動化したサンプルです。シークレット管理は必ず GitHub Secrets 経由で行います。

  • npm test が成功したらのみ publish ジョブが実行されます。
  • 必要に応じて ステージング環境へのデプロイDocker イメージのビルドを追加してください。

6‑3. Vercel へのデプロイ手順(導入文)

Vercel は Serverless Function としてエージェントエンドポイントを提供します。設定は次の通りです。

  1. GitHub リポジトリを Vercel にインポート
  2. Project Settings → Environment Variables.env のキー(例:OPENAI_API_KEY)を暗号化して登録
  3. デプロイコマンドは npm run build && npm start(または vercel dev

ポイント
- Vercel の関数サイズ上限は 50 MB。不要な依存は devDependencies に分離し、ビルド時に除外してください。


6‑4. Cloudflare Workers へのデプロイ(導入文)

Workers は 1 MiB のバンドル制限があるため、コードサイズ最適化が必須です。

package.json にビルドスクリプトを追加します。

wrangler.toml の例

ビルド後に wrangler publish でデプロイします。ベクトル検索は外部 API(Pinecone)へ委譲し、ローカルに大量データを保持しない設計がポイントです。


7. コミュニティと追加リソース

  • 公式サンプル集:Mastra の GitHub 組織内 mastra-samples リポジトリ(最新のマルチLLM・RAG 実装例が多数掲載)
  • Discord コミュニティ#mastra-dev チャンネルで質問や情報交換が可能です。参加方法は公式サイトのフッターにある招待リンクからアクセスしてください(リンクは随時更新されます)。

※ ここに記載した外部リンクは執筆時点の情報です。実在確認が必要な場合は公式ページをご参照ください。


まとめ

  1. 環境構築:Node.js 18+・npm 9+、TypeScript の推奨設定を整える。
  2. CLI 入手npx create-mastra@latest で最新テンプレートを取得し、バージョンは公式ドキュメントで必ず確認。
  3. シークレット管理.env はローカル限定、実運用は CI/CD の暗号化シークレットへ移行。
  4. エージェント実装:マルチLLM 切替と RAG(GitHub → Pinecone)を組み合わせたサンプルコードを提示。依存パッケージは手動でインストールし、package.json に明示的に記載。
  5. 開発フロー:Mastra Studio でホットリロード、Jest でモックテスト、pino と axios-retry によるロギング・リトライを実装。
  6. 本番デプロイ:npm パッケージ化 → GitHub Actions CI/CD → Vercel/Cloudflare Workers のいずれかにデプロイ。サイズ制限や環境変数の暗号化に注意。
  7. コミュニティ活用:公式サンプルと Discord で最新情報をキャッチアップ。

これらの手順に沿って開発すれば、Mastra が提供する マルチLLM と RAG の高度な組み合わせ を安全かつスケーラブルに実装でき、社内プロダクトや顧客向けサービスへ迅速に組み込むことが可能です。ぜひ本ガイドをリファレンスとして活用し、次世代 AI エージェント開発に挑戦してください。

スポンサードリンク

-Mastra