AI株式エージェントの作成
このガイドでは、指定した銘柄の前日の終値を取得するシンプルなエージェントを作成します。ツールの作り方、それをエージェントに追加する方法、そしてエージェントを使って株価を取得する方法を学びます。
前提条件
- Node.js
v20.0
以降がインストールされていること - サポート対象のモデルプロバイダーから取得した API キー
- 既存の Mastra プロジェクト(新規プロジェクトのセットアップはインストールガイドを参照)
エージェントの作成
Mastra でエージェントを作成するには、まず Agent
クラスで定義し、その後 Mastra に登録します。
エージェントを定義する
新規ファイル src/mastra/agents/stockAgent.ts
を作成し、次のようにエージェントを定義します:
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
export const stockAgent = new Agent({
name: "Stock Agent",
instructions:
"You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.",
model: openai("gpt-4o-mini"),
});
Mastra にエージェントを登録する
src/mastra/index.ts
ファイルで、エージェントを登録します:
import { Mastra } from "@mastra/core";
import { stockAgent } from "./agents/stockAgent";
export const mastra = new Mastra({
agents: { stockAgent },
});
株価ツールの作成
現時点では、Stock Agent は最新の株価を把握していません。これを解消するために、ツールを作成してエージェントに追加します。
ツールを定義する
新しいファイル src/mastra/tools/stockPrices.ts
を作成します。ファイル内で、指定したシンボルの前営業日の終値を取得する stockPrices
ツールを追加します:
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
const getStockPrice = async (symbol: string) => {
const data = await fetch(
`https://mastra-stock-data.vercel.app/api/stock-data?symbol=${symbol}`,
).then((r) => r.json());
return data.prices["4. close"];
};
export const stockPrices = createTool({
id: "Get Stock Price",
inputSchema: z.object({
symbol: z.string(),
}),
description: `指定したシンボルの前営業日の終値を取得します`,
execute: async ({ context: { symbol } }) => {
console.log("株価取得ツールを使用中:", symbol);
return {
symbol,
currentPrice: await getStockPrice(symbol),
};
},
});
ツールを Stock Agent に追加する
src/mastra/agents/stockAgent.ts
で、新しく作成した stockPrices
ツールをインポートし、エージェントに追加します。
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
import { stockPrices } from "../tools/stockPrices";
export const stockAgent = new Agent({
name: "Stock Agent",
instructions:
"You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.",
model: openai("gpt-4o-mini"),
tools: {
stockPrices,
},
});
エージェントサーバーの実行
Mastra の API を通じてエージェントとやり取りする方法を学びましょう。
mastra dev
を使う
mastra dev
コマンドで、エージェントをサービスとして起動できます:
mastra dev
これにより、登録済みのエージェントとやり取りするためのエンドポイントを公開するサーバーが立ち上がります。playground では、UI を通じて stockAgent
と stockPrices
ツールをテストできます。
Stock Agent API へのアクセス
デフォルトでは mastra dev
は http://localhost:4111
で動作します。Stock エージェントには以下からアクセスできます:
POST http://localhost:4111/api/agents/stockAgent/generate
curl
でエージェントとやり取りする
コマンドラインから curl
を使ってエージェントとやり取りできます:
curl -X POST http://localhost:4111/api/agents/stockAgent/generate \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "user", "content": "What is the current stock price of Apple (AAPL)?" }
]
}'
想定されるレスポンス:
次のような JSON レスポンスが返ってきます:
{
"text": "The current price of Apple (AAPL) is $174.55.",
"agent": "Stock Agent"
}
これは、エージェントがリクエストを正常に処理し、stockPrices
ツールで株価を取得して結果を返したことを示します。