Skip to content

Demo 02:工具调用

目标

让 Agent 在发现自己需要外部信息时调用工具。这里的工具是本地课程资料搜索,不调用网络。

运行:

bash
npm run demo:02

这一章解决什么问题

Agent 不应该凭空回答“有哪些课程资料”。它应该调用可验证的工具。

mermaid
flowchart TD
  A[用户提问] --> B{是否需要资料?}
  B -- 否 --> C[直接回答]
  B -- 是 --> D[searchCourseTool]
  D --> E[工具结果]
  E --> F[基于结果回答]

关键代码

ts
const searchCourseTool = createToyTool({
  name: 'searchCourse',
  description: '搜索课程资料',
  run: async ({ query }) => searchCourseMaterials(query),
})

你应该观察

Demo 输出会打印:

  • Agent 为什么选择工具。
  • 工具参数是什么。
  • 工具返回了哪些片段。
  • 最终回答是否引用了工具结果。

给 AI 的提示词

text
请把当前 Agent 改成支持工具调用:
- 如果用户问题包含“资料、搜索、Mastra、Agent”,调用 searchCourse 工具。
- 工具只返回本地数据。
- 输出 trace,包含 toolName、toolInput、toolOutput。
- 不要接真实网络。

常见错误

错误说明
工具没有输入约束Agent 可能传错字段
工具返回过多内容后续 prompt 变长且噪声大
工具 description 不清楚模型不知道何时调用