ステップ内でエージェントを呼び出す
ワークフローはステップ内でエージェントを呼び出し、動的な応答を生成できます。この例では、エージェントの定義、Mastra インスタンスへの登録、そしてワークフローステップ内で .generate()
を使った呼び出し方法を示します。ワークフローは都市名を入力として受け取り、その都市に関する事実を返します。
エージェントの作成
都市に関する豆知識を返すシンプルなエージェントを作成します。
src/mastra/agents/example-city-agent.ts
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
export const cityAgent = new Agent({
name: "city-agent",
description: "Create facts for a city",
instructions: `Return an interesting fact based on the city provided`,
model: openai("gpt-4o")
});
エージェントの登録
ワークフローからエージェントを呼び出すには、Mastra インスタンスにエージェントを登録しておく必要があります。
src/mastra/index.ts
import { Mastra } from "@mastra/core/mastra";
import { cityAgent } from "./agents/example-city-agent";
export const mastra = new Mastra({
// ...
agents: { cityAgent },
});
エージェントを呼び出す
getAgent()
で登録済みエージェントへの参照を取得し、ステップ内で .generate()
を呼び出して入力データを渡します。
src/mastra/workflows/example-call-agent.ts
import { createWorkflow, createStep } from "@mastra/core/workflows";
import { z } from "zod";
const step1 = createStep({
id: "step-1",
description: "入力の値をエージェントに渡す",
inputSchema: z.object({
city: z.string()
}),
outputSchema: z.object({
facts: z.string()
}),
execute: async ({ inputData, mastra }) => {
const { city } = inputData;
const agent = mastra.getAgent("cityAgent");
const response = await agent.generate(`Create an interesting fact about ${city}`);
return {
facts: response.text
};
}
});
export const callAgent = createWorkflow({
id: "agent-workflow",
inputSchema: z.object({
city: z.string()
}),
outputSchema: z.object({
facts: z.string()
})
})
.then(step1)
.commit();