Mastraで実装するマルチエージェントAIワークフロー ─ ブログ生成プロセスを3ステップで自動化🚀
はじめに:生成AIで「品質の高い文章」を作るには?
AIライティングが一瞬で文章を生成してくれる時代になりました。しかし、「すぐ書けること」と「良い文章ができること」は別物です。
一発のプロンプトで仕上げた記事に、読みづらさや文脈の飛び、情報の抜けを感じたことはないでしょうか?
そこで本記事では、複数のAIエージェントを連携させて高品質な記事を生成する 「マルチエージェントAIワークフロー」 を、Mastraというフレームワークを使って構築してみます。
テーマは「ブログ記事の自動生成」。Copywriter → Editor → SEO Optimizerという3つの役割を持つエージェントが、それぞれの知的作業を分担しながら、1本の完成度の高い記事を作り上げます。
生成AIを本格的に業務に活用したい方、プロンプトだけでは限界を感じている方にとって、実用性の高い内容となっています。
なぜマルチエージェントなのか?
1つのLLM(大規模言語モデル)に「いい感じのブログを書いて」と頼むだけでは、構成が甘かったり、トンマナが不安定だったりすることがあります。
これは、人間のライティングと同じように、複数のフェーズ(執筆・編集・最適化)を踏むべきだからです。
そこで、AIに対しても役割を明確に分担し、段階的に意味を積み上げていく構成が必要になります。
エージェント | 役割 |
---|---|
Copywriter | トピックに基づいて初稿を作成 |
Editor | 構成や文体を調整 |
SEO Optimizer | SEO向けにキーワードや構造を最適化 |
Mastraは、このような思考と行動の分業フローを、型安全かつ直感的に設計・実行できるフレームワークです。
Mastraをインストールする
Mastraの公式で紹介されているインストール手順をもとに進めます
使うコマンドはこちら↓
npx create-mastra@latest
以下のような画面になったら完了です
Cursorで開く
Mastraでは公式ドキュメントに参照するためのMCPサーバーが用意されているので、こちらをEnableにしておきましょう。
エージェントを動かすためにはAPIキーが必要となりますので、OpenAIやAnthropicから取得したAPIキーを.envファイルに入力します。
Mastraでワークフローを定義する
まずは、Mastraの基本的な構成要素であるWorkflow
を定義します。
import { Workflow, Step } from "@mastra/core/workflows";
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
import { anthropic } from "@ai-sdk/anthropic";
import { z } from "zod";
const myWorkflow = new Workflow({
name: "blog-generation-workflow",
triggerSchema: z.object({
topic: z.string().describe("The topic for the blog post"),
}),
});
Step 1:Copywriterで初稿を生成する
Claude 3.5を使って、与えられたトピックに対する初稿を作成します。
const copywriterAgent = new Agent({
name: "Copywriter",
instructions: "You are a professional copywriter. Write an original blog post based on the topic.",
model: anthropic("claude-3-5-sonnet-20241022"),
});
const copywriterStep = new Step({
id: "copywriterStep",
execute: async ({ context }) => {
const topic = context.triggerData.topic;
const result = await copywriterAgent.generate(`Write a blog post about: ${topic}`);
return { copy: result.text };
},
});
Step 2:Editorで文章を整える
次に、OpenAI GPT-4o miniを使って、文章を読みやすく整えます。
const editorAgent = new Agent({
name: "Editor",
instructions: "You are an editor. Improve clarity, tone, and structure.",
model: openai("gpt-4o-mini"),
});
const editorStep = new Step({
id: "editorStep",
execute: async ({ context }) => {
const copy = context.getStepResult("copywriterStep")?.copy;
const result = await editorAgent.generate(`Edit this blog post for clarity: ${copy}`);
return { copy: result.text };
},
});
Step 3:SEO Optimizerで検索対策を行う
最後に、SEOエキスパートエージェントで記事を最適化します。
const seoAgent = new Agent({
name: "SEOOptimizer",
instructions: "You are an SEO expert. Add relevant keywords and optimize structure for SEO.",
model: openai("gpt-4o-mini"),
});
const seoStep = new Step({
id: "seoStep",
execute: async ({ context }) => {
const copy = context.getStepResult("editorStep")?.copy;
const result = await seoAgent.generate(`Optimize this blog post for SEO: ${copy}`);
return { optimized: result.text };
},
});
ワークフローの実行と出力
3つのステップを順番に実行するよう設定します。
myWorkflow
.step(copywriterStep)
.then(editorStep)
.then(seoStep)
.commit();
最後にsrc/mastra/index.tsにworkflowsを追加します
実行確認
以下のコマンドを使用して、Mastra プレイグラウンドを起動します
npx mastra dev
http://localhost:4111/workflows にアクセスすると、blog-workflowsが出来上がっています。
例えば、「ChatGPT」というテーマを入力すると、
このように記事の生成が開始されます。
ワークフローは1つ1つ順を追ってステップが実行されていくので、以下のように実行中は黄色の丸マーク、実行完了は緑の丸マークで表示されます。
ワークフローができたら
このワークフローの質を高めるためには、プロンプトエンジニアリングが必要となります。
例えば、コピーライターエージェントだけをプロンプトチューニングしたい場合には、以下のようにsrc/mastra/index.tsでcopywriterAgentを呼び出しましょう。
src/agents/index.tsにもエージェントとして定義する必要があります。
こちらを行うことで、Mastraのワークフローにエージェントが追加されます
Mastraプレイグラウンドでは、プロンプトを画面上でチューニングすることができます。以下では、語調をずんだもんのように「なのだ」にするために、右側のプロンプトエンハンス機能を使った例です。
おわりに:AIが書く、ではなく“AIと書く”時代へ
生成AIの強みは、「大量の情報を高速にまとめられる」ことにあります。しかし、そこに文脈・目的・品質といった視点を加えるには、人間が設計するワークフローの力が不可欠です。
Mastraは、エージェントたちを段階的に動かし、「意味のある知的流れ」を形にするためのツールです。
本記事のようなマルチエージェント構成を活用することで、業務に即した高品質なアウトプットを、再現性を持って自動化できます。
Discussion