【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战

news2025/4/5 12:54:09

【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战

  • 1. 区别
      • 应用场景
  • 2. 代码使用
  • 3.代码执行效果

langchain_community.tools.tavily_search中,TavilyAnswerTavilySearchResults有以下区别和应用场景:

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世纪影响了全球社会和政治运动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS dom修改元素的style样式属性

1通过样式属性修改 第三种 toggle有就删除 没就加上

灭火器离位检测:智能视觉守护安全

利用视觉分析实现明火检测:技术、功能与应用 一、背景 清明节期间,兰州市连续发生多起因祭祖烧纸引发山火的警情,如七里河区魏岭乡赵某某等人上坟烧纸未妥善处理烛火引燃杂草,导致3人烧伤;七里河区彭家坪石板山村村民…

网络:华为数通HCIA学习:IP路由基础

华为HCIA学习 IP路由基础路由协议或路由种类以及对应路由的优先级按工作区域分类:按工作机制及算法分类:路由的优先级路由器选择最优路由的顺序是什么? 前言自治系统LAN和广播域路由选路IP路由表路由度量建立路由表最长匹配原则路由器转发数据包总结 IP…

多线程开发中List的使用

由于ArrayList在多线程高并发情况下是不安全的,因此要慎用,那么此时如果涉及到集合操作,应该怎么选: 方案一:Vector: 特点:通过给所有方法都用 synchronized 修饰从而保证线程安全, 缺点&…

使用 .NET 9 和 Azure 构建云原生应用程序:有什么新功能?

随着 .NET 9 推出一系列以云为中心的增强功能,开发人员拥有比以往更多的工具来在 Azure 上创建可扩展、高性能的云原生应用程序。让我们深入了解 .NET 9 中的一些出色功能,这些功能使构建、部署和优化云应用程序变得更加容易,并附有示例以帮助…

前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标防抖处理、mousemove、debounce()、事件停止触发、超时触发

文章目录 代码使用lodashjs库debounce函数做防抖处理(只有鼠标移动停止并超过一定时间,才会触发)手写防抖函数写法1写法2(注意addEventListener监听函数的第二个参数接收的是一个函数,需要构造一个匿名返回函数&#x…

开源守护,智护童年——幼儿园未成年行为与安全智能监控系统

在孩子成长的每一步,安全始终是第一位的。幼儿园作为孩子们探索世界的起点,其安全管理的重要性不言而喻。然而,哭闹、打闹、意外跌倒,甚至外部隐患如陌生人逗留、内部管理疏漏等问题,常常让传统人工监控捉襟见肘。家长…

WinForm真入门(5)——控件的基类Control

控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用,都离不开这些基本成员,尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…

《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】

我们在学习 linux 内核时,会涉及到很多 numa 的知识,那我们该如何在 qemu 中模拟这种情况,来配合我们的学习呢? 我们该如何模拟 如下的 numa 架构 Qemu 模拟 NUMA 架构 -M virt,gic-version3,virtualizationon,typevirt \ -cp…

【YOLO系列(V5-V12)通用数据集-工程用车检测数据集】

YOLO格式的工程车检测数据集,适用于YOLOv5-v11所有版本,可以用于本科毕设、发paper、做课设等等,有需要的在这里获取: 【YOLO系列(V5-V12)通用数据集-工程用车检测数据集】 【工程车类型检测数据集】共2655…

卫星智能化健康管理#卫星工程系列

伴随我国航天业飞速发展,积累了大量的卫星试验数据,如何从海量、多源、多模态的卫星试验数据中挖掘分析出内部规律和潜在价值,构建卫星装备系统的全生命周期试验数据知识体系显得尤为迫切。卫星故障传统的诊断方法局限在门限层面,…

Neo4j操作数据库(Cypher语法)

Neo4j数据库操作语法 使用的数据库版本 (终端查询) >neo4j --version 2025.03.0批量上传数据 UNWIND [{name: Alice, age: 30},{name: Bob, age: 25} ] AS person CREATE (p:Person) SET p.name = person.name, p.age = person.age RETURN p;查询结点总数 MATCH (n) RETU…

[GN] Python3基本数据类型 -- 与C的差异

文章目录 前言Python3的基本数据类型6个标准的数据类型NumbersStringListtupleSetsDictionaries Python运算符逻辑 运算符成员运算符身份运算符 Python3 数字Python3 序列序列切片序列相加序列相乘序列相关内置函数 Python3 列表访问列表的值更新列表删除列表元素拼接列表嵌套列…

MSF上线到CS工具中 实战方案(可执行方案)

目录 实际案例背景 步骤详解 1. 获取低权限 Meterpreter 会话 1.1 使用 Metasploit 获取会话 2. 提权到 SYSTEM 权限 2.1 使用 getsystem 自动提权 2.2 如果 getsystem 失败:使用令牌冒充 (incognito 模块) 3. 上线到 Cobalt Strike 3.1 生成 Cobalt Strik…

IntelliJ IDEA 2020~2024 创建SpringBoot项目编辑报错: 程序包org.springframework.boot不存在

目录 前奏解决结尾 前奏 哈!今天在处理我的SpringBoot项目时,突然遇到了一些让人摸不着头脑的错误提示: java: 程序包org.junit不存在 java: 程序包org.junit.runner不存在 java: 程序包org.springframework.boot.test.context不存在 java:…

基于DeepSeek、ChatGPT支持下的地质灾害风险评估、易发性分析、信息化建库及灾后重建

前言: 地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。在降水、地震等自然诱因的作用下,地质灾害在全球范围内频繁发生。我国不仅常见滑坡灾害,还…

Websoft9分享:在数字化转型中选择开源软件可能遇到的难题

引言:中小企业数字化转型的必由之路 全球94.57%的企业已采用开源软件(数据来源:OpenLogic 2024报告),开源生态估值达8.8万亿美元。中小企业通过开源软件构建EPR系统、企业官网、数据分析平台等,可节省80%软件采购成本。…

Windows修改hosts文件让向日癸软件联网

Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容:3.在hosts文件最后添…

2021 CCF CSP-S2.括号序列

题目 4091. 括号序列 算法标签: 区间 d p dp dp 思路 区间 d p dp dp添加维表示形态 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k], 对于每种形态考虑状态如何进行转移, 枚举的时候不能重复, 星号也要定义唯一的解析方式, 算法时间复杂度 O ( n 3 ) O(n ^ 3) O(n3) 代码 #…

Uni-app 项目 PDF 批注插件库在线版 API 示例教程

本文章介绍 Uni-app 项目中 PDF 批注插件库 ElasticPDF 在线版 API 示例教程,API 包含 ① 导出批注后PDF数据;② 导出纯批注 json 数据;③ 加载旧批注;④ 切换文档;⑤ 切换用户;⑥ 清空批注 等数据处理功能…