Skip to Content
エージェントマルチエージェントワークフロー

マルチエージェントワークフロー

この例では、ワーカーエージェントとスーパーバイザーエージェントを使用して、複数のエージェント間で作業成果物を受け渡すエージェンティックワークフローの作成方法を示します。

この例では、2つのエージェントを順番に呼び出すシーケンシャルワークフローを作成します:

  1. 初期のブログ投稿を書くCopywriterエージェント
  2. コンテンツを洗練するEditorエージェント

まず、必要な依存関係をインポートします:

import { openai } from "@ai-sdk/openai"; import { anthropic } from "@ai-sdk/anthropic"; import { Agent } from "@mastra/core/agent"; import { createStep, createWorkflow } from "@mastra/core/workflows"; import { z } from "zod";

初期のブログ投稿を生成するcopywriterエージェントを作成します:

const copywriterAgent = new Agent({ name: "Copywriter", instructions: "You are a copywriter agent that writes blog post copy.", model: anthropic("claude-3-5-sonnet-20241022"), });

エージェントを実行し、レスポンスを処理するcopywriterステップを定義します:

const copywriterStep = createStep({ id: "copywriterStep", inputSchema: z.object({ topic: z.string(), }), outputSchema: z.object({ copy: z.string(), }), execute: async ({ inputData }) => { if (!inputData?.topic) { throw new Error("Topic not found in trigger data"); } const result = await copywriterAgent.generate( `Create a blog post about ${inputData.topic}`, ); console.log("copywriter result", result.text); return { copy: result.text, }; }, });

copywriterのコンテンツを洗練するeditorエージェントを設定します:

const editorAgent = new Agent({ name: "Editor", instructions: "You are an editor agent that edits blog post copy.", model: openai("gpt-4o-mini"), });

copywriterの出力を処理するeditorステップを作成します:

const editorStep = createStep({ id: "editorStep", inputSchema: z.object({ copy: z.string(), }), outputSchema: z.object({ finalCopy: z.string(), }), execute: async ({ inputData }) => { const copy = inputData?.copy; const result = await editorAgent.generate( `Edit the following blog post only returning the edited copy: ${copy}`, ); console.log("editor result", result.text); return { finalCopy: result.text, }; }, });

ワークフローを設定し、ステップを実行します:

const myWorkflow = createWorkflow({ id: "my-workflow", inputSchema: z.object({ topic: z.string(), }), outputSchema: z.object({ finalCopy: z.string(), }), }); // Run steps sequentially. myWorkflow.then(copywriterStep).then(editorStep).commit(); const run = await myWorkflow.createRunAsync(); const res = await run.start({ inputData: { topic: "React JavaScript frameworks" }, }); console.log("Response: ", res);





GitHubで例を見る