0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実装】Next.jsアプリ内にてmastraを用いてエージェント機能を追加

Last updated at Posted at 2025-11-24

概要

  • mastraを使うことでエージェント機能を実装できます。
  • Next.jsでフロント画面を実装し、エージェント機能をmastraのツールを使用して実装します。
  • LLMモデルはgoogle AI studioからAPIkeyを取得して実装しています。(無料枠)

Mastraについて

  • Mastra(マストラ)は、JavaScript/TypeScript製のオープンソースAIエージェント開発フレームワークです。
  • エージェント開発に必要な機能なワークフロー、エージェント、RAG(外部知識検索)、評価など)をまとめて提供するため、対話型アシスタントから自律的なタスク実行エージェントまで幅広く構築可能です。

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

  • メリット
    • TypeScriptの強みを活かし、Webアプリ~サーバーレスとスムーズ統合が可能になります。
    • ワークフローやRAG、評価・監視などをひとつのフレームワークで完結できます。
  • デメリット
    • 新しいプロジェクトでコミュニティ規模がまだ小さいです。
    • Python中心の資産を流用しづらいそうです。
フレームワーク(主要言語) 特徴・強み 適したユースケース 注意点・弱み
Mastra エージェント、ワークフロー、RAG、評価を統合 フロントエンド~バックエンドをTypeScriptで統一 Python資産を直接活用しづらい、国内情報が少ない
LangChain 豊富なツール・モデル連携と広大なコミュニティ Python中心の研究・実験 機能が多く習得コストが高い

mastra_next.js導入方法

## next.jsのプロジェクトを立ち上げる
npx create-next-app@15.5.4

$ npx create-next-app@15.5.4
√ What is your project named? ... mastra-nextjs
√ Would you like to use TypeScript? ... / Yes
√ Which linter would you like to use? » ESLint
√ Would you like to use Tailwind CSS? ... / Yes
√ Would you like your code inside a `src/` directory? ... / Yes
√ Would you like to use App Router? (recommended) ...  / Yes
√ Would you like to use Turbopack? (recommended) ... / Yes
√ Would you like to customize the import alias (`@/*` by default)? ... No /

## プロジェクト内に移動
cd mastra-nextjs

## mastraクライアント初期化
npx mastra@latest init

✔ Successfully installed Mastra core dependencies
┌   Mastra Init
│
◇  Where should we create the Mastra files? (default: src/)
│  src/
│
◇  Select a default provider:
│  Google
│
◇  Enter your Google API key?
│  Skip for now
│
◇  Make your IDE into a Mastra expert? (Installs Mastra's MCP server)
│  Skip for now

next.config.jsに追加

import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  /* config options here */
  serverExternalPackages: ["@mastra/*"],
};

export default nextConfig;

必要なモジュールをインストール

npm install @ai-sdk/google @mastra/mcp dotenv

環境ファイルの作成

## サンプルファイルを基にenvファイルを作成
cp .env.example .env
[.env]
GOOGLE_GENERATIVE_AI_API_KEY=your-api-key

mastraのサーバーも起動ができるようにする

  • ./package.json
  "scripts": {
    "dev": "next dev --turbopack",
    "build": "next build --turbopack",
    // 下記を追加
    "msdev": "mastra dev",
  },

agentの作成

  • レシピ生成するagentを作成します。

作成したagentを組み込む

  • レシピ生成するagentをmastraの本体に組み込みます。

mastraを起動しagentの動作確認

  • 下記のコマンドでmastraを起動し、作成したagentを動かします。
npm run msdev

mastra_chack

actions.tsファイルを作成

  • Mastraに定義したCookingAgentを呼び出すためのファイルを作成します。
  • Mastraと通信の基盤となります。

フロントで実装するためのUI関連のライブラリーを追加

## ui.shadcn
## https://ui.shadcn.com/
npx shadcn@latest init -d
## button,input,cardを追加
npx shadcn@latest add
  
## Markdownレンダリング用ライブラリ
npm install react-markdown @tailwindcss/typography remark-gfm rehype-highlight
  • ./src/app/globals.css
@import "tailwindcss";
@import "tw-animate-css";
/* 下記を追加 */
@plugin "@tailwindcss/typography";

CookingFormコンポーネントを作成

  • ユーザーが食材を入力した後にgetCookingInfoアクションを呼び出す仕組みを作成します。
  • 【ユーザ】(例:カレーライス)> actions.ts > 作成したagent.ts > LLM
  • LLMからのレスポンス > 作成したagent.ts > actions.ts > 【ユーザ】

CooKingPageのコンポーネントを作成

  • 先ほど作成したCookingFormコンポーネントを組み込みます。

ページ本体の修正

  • ページ本体にCooKingPageのコンポーネントを組み込みます。

フロント側で動くか確認

npm run dev

フロント

ソース(GitHub)

後記

  • 最後まで読んで頂きありがとうございます。
  • Next.jsを使い簡易的にエージェント機能を実装することができました。
  • Mastraは日本語の記事が少なく、公式のテンプレートから試行錯誤しながら実装が必要になる印象です。
  • LangChane・LangGraphを学ぶと実装の流れがイメージしやすかったです。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?