Mastraをバックエンド+AIエージェントサーバーとして本番運用した実践報告
CyberAgentのエンジニアは、TypeScript製AIエージェントフレームワーク「Mastra」をバックエンドAPIとAIエージェントサーバーとして本番運用した経験と、プロンプト管理にLangfuseを採用した知見を共有した。
キーポイント
Mastraを本番環境のモノリシックサーバーとして採用
TypeScript製で型安全性があり、Vercel AI SDKベースのMastraを、バックエンドAPIとAIエージェント機能を担う単一サーバーとして本番運用した。
プロンプト管理をコードから分離しLangfuseで一元管理
プロンプトの変更がコードデプロイと連動しない課題を解決するため、プロンプトをGitHubのコードから切り離し、Langfuseでバージョン管理・即時反映・可視化を実現した。
開発選択の背景とMastraの利点
Go製の代替フレームワークが未成熟だった中、チームに慣れたTypeScript環境、複数LLMプロバイダーの統一インターフェース、HonoベースのHTTPサーバー機能を理由にMastraを選択した。
運用で得られた可観測性と開発効率の知見
エージェントのTool呼び出しをトレースツリーで可視化し、会話スレッド・トークン消費・コストを追跡できるほか、LangfuseのMCPによりコーディングAIからもプロンプト編集が可能になった。
影響分析・編集コメントを表示
影響分析
この記事は、急速に進化するAIエージェントフレームワークの実践的な適用事例として、技術選定の背景や運用上の課題解決策を具体的に示しており、同様の導入を検討する開発チームにとって貴重な参考情報となる。特に、プロンプトのライフサイクル管理をコードデプロイから分離するアプローチは、AI機能開発のアジリティと安定性を両立させる手法として業界に影響を与える可能性がある。
編集コメント
技術ブログとして実践的な知見に富み、特にプロンプト管理の課題とその解決策(Langfuse採用)の記述は、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 事業本部 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日報で今日の重要ニュースをまとめ読み