何时使用搜索
判断标准
Agent 需要根据问题类型智能判断是否使用搜索:
明确需要搜索的场景:
时间敏感
- “今天天气怎么样?”
- “现在的比特币价格?”
- “昨晚的比赛结果?”
版本相关
- “React 19 有什么新特性?”
- “最新版本的 Python 有哪些改进?”
事实验证
- “GPT-5 发布了吗?”
- “iPhone 16 什么时候发布?”
价格查询
- “RTX 5090 多少钱?”
- “特斯拉 Model 3 当前价格?”
不需要搜索的场景:
编程概念
- “什么是闭包?”
- “解释 TypeScript 泛型”
历史知识
本地操作
系统提示词引导
在系统提示词中指导 LLM 何时使用搜索:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
const SEARCH_SYSTEM_PROMPT = ` 你是一个有用的 AI 助手,具有联网搜索能力 🔍
## 搜索能力
当用户询问以下类型的问题时,请使用 search 工具:
1. **实时信息** 📰 - 时事新闻、最新动态 - 天气、股票价格等实时数据 - 产品价格、活动状态
2. **最新文档** 📚 - 技术文档、API 参考 - 软件版本更新信息 - 教程和指南
3. **事实查询** 🔍 - 产品发布信息 - 人物/公司动态 - 验证不确定的信息
## 搜索技巧
- 使用简洁明确的搜索关键词 - 对于新闻,添加 topic: "news" 参数 - 对于深度信息,使用 search_depth: "advanced" - 对于时间范围,添加 days 参数
## 示例
用户: "今天北京天气" → 使用 search: {"query": "北京今天天气"}
用户: "React 19 新特性" → 使用 search: {"query": "React 19 新特性", "search_depth": "advanced"}
用户: "比特币价格" → 使用 search: {"query": "比特币当前价格", "topic": "finance"} `;
|
搜索参数调优
search_depth 参数
| 值 |
响应时间 |
数据量 |
适用场景 |
basic |
~2-3秒 |
标题+摘要 |
快速查询、一般信息 |
advanced |
~5-10秒 |
包含正文 |
深度分析、技术细节 |
使用建议:
1 2 3 4 5
| { query: "北京天气", searchDepth: "basic" }
{ query: "TypeScript 高级类型", searchDepth: "advanced" }
|
num_results 参数
| 值 |
适用场景 |
| 3 |
快速浏览、简单问题 |
| 5 |
默认值,平衡选择 |
| 10 |
全面调研、对比分析 |
使用建议:
1 2 3 4 5
| { query: "Python 官网", numResults: 3 }
{ query: "前端框架对比", numResults: 10 }
|
days 参数
限制搜索结果的时间范围:
1 2 3 4 5 6 7 8
| { query: "AI 突破", topic: "news", days: 3 }
{ query: "Chrome 更新", days: 7 }
{ query: "WebAssembly 教程", days: 30 }
|
topic 参数
| topic |
描述 |
使用场景 |
general |
通用搜索 |
默认选项 |
news |
新闻搜索 |
时事、动态 |
finance |
财经搜索 |
股票、价格 |
使用示例:
1 2 3 4 5
| { query: "AI 最新进展", topic: "news" }
{ query: "特斯拉股价", topic: "finance" }
|
查询优化技巧
关键词精简
1 2 3 4 5
| "请帮我搜索一下 React 19 版本都有哪些新的特性和改进"
"React 19 新特性"
|
使用特定术语
1 2 3 4 5
| "怎么让网页更快"
"网站性能优化 best practices"
|
组合关键词
1 2 3 4 5 6 7 8
| "TypeScript 5.0 装饰器"
"React 19 Server Components"
"Python 数据可视化 库"
|
排除法
1 2 3
| "JavaScript framework -Angular"
|
错误处理
常见错误及处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| if (!tavilyClient.isAvailable()) { console.warn('搜索服务不可用,使用内置知识回答'); return await answerWithoutSearch(query); }
if (result.results.length === 0) { console.log('未找到搜索结果,尝试调整查询词'); return await retryWithRefinedQuery(query); }
if (error.message.includes('rate limit')) { console.log('API 请求次数超限,等待后重试'); return await retryAfterDelay(query, 60000); }
|
优雅降级策略
1 2 3 4 5 6 7 8 9 10 11 12
| async function searchWithFallback(query: string): Promise<string> { try { const result = await searchTool.execute({ query }); return result.output; } catch (error) { console.warn(`搜索失败: ${error.message}`);
return await answerFromKnowledge(query); } }
|
性能优化
批量查询
1 2 3
| const queries = ["React 18", "React 19", "React 新版本"]; const combinedQuery = "React 版本历史 18 19 新功能";
|
并发搜索
1 2 3 4 5
| const results = await Promise.all([ searchTool.execute({ query: "前端框架性能对比" }), searchTool.execute({ query: "backend 性能优化" }) ]);
|
缓存预热
1 2 3 4 5 6 7 8 9 10
| const commonQueries = [ "React 最新版本", "TypeScript 新特性", "JavaScript ES2024" ];
for (const query of commonQueries) { searchTool.execute({ query }); }
|
使用示例
示例 1:实时信息查询
1 2 3 4 5 6 7 8 9 10
| 用户: 今天北京天气怎么样? Agent: [调用 search 工具] 🔍 搜索结果: "今天北京天气怎么样"
💡 AI 摘要: 根据搜索结果,北京今天天气晴朗,气温 15-25°C, 东南风 3-4 级,空气质量良好。
根据天气预报,北京今天天气晴朗,气温在 15 到 25 度之间, 东南风 3 到 4 级。适合外出活动,建议穿着轻薄外套。
|
示例 2:技术文档查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 用户: React 19 有什么新特性? Agent: [调用 search 工具,search_depth: "advanced"] 🔍 搜索结果: "React 19 新特性"
💡 AI 摘要: React 19 引入了服务器组件的稳定版本、新的 Actions API、 改进的表单处理、use() hook 用于 Context 和 refs...
React 19 主要新特性包括:
1. **服务器组件** - 正式稳定版本 2. **Actions** - 简化表单和异步操作 3. **use() hook** - 替代 useContext 和 useRef 4. **并发渲染改进** - 更好的性能 5. **新组件** - <form>、<input> 等
|
示例 3:价格查询
1 2 3 4 5 6 7 8 9 10 11 12 13
| 用户: iPhone 15 Pro Max 当前价格是多少? Agent: [调用 search 工具,topic: "finance"] 🔍 搜索结果: "iPhone 15 Pro Max 价格"
💡 AI 摘要: 根据搜索结果,iPhone 15 Pro Max 在中国的起售价为 9999 元(256GB)。
根据苹果官网和授权经销商的信息: - 256GB: 9999 元 - 512GB: 11999 元 - 1TB: 13999 元
价格可能因促销活动和渠道有所不同。
|
小结与最佳实践总结
搜索最佳实践清单
性能指标
| 指标 |
建议值 |
| 基础搜索响应时间 |
~2-3 秒 |
| 深度搜索响应时间 |
~5-10 秒 |
| 缓存响应时间 |
< 100ms |
| 缓存命中率 |
> 50% |
第十二章总结
本章详细介绍了联网搜索功能的实现:
12.1 搜索能力的重要性
- LLM 知识截止问题
- 实时信息获取场景
- 搜索与推理的结合
12.2 Tavily API 集成
- Tavily 服务介绍
- API 注册和配置
- SDK 集成方法
12.3 搜索工具实现
- SearchTool 类设计
- execute 方法实现
- LLM 函数调用集成
12.4 结果缓存机制
12.5 搜索场景与最佳实践
- 何时使用搜索
- 参数调优技巧
- 查询优化方法
- 错误处理和性能优化
通过本章的学习,你已经掌握了如何在 AI Agent 中集成联网搜索能力,使 Agent 能够获取实时信息,提供更准确的回答。
下一章: 第十三章:MCP 集成
导航
上一篇: 12.4 结果缓存机制
下一篇: 13.1 MCP 协议概述