> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # 构建 AI 股票 Agent 在本指南中,你将创建一个 Agent,用于获取某个股票代码前一日的收盘价。你会先创建一个 Tool 并将其添加到 Agent,然后使用该 Agent 获取股票价格。 ## 前提条件 - 已安装 Node.js `v22.13.0` 或更高版本 - 受支持的 [Model Provider](https://mastra.zisheng.pro/models) 提供的 API 密钥 - 现有的 Mastra 项目(按照[安装指南](https://mastra.zisheng.pro/guides/getting-started/quickstart)设置新项目) ## 创建 Agent 要在 Mastra 中创建 Agent,请使用 `Agent` 类进行定义,然后将其注册到 Mastra。 1. 新建文件 `src/mastra/agents/stockAgent.ts` 并定义 Agent: ```ts import { Agent } from '@mastra/core/agent' export const stockAgent = new Agent({ id: 'stock-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-5.6-sol', }) ``` 2. 在 `src/mastra/index.ts` 文件中注册 Agent: ```ts import { Mastra } from '@mastra/core' import { stockAgent } from './agents/stockAgent' export const mastra = new Mastra({ agents: { stockAgent }, }) ``` ## 创建股票价格 Tool Stock Agent 目前还不了解当前股票价格。为此,请创建一个 Tool 并将其添加到 Agent。 1. 新建文件 `src/mastra/tools/stockPrices.ts`。在其中添加 `stockPrices` Tool,用于获取指定股票代码前一日的收盘价: ```ts 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: `Fetches the last day's closing stock price for a given symbol`, execute: async inputData => { console.log('Using tool to fetch stock price for', inputData.symbol) return { symbol: inputData.symbol, currentPrice: await getStockPrice(inputData.symbol), } }, }) ``` 2. 在 `src/mastra/agents/stockAgent.ts` 中导入刚创建的 `stockPrices` Tool,并将它添加到 Agent。 ```ts import { Agent } from '@mastra/core/agent' import { stockPrices } from '../tools/stockPrices' export const stockAgent = new Agent({ id: 'stock-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-5.6-sol', tools: { stockPrices, }, }) ``` ## 运行 Agent server 了解如何通过 Mastra API 与 Agent 交互。 1. 你可以使用 `mastra dev` 命令,将 Agent 作为服务运行: ```bash mastra dev ``` 该命令会启动一个 server,开放用于与已注册 Agent 交互的端点。在 [Studio](https://mastra.zisheng.pro/docs/studio/overview) 中,你可以通过 UI 测试 `stockAgent` 及其 `stockPrices` Tool。 2. 默认情况下,`mastra dev` 运行在 `http://localhost:4111`。你的 Stock Agent 可通过以下地址访问: ```text POST http://localhost:4111/api/agents/stockAgent/generate ``` 3. 你可以在命令行中使用 `curl` 与 Agent 交互: ```bash 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 响应: ```json { "text": "The current price of Apple (AAPL) is $174.55.", "agent": "Stock Agent" } ``` 这表明 Agent 已成功处理请求,使用 `stockPrices` Tool 获取股票价格,并返回结果。