【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世紀影響了全球社會和政治運動。