【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战
- 1. 区别
- 应用场景
- 2. 代码使用
- 3.代码执行效果
在langchain_community.tools.tavily_search
中,TavilyAnswer
和TavilySearchResults
有以下区别和应用场景:
1. 区别
- 功能侧重
TavilyAnswer
:主要用于查询Tavily搜索API并直接获取答案。它更侧重于为问题提供简洁明了的回答,隐藏了原始的搜索数据细节,只返回最终的答案。TavilySearchResults
:用于查询Tavily搜索API并获取完整的搜索结果,包括标题、网址、内容、答案、相关图片等多种数据类型。它提供了更丰富的信息,允许开发者根据具体需求进一步解析和处理这些数据。
- 输出格式
TavilyAnswer
:通常只返回一个字符串形式的答案。TavilySearchResults
:根据配置,可能以content_and_artifact
格式返回,包含内容和相关的元数据等,如搜索结果的详细信息、查询的问题、后续问题、答案、图片列表、响应时间等。
应用场景
- TavilyAnswer
- 问答系统:当构建一个需要直接回答用户问题的智能问答系统时,
TavilyAnswer
可以快速获取简洁的答案并呈现给用户,无需用户处理额外的搜索结果信息。例如,用户询问“法国的首都是哪里”,TavilyAnswer
可以直接返回“巴黎”。 - 信息提取:在一些只需要关键信息的场景中,如从大量文本中提取特定问题的答案,
TavilyAnswer
能够精准地提供所需信息,避免了无关数据的干扰。
- 问答系统:当构建一个需要直接回答用户问题的智能问答系统时,
- TavilySearchResults
- 内容聚合与展示:如果需要创建一个内容聚合平台或搜索引擎界面,
TavilySearchResults
可以获取全面的搜索结果,包括标题、网址、内容等,以便更好地展示给用户,让用户能够根据详细信息判断搜索结果的相关性。例如,构建一个类似百度搜索的界面,用户可以看到搜索结果的标题、摘要和链接,方便进一步点击查看详细内容。 - 复杂数据分析:当需要对搜索结果进行深入分析,例如统计特定关键词在不同网页中的出现频率、分析搜索结果的来源分布等,
TavilySearchResults
提供的丰富数据能够满足这些需求。开发者可以根据返回的多个字段进行各种分析和处理,为后续的决策或进一步的智能应用提供支持。
- 内容聚合与展示:如果需要创建一个内容聚合平台或搜索引擎界面,
2. 代码使用
from langchain_community.tools.tavily_search import TavilySearchResults,TavilyAnswer
from dotenv import load_dotenv
import os
load_dotenv()
import os
import json
# 用github账号登录,生成一个api key,填入下面的tavily_dev_i
TAVILY_API_KEY = os.getenv("TAVILY_API_KEY")
# 不用api key,直接调用,从环境变量中获取
search = TavilySearchResults(
# api_key=TAVILY_API_KEY # 不用api key,直接调用,从环境变量中获取
)
res = search.invoke("马克思是谁")
print(res)
print(len(res))
print(json.dumps(res[0], indent=4, ensure_ascii=False))
# tavily_answer = TavilyAnswer(api_key=TAVILY_API_KEY)
# 不用api key,直接调用,从环境变量中获取
tavily_answer = TavilyAnswer()
res = tavily_answer.invoke("马克思是谁")
print('tavily_answer:',res)
3.代码执行效果
TavilySearch默认查返回5条结果
[{'title': '在纪念马克思诞辰200周年大会上的讲话 - 中国政府网', 'url': 'https://www.gov.cn/gongbao/content/2018/content_5294767.htm', 'content': '马克思是全世界无产阶级和劳动人民的革命导师,是马克思主义的主要创始人,是马克思主义政党的缔造者和国际共产主义的开创者,是近代以来最伟大的思想家。 两个世纪过去了,人', 'score': 0.8446273}, {'title': '卡尔·马克思_百度百科', 'url': 'https://baike.baidu.com/item/%E5%8D%A1%E5%B0%94%C2%B7%E9%A9%AC%E5%85%8B%E6%80%9D/158728', 'content': '卡尔·马克思,全名卡尔·海因里希·马克思(德语:Karl Heinrich Marx,1818年5月5日-1883年3月14日),马克思主义的创始人之一,第一国际的组织者和领导者,马克思主义政党的缔造者', 'score': 0.829285}, {'title': '马克思永远是无产者和共产党人的光辉楷模 - 求是', 'url': 'http://www.qstheory.cn/dukan/hqwg/2018-05/07/c_1122794829.htm', 'content': '马克思是一位伟大的革命导师,一生光明磊落,不谋私利,把自己的一生无私地献给了无产阶级革命事业,为人类留下了一座巨大的思想理论宝库。', 'score': 0.8235701}, {'title': '马克思是谁 - 百度经验', 'url': 'https://jingyan.baidu.com/article/49ad8bceb54f741934d8fabe.html', 'content': '马克思全名:卡尔·海因里希·马克思。Karl Marx,曾有麦客士、马陆科斯、马尔克、马可思、马格斯、马尔格时等译法。从1902到1923年,经过21年才统一翻译为', 'score': 0.78650844}, {'title': '马克思主义- 维基百科,自由的百科全书', 'url': 'https://zh.wikipedia.org/zh-hans/%E9%A9%AC%E5%85%8B%E6%80%9D%E4%B8%BB%E4%B9%89', 'content': '马克思主义者普遍认为一个社会主义社会比资本主义要能带给更大部分人利益,比如列宁在1917年俄国革命前说:“生产模式的社会化必将导致生产工具回归社会,这种转变将可以带来劳动产能的庞大提升、工时的减少,并且将落后、杂乱、规模又小的资本主义生产转而集体而先进的生产。”[20]\n\n历史\n\n马克思和恩格斯\n\n卡尔·马克思(1818年5月5日-1883年3月14日)是德国的哲学家、政治经济学家和社会主义者,他以历史唯物主义、异化、和剥削理论来解释资本主义的生产模式,并且透过阶级斗争分析历史。马克思在1848年的《共产党宣言》中概述了他的理论:“所有社会自古以来的历史都是阶级斗争的历史。”他的思想在当时就已经有相当影响力,并且在他死去后,由1917年的俄国革命大幅度的扩张。 [...] 马克思主义(德语:Marxismus)是一种以历史唯物主义、辩证法和对资本主义的批判所发展而出的经济、政治和社会世界观。在19世纪中后期,卡尔·马克思和弗里德里希·恩格斯建构出了马克思主义的理论架构。以马克思主义作为根基或方法论的写作对现代的政治哲学和社会运动产生重大而广泛的影响,包含了其独特的哲学、社会学、政治经济学以及革命意识形态[1]。对于马克思主义的理论并没有一套统一的定义,也因此它在众多的领域和题材上出现多元的发展,导致其门下包含众多明显对立甚至互相冲突的理论[2]。而要验证事物对世界是否利大于弊,便需要实践。马克思说过:“实践才是唯一的真理”。', 'score': 0.78314424}]
5
{
"title": "在纪念马克思诞辰200周年大会上的讲话 - 中国政府网",
"url": "https://www.gov.cn/gongbao/content/2018/content_5294767.htm",
"content": "马克思是全世界无产阶级和劳动人民的革命导师,是马克思主义的主要创始人,是马克思主义政党的缔造者和国际共产主义的开创者,是近代以来最伟大的思想家。 两个世纪过去了,人",
"score": 0.8446273
}
tavily_answer: 卡尔·马克思是德国哲学家、经济学家和社会学家,马克思主义的创始人之一,著有《资本论》和《共产党宣言》。他在19世纪影响了全球社会和政治运动。