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 不清楚 | 模型不知道何时调用 |