Mastraをバックエンド+AIエージェントサーバーとして本番運用した実践報告
本文の状態
日本語全文を表示中
詳細モードで約3分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
CyberAgent Developers Blog
AIクリエイティブカンパニーBPO事業部のエンジニア佐藤氏が、MastraをバックエンドとAIエージェントサーバーとして本番環境で運用した実践的な知見を共有している。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
こんにちは。 AI 事業本部 AI クリエイティブカンパニー BPO 事業部のエンジニアの佐藤 (@Rintarooo) です。 KAT-TUN のサブスク解禁ということで、KAT-TUN を見習って『ギリギリでいつも生きていたい』をどうにかして実践していきたい所存です。
TypeScript 製の AI エージェントフレームワークである Mastra を、バックエンド API と AI エージェントの両方を担う単一のサーバーとして本番運用しています。 Mastra は比較的新しいフレームワークで、本番運用の事例がまだ少ないのが現状です。 そこで本記事では、Mastra をモノリシックなサーバーとして開発した背景や、運用を通して得られた知見を共有します。
プロダクトの立ち上げ・PoC フェーズにおいて、ユーザーの嗜好やデータベースの情報に基づいて回答する高度なチャット機能をアプリの必須機能として要件を固め、AIエージェントフレームワークの検討を始めました。 静的型付け言語で型安全性があり、開発チームや個人としても慣れ親しんでいる Go または TypeScript を候補としました。 しかし当時、Go で実装されたAIエージェントフレームワークである Google の Agent Development Kit (ADK) for Go はまだ GA として提供されておらず、TypeScript 製の Mastra を選択しました。 Mastra は Vercel AI SDK をベースに構築されており、複数の LLM プロバイダー(Anthropic、Google 等)を統一インターフェースで扱える点も魅力でした。 加えて、Mastra は Hono ベースの HTTP サーバーとしても動作するため、AI エージェントと API サーバーを単一のサーバーで提供できます。
バックエンド + AI エージェントの構成
Tool 実装におけるリポジトリ/サービスの再利用

エージェントがネストして呼び出した Tool も、トレースツリーで構造的に可視化されます。また、会話の流れをスレッド単位で追跡できるほか、入出力・消費トークン数・コストといった詳細情報も確認できます。
昨今、Claude Code をはじめとするコーディング AI を活用した開発が一般的になりつつあります。一方、コーディング AI がプロンプトとロジックを同時に編集してしまうことで、「エージェントの挙動が変わった原因が、プロンプトの修正なのかロジックの変更なのか」わからなくなることがありました。
また、プロンプトを1行変えるだけの微調整でも PR を作成してデプロイする必要があり、手軽に調整できないもどかしさを感じていました。ほかにも、PM からどのようなプロンプトで動いているのか聞かれることもありました。
そこで、プロンプトは GitHub で管理しているコードから切り離し、Langfuse で管理するようにしました。これにより、プロンプトの変更はアプリケーションのデプロイサイクルとは独立して即座に反映でき、変更の影響範囲が明確になります。また、プロンプトはバージョン管理されているため、変更前の状態にいつでも戻すことができ、安全に調整できます。さらに、プロンプトにラベルを付与できるので、どのプロンプトがどの環境に反映されているかも一元管理でき、PM もプロンプトを確認しやすくなるというメリットもあります。加えて、Langfuse 公式が提供する MCP を介して、コーディング AI から直接プロンプトを編集することも可能です。


原文を表示
こんにちは。 AI 事業本部 AI クリエイティブカンパニー BPO 事業部のエンジニアの佐藤 (@Rintarooo) です。 KAT-TUN サブスク解禁ということで、KAT-TUN を見習って『ギリギリでいつも生きていたい』をどうにかして実践していきたい所存です。
TypeScript 製の AI エージェントフレームワークである Mastra を、バックエンド API と AI エージェントの両方を担う単一のサーバーとして本番運用しています。 Mastra は比較的新しいフレームワークで、本番運用の事例がまだ少ないのが現状です。 そこで本記事では、Mastra をモノリシックなサーバーとして開発した背景や運用を通して得られた知見を共有します。
プロダクトの立ち上げ・PoC フェーズで、ユーザーの嗜好やデータベースの情報に基づいて回答する高度なチャット機能をアプリの必須機能として要件に固め、AIエージェントフレームワークを検討することにしました。 静的型付け言語で型安全性があり、開発チームや個人としても慣れ親しんでいる Go または TypeScript で検討しました。 しかし当時、Go で実装されたAIエージェントフレームワークである Google の Agent Development Kit (ADK) for Go はまだ GA として提供されておらず、TypeScript 製の Mastra を選びました。 Mastra は Vercel AI SDK をベースに構築されており、複数の LLM プロバイダー(Anthropic、Google 等)を統一インターフェースで扱える点も魅力でした。 加えて、Mastra は Hono ベースの HTTP サーバーとしても動作するため、AI エージェントと API サーバーを単一のサーバーで提供できます。
バックエンド + AI エージェントの構成
Tool 実装におけるリポジトリ/サービスの再利用

エージェントがネストして呼び出した Tool も、トレースツリーで構造的に可視化されます。また、会話の流れをスレッド単位で追跡できるほか、入出力・消費したトークン数やコストといった詳細情報も確認できます。
昨今、Claude Code をはじめとするコーディング AI を活用した開発が一般的になりつつあります。一方、コーディング AI がプロンプトとロジックを一度に編集してしまうことで、「エージェントの挙動が変わったのが、プロンプトの修正なのかロジックの変更によるものなのか」わからなくなってしまうことがありました。
また、プロンプトを 1 行変えるだけの微調整でも PR を作成してデプロイする必要があり、 手軽に調整できないもどかしさを感じてました。ほかに、PM からどんなプロンプトで動いているのか聞かれることもありました。
そこで、プロンプトは GitHub で管理しているコードと切り離し、Langfuse で管理しています。これにより、プロンプトの変更はアプリケーションのデプロイサイクルとは独立して即座に反映でき、変更の影響範囲が明確になります。また、プロンプトはバージョン管理されているため、変更前の状態にいつでも戻すことができ、安全にプロンプトの調整ができます。さらに、プロンプトにラベルを付与できるので、どのプロンプトがどの環境に反映されているかも一元管理でき、PM もプロンプトを確認しやすくなるというメリットもありました。加えて、Langfuse 公式が提供する MCP を介して、コーディング AI からもプロンプトの編集ができます。


今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み