🌟

mastra-stripe-lineハンズオン[セットアップ編]

に公開

はじめに

この記事は 【大阪/オンライン開催】Mastra × Stripe × LINE で作るAIエージェント のハンズオンで用いた資料です。

こんにちは。ようかんです。
今日は、MastraというAIエージェントフレームワークを使ってLINEBotを作るハンズオン記事になります。

このハンズオンでは、MastraをLINEとStripeと連携するところまでを行います。

この記事では、まずMastraについて知り、サンプルのエージェントを実際に動かしてみるところまでを行います。
続編の記事でLINEとの連携、エージェントの実装、そしてStripeとの連携を行い、LINEで動くAIエージェントを作りあげます。

Mastraとは

Mastraは、Gatsbyのチームが開発したTypeScript向けのAIアプリケーション・エージェント構築フレームワークです。
AIエージェントを作る際に必要な基本的な機能が抽象化されて提供されており、簡単に開発を始めることができます。

内部的にはHonoで作られており、スタンドアロンでデプロイすることもできますし、Next.jsのAPI Routeに組み込むなども可能です。

Mastraの立ち位置

MastraはVercelのAI SDKの上に構築されたフレームワークです。AI SDKのモデルルーティングやツール呼び出しといった基盤機能を活用しながら、AIエージェントを作るにあたって必要な実装を抽象化し、複雑な処理を肩代わりしてくれます。

主な特徴

モデルルーティング(プロバイダー差異の吸収)
OpenAI、Anthropic、Geminiなど、40以上のLLMプロバイダーに統一インターフェースでアクセスできます。プロバイダーごとの実装の違いを意識することなく、簡単にモデルを切り替えることができます。

エージェント機能
LLMとツールを活用した自律型エージェントの構築が可能です。エージェントに複数のツールを渡すことで、必要に応じて適切なツールを選択・実行しながら目標達成のための推論と反復処理を行います。

さらに、エージェントネットワークという機能により、複数のエージェントを統括する上位エージェントを作成することもできます。

メモリー機能
会話履歴を保持する機能があり、コンテキストを維持した対話が可能です。

RAG対応
Retrieval-Augmented Generation(RAG)にも対応しており、外部知識を活用したより正確な応答が可能です。

ワークフロー
グラフベースのワークフローエンジンで複雑なマルチステッププロセスを制御できます。.then()、.branch()、.parallel()といった直感的な制御フロー構文を採用しています。

基本的な使い方

Mastraを使ってAIエージェントを作成するための最初はAgent + Toolです。エージェントに対していくつかのツールを渡すことで、エージェントが必要に応じてツールを使いながら会話することが可能になります。

npm run devコマンドで開発用のStudioが起動し、UIとREST APIを通じてエージェントの動作を確認することができます。

LINEとの連携

MastraはHonoベースで構築されているため、カスタムAPIルートを使ってLINEからのWebhookを簡単に受け入れることができます。

registerApiRouteによるWebhookエンドポイント実装例

下記のように、registerApiRouteヘルパーを使用してLINEのWebhookエンドポイントを定義できます。

import { Mastra } from "@mastra/core/mastra";
import { registerApiRoute } from "@mastra/core/server";

export const mastra = new Mastra({
  server: {
    apiRoutes: [
      registerApiRoute("/webhook/line", {
        method: "POST",
        handler: async (c) => {
          const payload = await c.req.json();
          // LINEからのWebhookペイロードを処理
          // エージェントを呼び出して応答を生成
          return c.json({ success: true });
        },
      }),
    ],
  },
});

このように、MastraのサーバーにLINEのWebhookエンドポイントを直接組み込むことで、LINEBotとAIエージェントをシームレスに連携させることができます。

Stripeとの連携

MastraではStripeを操作する処理をToolとして提供することで、エージェントに統合できます。

例えば、決済処理や顧客情報の取得、サブスクリプション管理などのStripe操作をToolとして定義し、エージェントに渡すことで、ユーザーとの会話の中で必要に応じてStripeの機能を呼び出すことが可能になります。

これにより、「料金プランを確認して」「支払い履歴を教えて」といった自然言語でのリクエストに対して、エージェントが適切なStripe APIを呼び出して応答を返すことができます。

できること

  • 自然言語理解と推論を組み合わせたAIアプリケーション
  • カスタマーサポート用チャットボット
  • 業界特化型コパイロット
  • マルチステップワークフローの自動化
  • データ分析と推奨提供ツール

React、Next.js、Node.jsなどの既存フレームワークに組み込むか、スタンドアロンサーバーとして展開することができます。

ライセンス

Mastraは当初Elastic License 2.0でしたが、2025年7月9日にApache-2.0に変更されており、商用利用も可能です。

公式サイト: https://mastra.ai/

環境構築

Gemini API Key の取得

  1. https://aistudio.google.com/api-keys にアクセスします
  2. Googleアカウントでログインします
  3. 「Create API Key」をクリックしてAPIキーを生成します
  4. 生成されたAPIキーをコピーして保管します(後ほど使用します)

GitHub Codespacesの起動

今回ハンズオンで利用するリポジトリを開き、codespaceで起動してください

環境変数の設定

以下のコマンドで.envファイルを作成し、エディタで開きます:

cp .env.sample .env && code .env

先ほど取得したGemini API KeyをGOOGLE_GENERATIVE_AI_API_KEYに入力します

依存関係のインストールと起動

  1. 依存関係をインストールします
npm install
  1. 開発サーバーを起動します
npm run dev

  1. 表示されたPlayground: http://localhost:4111/のリンクをクリックします

お天気エージェントを試す

  1. Playgroundが開いたら、左側のAgentsの中から「Weather Agent」をクリックします

  2. 入力欄に「東京の天気を教えて」などと入力してみましょう

AIエージェントが天気情報を取得して回答してくれます。

実行結果を見ると、toolの実行が行われていることがわかります。toolにinputされた値と、outputの値を確認することができます。

これで、サンプルのお天気エージェントが、ユーザーが入力した地点の情報を元に、天気情報を取得するツールを実行し、得られた結果を元に結果を生成してくれるという一連のデモが動きました。

おわりに

この記事では、Mastraの環境構築から、お天気エージェントを使った基本的な動作確認までを行いました。

次の記事では、StripeとLINEの連携に入っていき、より実践的なAIエージェントの構築を進めていきます。

続きはこちらの記事になります。
https://qiita.com/motchi0214/private/1f02bf163f9a30b3fc6d

参考文献

GitHubで編集を提案

Discussion