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

【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.mzph.cn/pingmian/76026.shtml

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

相关文章

【Java设计模式】第10章 外观模式讲解

10. 外观模式 10.1 外观模式讲解 定义:为子系统提供统一接口,简化调用。类型:结构型模式适用场景: 子系统复杂需简化调用分层系统需统一入口优点: 降低耦合符合迪米特法则(最少知道原则)缺点: 扩展子系统需修改外观类,违反开闭原则10.2 外观模式 Coding // 子系统:…

Dubbo的简单介绍

Dubbo的简单介绍 Dubbo 是一个高性能的 Java RPC 框架,最初由阿里巴巴开发,用于构建分布式服务。它主要用于提供服务间的通信,支持高效的远程调用和服务治理,常用于大规模分布式系统中。Dubbo 提供了以下几个核心功能&#xff1a…

每日一题(小白)数组娱乐篇17

对一个数组进行接收进行操作后输出。输入三个操作数abc,将数组下标a到b的数字加上c;输入四个操作数abcd,将下标c到d的数字复制到a到b,可以借用一个中间量数组实现;两个操作数ab,将数组下标a到b的数字加和输…

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI(Poor Obfuscation Implementation):它是 Apache 软件基金会的一个开源项目,为 Java 程序提供了读写 Microsoft Office 格式文件的功能,支持如 Excel、Word、PowerPoint 等多种文件格…

01-Redis-基础

1 redis诞生历程 redis的作者笔名叫做antirez,2008年的时候他做了一个记录网站访问情况的系统,比如每天有多少个用户,多少个页面被浏览,访客的IP、操作系统、浏览器、使用的搜索关键词等等(跟百度统计、CNZZ功能一样)。最开始存储…

在 Ubuntu 上离线安装 Prometheus 和 Grafana

在 Ubuntu 上离线安装 Prometheus 和 Grafana 的步骤如下: 一.安装验证 二.安装步骤 1.准备离线安装包 在一台可以访问互联网的机器上下载 Prometheus 和 Grafana 的二进制文件。 Prometheus 下载地址:Prometheus 官方下载页面Grafana 下载地址:Grafana 官方下载页面下载所…

mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载ESRI OpenStreetMap开放街景标准风…

Java 集合有序性与重复性总结及记忆技巧

Java 集合有序性与重复性总结及记忆技巧 一、集合分类速查表 集合类型是否有序是否允许重复记忆口诀ArrayList✅ 有序(插入顺序)✅ 可重复"数组列表,顺序记牢"LinkedList✅ 有序(插入顺序)✅ 可重复"…

记录学习的第二十三天

老样子,每日一题开胃。 我一开始还想着暴力解一下试试呢,结果不太行😂 接着两道动态规划。 这道题我本来是想用最长递增子序列来做的,不过实在是太麻烦了,实在做不下去了。 然后看了题解,发现可以倒着数。 …

MTK-Android12-13 屏幕永不休眠功能实现

MTK-Android12-13 屏幕永不休眠功能实现 文章目录 需求场景参考资料修改文件简要分析实现方案默认休眠时间设置 def_screen_off_timeout息屏时间添加永不休眠 screen_timeout_entries更新休眠时间 updateUserActivitySummaryLocked 总结 需求 屏幕永不休眠功能 备注&#xff…

Lua 中,`math.random` 的详细用法

在 Lua 中&#xff0c;math.random 是用于生成伪随机数的核心函数。以下是其详细用法、注意事项及常见问题的解决方案&#xff1a; Lua 中&#xff0c;math.random 的详细用法—目录 一、基础用法1. 生成随机浮点数&#xff08;0 ≤ x < 1&#xff09;2. 生成指定范围的随机…

HOW - React Error Catch 机制

目录 1. 错误边界&#xff08;Error Boundaries&#xff09;使用场景写法&#xff08;类组件方式&#xff09;&#xff1a;componentDidCatch 2. 事件处理器中的错误3. 异步函数中的错误&#xff08;如 fetch、Promise&#xff09;4. 全局未捕获错误&#xff08;适用于整个 Rea…

1.ElasticSearch-入门基础操作

一、介绍 The Elastic Stack 包含ElasticSearch、Kibana、Beats、LogStash 这就是所说的ELK 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES&#xff0c;ES是一个开源的高扩展的分布式全文搜索引擎,是…

通过扣子平台将数据写入飞书多维表格

目录 1.1 创建飞书开放平台应用 1.2 创建飞书多维表格 1.3 创建扣子平台插件 1.1 创建飞书开放平台应用 1.1.1 打开地址&#xff1a;飞书开放平台&#xff0c;点击创建应用 注&#xff1a;商店应用需要申请ISV资质&#xff0c;填写企业主体信息&#xff0c;个人的话&#x…

MYSQL数据库语法补充

一&#xff0c;DQL基础查询 DQL&#xff08;Data Query Language&#xff09;数据查询语言&#xff0c;可以单表查询&#xff0c;也可以多表查询 语法&#xff1a; select 查询结果 from 表名 where 条件&#xff1b; 特点&#xff1a; 查询结果可以是&#xff1a;表中的字段…

Redis到底能不能做主数据库?

张三拍案而起&#xff1a;“Redis 是缓存数据库&#xff0c;怎么能当主数据库用&#xff1f;简直是天方夜谭&#xff01;” 李四冷笑回应&#xff1a;“你没用过&#xff0c;凭什么说不行&#xff1f;我已经用 Redis 做主数据库好几年了&#xff0c;系统稳定得像铁板一块&…

flutter 项目结构目录以及pubspec.ymal等文件描述

在Flutter项目中&#xff0c;目录结构和pubspec.yaml文件是非常重要的组成部分&#xff0c;它们定义了项目的结构、依赖管理以及如何构建和运行项目。下面我将详细解释这些关键元素&#xff1a; 1. Flutter项目目录结构 Flutter项目的标准目录结构通常如下所示&#xff1a; …

CentOS 环境下 MySQL 数据库全部备份的操作指南

最近阿里云个人服务到期&#xff0c;因为是很久之前买的测试机器&#xff0c;配置较低&#xff0c;上面运行的有技术博客 和以往的测试项目&#xff0c;所以准备放弃掉。 需要备份下上面的表结构和数据、以及代码仓库。 下面是一个完整的 CentOS 环境下 MySQL 数据库全部备份…

ecplise 工具 没有Java EE Tools 选项

Java EE Tools 是将项目转换为web项目的重要的快捷键&#xff0c;如果进行web开发 那是不可或缺的 该工具是一个插件&#xff0c;可以作为插件安装到ecplise上 安装步骤如下&#xff1a; 找到help-->install new software 在弹出的页面中 work with中输入&#xff1a;Jun…

544 eff.c 1761 优化设计文档

1:性能分析 1.1性能对比 oneapi 与hygonGcc性能对比发现&#xff0c;544课题中的eff.c 1761循环处&#xff0c;oneapi 进行了循环向量化, gcc使用标量&#xff0c;循环源码前加 #pragma clang loop vectorize(disable) 找出oneapi在该循环处关闭和开启loop vect 的性能差距&a…