GPT Researcher:破解復雜研究的AI利器 原創
在現代研究環境中,處理如詳盡研究工作或學術論文撰寫等復雜任務對當前的大型語言模型(如ChatGPT)來說是一個挑戰。這些任務通常需要長時間的手動干預和多步驟操作,現有的AI工具往往無法在沒有人類幫助的情況下完成這些復雜任務。
GPT Researcher 受到 Plan-and-Solve 方法的啟發,提供了解決這一問題的方法。通過將復雜任務拆解為更小的子任務并并行執行,GPT Researcher 提高了研究的效率和準確性。它利用 大模型從多個在線資源中抓取和綜合信息,生成詳細研究的報告。其靈活的配置支持不同的大型語言模型和檢索器,使其能夠適應各種研究需求。
本文展示了如何通過一條提示詞,讓GPT Researcher 生成對應的研究報告。這展示了GPT Researcher 在自動化研究領域的巨大潛力,為未來的研究工作提供了新的思路和方法。
復雜任務處理:從頭CoT到Plan-And-Solve
在現代研究環境中,復雜任務如進行詳盡的研究工作或撰寫學術論文,是目前的大型語言模型(包括AI聊天助理如ChatGPT)難以一次性完成的。這些任務通常需要長時間的手動干預和多步驟的操作,而現有的AI工具往往無法在沒有人類幫助的情況下完整地執行這些復雜任務。然后,手動執行研究任務既費時又費力,往往需要數周才能找到合適的資源和信息。雖然,當前的大型語言模型已經非常強大了,但它們主要訓練于過去的數據,存在著信息過時和幻覺風險。此外,現有的啟用網絡搜索的解決方案通常只能訪問有限的資源,導致結論可能膚淺或有偏見。
為了應對這些挑戰,研究人員提出了鏈式思維(Chain of Thought, CoT)的思路。鏈式思維(Chain of Thought, CoT)是一種推理方法,旨在通過生成一系列中間步驟來逐步解決復雜問題,從而提高大型語言模型(LLMs)的解答能力。CoT 的核心理念是讓模型在回答復雜問題時,逐步生成中間推理步驟,每一步都為最終答案提供部分解答。這種方法通過分解問題,使模型能夠更清晰地理解并解決復雜的任務。
例如,假設我們要解決一個數學問題:“一個人走了3公里,又走了2公里,總共走了多少公里?”。通過CoT的方法,我們可以這樣進行:
- 理解問題:知道問題是關于總共走了多少公里。
- 分解步驟:把走的每段路程列出來。
- 逐步計算:先計算第一段3公里,再計算第二段2公里,然后把兩段路程加起來。
- 得到答案:3公里 + 2公里 = 5公里。
通過這種逐步分解的方法,模型能夠更準確地解決復雜的問題。這種拆解步驟的方式,傳統的CoT是通過示例的方式教給模型學習的。還是上面的例子,傳統CoT的做法是提供示例如下。
問題:一個人走了3公里,又走了2公里,總共走了多少公里?
步驟:
他先走了3公里。
然后又走了2公里。
把兩段距離加起來。
答案:3公里 + 2公里 = 5公里。
通過問題,步驟,答案的方式教給大模型如何處理復雜問題,也就是告訴大模型如何按照步驟進行拆解和執行復雜問題。隨著基座模型的參數量增加以及訓練數據集的激增,模型的能力越來越強,此時就出現了Zero-shot-CoT(Zero-shot Chain of Thought)。它是CoT 的一種變體,旨在無需任何示例的情況下,通過逐步推理提高LLMs的復雜問題解答能力。傳統的CoT 方法通常需要為每個任務提供一些示例,以幫助模型逐步解決問題。而Zero-shot-CoT 則通過輸入簡單的提示詞:“讓我們一步一步地思考”,引導模型生成多步驟的推理路徑,無需任何示例。
還是上面的例子,對于Zero-shot-CoT而言只需要輸入如下信息,然后得到結果:
初始提示:“一個人走了3公里,又走了2公里,總共走了多少公里?讓我們一步一步地思考。”
推理步驟:
首先,這個人走了3公里。
接著,他又走了2公里。
把這兩段距離加起來。
答案提取:因此,答案(阿拉伯數字)是5。
通過Zero-shot-CoT,模型能夠在沒有示例的情況下,通過“讓我們一步一步地思考”的提示,自行推理并解決問題。
盡管Zero-shot-CoT取得了成功,但它仍然存在三個主要缺陷,
- 計算錯誤:模型在推理過程中可能會產生計算錯誤。
- 缺失步驟錯誤:模型可能會遺漏一些必要的中間步驟。
- 語義誤解錯誤:模型可能會誤解問題的語義,導致不準確的答案。
為了解決Zero-shot-CoT的方法所存在的問題,研究人員又提出了Plan-and-Solve(PS)方法。PS提示由兩個部分組成:
- 計劃:首先制定計劃,將整個任務劃分為更小的子任務。
- 執行:然后根據計劃執行這些子任務。通過這種方法,PS提示能夠使LLMs明確地設計解決問題的計劃,并在預測最終答案之前生成中間推理過程。
了解GPT Researcher:從架構到流程
前面我們介紹了通過CoT的思路解決了負責任務的執行問題,同時也提出了由于CoT存在的問題,因此研究任務提出了Plan-and-Solve(PS)的方案。接下來,我們會基于Plan-and-Solve的思路來看看最佳實踐:GPT Researcher,它是一種自主代理,能夠生成詳細、真實和公正的研究報告,并提供專注于相關資源、大綱和課程的定制選項。受到最近的 Plan-and-Solve 和 RAG 論文的啟發,GPT Researcher 解決了速度、確定性和可靠性問題,通過并行代理工作(而不是同步操作)提供更穩定的性能和更高的速度。
當前的LLMs(大語言模型)面臨一些顯著的問題。首先,由于它們的訓練數據基于過去和過時的信息,導致模型在生成內容時常常出現幻覺,這使得它們難以勝任實時研究任務。此外,許多LLMs的輸出僅限于短令牌,這對于生成長篇、詳細的研究報告來說是不夠的。支持網絡搜索的解決方案(例如 ChatGPT + Web 插件)也存在局限性,因為它們僅能訪問有限的資源和內容,這可能導致結論膚淺或有偏見。依賴少數精選資源進行研究可能會在確定研究問題或任務的正確結論時產生偏差。
為了解決這些問題,GPT Researcher 采用了Plan-and-Solve的方法,通過先制定計劃將復雜任務分解為更小的子任務,然后并行執行這些子任務,從而提高了研究的效率和準確性。通過并行處理,GPT Researcher 能夠同時訪問和整合大量的網絡資源,生成客觀和詳盡的研究報告。這不僅解決了當前LLMs在信息時效性、輸出長度和資源有限性方面的不足,還減少了人為干預的需求,大大提升了研究任務的穩定性和速度。GPT Researcher 的這種創新方法展示了其在在線研究領域的巨大潛力,為未來的自動化研究提供了新的思路和方法。GPT Researcher 的核心特點包括:
- 計劃與執行模型:采用PS提示方法,將復雜任務劃分為子任務,并逐步執行。
- 并行處理:利用Python的asyncio庫,實現并行處理,顯著縮短研究時間。
- 多源信息聚合:從多個在線資源中抓取信息,并對其進行總結和過濾,生成客觀和事實性的研究報告。
- 高效報告生成:使用GPT-4模型生成詳細的研究報告,提供結構良好、信息豐富的內容。
在了解了GPT Researcher核心特點之后,我們來通過下圖了解一下它的架構。
- Task:整個研究任務是由一個特定的研究查詢或任務驅動的。這一步驟確定了需要解決的問題,并為后續的任務制定了明確的目標。
- Planner:“計劃者”代理的主要任務是生成研究問題。根據研究查詢,計劃者會制定一系列具體的研究問題,這些問題共同構成對任務的全面理解。計劃者確保研究問題覆蓋了任務的各個方面,從而為后續的信息搜集和分析打下基礎。
- Researcher:“執行者”代理負責根據計劃者生成的每個研究問題尋找最相關的信息。這個步驟中,執行者代理會觸發爬蟲代理,在網絡上抓取與每個研究問題相關的資源。執行者代理利用注入gpt3.5-turbo和gpt-4-turbo的大模型來處理和分析這些信息
- Query:在執行代理搜集信息的過程中,系統會不斷發出查詢請求。這些查詢是基于研究問題設計的,目的是在網絡上找到最相關和最新的信息資源。每個查詢都是一個精確的問題,確保獲取的信息是高質量且相關的。
Publisher:此時,“計劃者”會過濾并匯總所有相關信息,創建最終的研究報告。這個步驟包括對所有抓取到的資源進行總結,并跟蹤其來源,確保信息的可靠性和可追溯性。最終的研究報告由”發布者“進行發布,它整合了所有的總結信息,提供一個全面、詳盡且公正的研究結果。
GPT Researcher 架構
通過對GPT Researcher 的架構分析,我們將GPT Researcher 的工作流程整理如下:
- 生成研究問題提綱:形成對任何給定任務的客觀意見。
- 觸發爬蟲代理:對于每個研究問題,從網上資源中抓取相關信息。
- 總結和過濾:對抓取的資源進行總結和過濾,僅保留相關信息。
- 生成研究報告:聚合所有總結的資源,使用GPT-4生成最終的研究報告。
初探GPT Researcher:代碼結構與基本配置
前面介紹了GPT Researcher 的架構和工作流程,我們來看看它是如何使用的。我們可以通過GitHub 地址(https://github.com/assafelovic/gpt-researcher)訪問GPT Researcher,如下圖所示從去年底到現在這個項目已經有10K+star 了。
接著,我們會安裝GPT Researcher,確保系統中安裝 Python 3.11 或更高版本。請參考[這里](https://www.python.org/downloads/)獲取詳細的安裝指南。
通過如下命令,下載項目并導航到其目錄:
git clone https://github.com/assafelovic/gpt-researcher.git
cd gpt-researcher
下載GPT Researcher的源碼之后,可以通過下圖來看看它的內部結構。
- Backend 文件夾中的代碼文件用來處理GPT Researcher的后臺網絡請求,這里利用FastAPI 框架創建應用程序,它具有處理靜態文件、模板渲染和 WebSocket 連接的功能。
- Docs文件夾用來存放使用手冊以及GPT Researcher最新的Blog 文章。
- Examples文件夾提供了簡單的GPT Researcher例子。
- Frontend 文件夾包含 GPT Researcher前端界面的信息, 包括html、css、js 等文件。
- Gpt_researcher 文件夾存放核心代碼,包括參數配置、上下文管理、大模型管理、代理、函數、提示詞管理、記憶管理、網絡爬蟲工具以及搜索引擎工具等。
- Mulit_agents 用來支持多代理模式。
- Outputs 用來保存輸出的研究文檔,目前GPT Researcher支持研究結果以word、MD等多種文檔的方式下載。
- Main.py 是 GPT Researcher Web 應用的入口文件,我們通過它啟動整個應用。
- Requirements.txt 用來存放依賴的組件庫,然后需要結合PIP 命令對其中包含的組件進行安裝,從而保證GPT Researcher的運行。
由于GPT Researcher 需要借助大模型以及網絡搜索技術完成研究工作,所以需要獲取兩者的訪問權限。因此我們需要對大模型和搜索引擎的API密鑰進行設置,可以使用兩種方法設置API密鑰:直接導出或將其存儲在 .env 文件中。這里的API 密鑰是用來訪問大模型(OpenAI)和搜索引擎(Tavily Search API)的,需要通過API密鑰的方式獲取二者的訪問權限。
可以通過如下命令完成:
export OPENAI_API_KEY={Your OpenAI API Key here}
export TAVILY_API_KEY={Your Tavily API Key here}
同時,還可以通過配置文件完成密鑰的配置,在gpt-researcher目錄中找到.env 文件,打開該文件進行API 密鑰的設置。
并輸入以下密鑰:
OPENAI_API_KEY={Your OpenAI API Key here}
TAVILY_API_KEY={Your Tavily API Key here}
執行 GPT Researcher:研究報告與成果解析
在完成了下載和配置工作之后,我們需要運行GPT Researcher 看看它能否幫助我們解決復雜的研究工作。
在執行之前需要通過如下命令安裝依賴項,也就是依賴的組件庫。
pip install -r requirements.txt
接著,通過命令行使用 FastAPI 運行代理,啟動 GPT Researcher 的Web 應用。
uvicorn main:app --reload
此時,控制臺會輸出如下內容:
NFO: Will watch for changes in these directories: ['/Users/cuihao/Doc/39 GPT/zhibo code/gpt-researcher']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [15959] using WatchFiles
INFO: Started server process [15961]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 127.0.0.1:51267 "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:51279 "GET /static/gptr-logo.png HTTP/1.1" 200 OK
INFO: 127.0.0.1:51267 "GET /site/styles.css HTTP/1.1" 200 OK
INFO: 127.0.0.1:51279 "GET /site/scripts.js HTTP/1.1" 200 OK
INFO: 127.0.0.1:51279 "GET /static/favicon.ico HTTP/1.1" 200 OK
說明GPT Researcher 的Web 應用已經啟動,并且告訴使用者可以通過http://127.0.0.1:8000的地址訪問GPT Researcher。
啟動之后會看到如下圖的界面,即GPT Researcher 的宣傳語。
接著會看到GPT Researcher 的主界面,如下圖所示:
在 “What would you like me to research next? ”下方的文本框,可以輸入你要研究的內容,也就是提示詞信息。
在”What type of report would you like me to generate?”下方會提供一個下拉框,可以選擇研究報告的類型,目前提供三類:
- Summary Short and fast (~2 min):摘要類型,特點是內容較少但是生成速度較快。
- Detailed In depth and longer (~5 min):詳細類型,更加有深度,內容比較多,生成速度會慢一點。
- Resource Report:原始報告,將提供所有網絡搜索的內容以供參考。
在”Agent Output”的部分會看到研究的計劃和任務的執行情況。“Research Report” 中會生成最終的生成報告。
介紹完GPT Researcher的整體布局之后,我們來實測一下它的研究能力,如下圖所示,輸入“ai agent 在企業中的應用”作為我們的研究主題,并且選擇Summary類型作為報告生成方式。
點擊“Research”按鈕之后開始執行研究任務,同時Agent Output輸出如下圖所示內容。
Thinking about research questions for the task...
GPT Researcher在生成研究問題,以便為特定任務形成客觀和全面的研究框架。
Starting the research task for 'ai agent 在企業中的應用'...
GPT Researcher開始執行具體的研究任務,基于用戶提供的主題 "ai agent 在企業中的應用"。
Business Analyst Agent
GPT Researcher采用了一個特定的“商業分析代理”來處理研究任務。
I will conduct my research based on the following queries: ['ai agent 在企業中的應用 2024', 'ai agent 在企業中的應用 中國 2024', 'ai agent 在企業中的應用 案例分析 2024', 'ai agent 在企業中的應用']...
GPT Researcher列出了將要使用的具體查詢。這些查詢反映了研究任務的多維度,包括時間、地點和具體應用案例。
Running research for 'ai agent 在企業中的應用 2024'...
顯示GPT Researcher實際開始對指定查詢執行研究任務。
執行過程中如果切換到控制臺,從命令行的輸出來看,發現如下內容。由于內容較多,我們截取其中一部分給大家解釋。
??Starting the research task for 'ai agent 在企業中的應用'...
??https://api.chatanywhere.tech/v1??
?? Business Analyst Agent
??https://api.chatanywhere.tech/v1??
??I will conduct my research based on the following queries: ['ai agent 在企業中的應用 2024', 'ai agent 在企業中的應用 中國 2024', 'ai agent 在企業中的應用 案例分析 2024', 'ai agent 在企業中的應用']...
??Running research for 'ai agent 在企業中的應用 2024'...
? Added source url to research: https://zhuanlan.zhihu.com/p/675595267
? Added source url to research: https://www.technologyreview.com/2024/05/14/1092407/googles-astra-is-its-first-ai-for-everything-agent/
? Added source url to research: https://zhuanlan.zhihu.com/p/676245844
? Added source url to research: https://www.infoq.cn/article/bqmoGzkvE4GwWsvruqHp
? Added source url to research: https://www.thepaper.cn/newsDetail_forward_27225624
?? Researching for relevant information...
??Getting relevant content based on query: ai agent 在企業中的應用 2024...
?? Source: https://www.thepaper.cn/newsDetail_forward_27225624
Title:
Content: 登錄
《2024年AI Agent行業報告》——大模型時代的“APP”,探索新一代人機交互及協作范式
原創 劉瑤 甲子光年
60頁報告,和100+場景梳理,可能依然趕不上飛速發展的AI Agent!
隨著大型模型在各行各業的廣泛應用,基于大型模型的人工智能體(AI Agent)迎來了快速發展的階段。研究AI Agent是人類不斷接近人工通用智能(AGI)的探索之一。知名AI Agent項目AutoGPT已經在GitHub的星星數已經達到 140,000 顆,進一步反映了用戶對于AI Agents 項目的廣泛興趣和支持。
隨著AI Agent變得越來越易用和高效,"Agent+"的產品越來越多,未來AI Agent有望成為AI應用層的基本架構,涵蓋toC和toB產品等不同領域。
因此甲子光年推出《2024年AI Agent行業報告》,探討AI Agent在概念變化,學術及商業界的嘗試與探索,對各行業、各場景對于AIGC技術的需求進行調研及梳理,展示AI Agent領域近期的突破及商業實踐范式,對未來行業的趨勢進行研判。
原標題:《《2024年AI Agent行業報告》——大模型時代的“APP”,探索新一代人機交互及協作范式|甲子光年智庫》
<省略部分內容……>
這里的輸出結果更加詳細,方便我們了解GPT Researcher的工作流程,大致包括如下5個步驟:
啟動研究任務:
開始研究主題為“ai agent 在企業中的應用”的任務。
選擇和執行商業分析代理:
選擇了“Business Analyst Agent”作為執行任務的代理。
生成查詢:
生成了一系列研究查詢,此時會調用搜索引擎,查詢內容包括:
- 'ai agent 在企業中的應用 2024'
- 'ai agent 在企業中的應用 中國 2024'
- 'ai agent 在企業中的應用 案例分析 2024'
- 'ai agent 在企業中的應用'
執行具體查詢:
對每個查詢分別進行研究,并添加相關的資源URL,例如:
https://zhuanlan.zhihu.com/p/675595267 等。
獲取相關內容:
從添加的資源URL中獲取相關內容,并展示部分內容摘要。例如:
《2024年AI Agent行業報告》:探討AI Agent在各行各業的應用、概念變化、學術及商業界的嘗試與探索。
上面這些研究、搜索、匯總工作都是由GPT Researcher 自動完成不需要人工干預,大約2分鐘之后整個過程執行完畢。此時,我們可以通過選擇下載報告文件類型的方式選擇要下載的文件格式。這里我選擇了Word 和MD的文件格式進行下載,如下圖所示,與此同時在源代碼目錄下outputs 目錄中也會生成對應的文件。
我們打開Word 文件,查看其內容如下圖所示。左邊顯示了研究報告的目錄結構,包括:基本概念,應用場景,技術架構,優勢和挑戰等,看上去還比較全面。
在研究報告的最后,還提供了參考文獻的鏈接,如下圖所示,這些文獻都是來自于互聯網搜索的結果。
集成GPT Researcher:從應用到擴展
通過執行GPT Researcher讓其為我們研究“ai agent 在企業中的應用”,這個操作過程是通過GPT Researcher提供的Web 應用界面完成的。如果我們需要將GPT Researcher的能力集成到自己的項目中,我們就需要將 GPTResearcher 引入到現有的 Python 項目中。
大致步驟如下,首先需要導入相關模塊并定義全局常量,如研究查詢和報告類型。然后,通過定義異步函數來初始化GPT Researcher 實例并執行研究任務。最后,運行主函數以生成和打印研究報告。
我們將上述擴展過程整理成如下代碼:
from gpt_researcher import GPTResearcher
import asyncio
QUERY = "<填寫需要研究的內容>"
REPORT_TYPE = "research_report"
async def fetch_report(query, report_type):
researcher = GPTResearcher(query=query, report_type=report_type, config_path=None)
await researcher.conduct_research()
report = await researcher.write_report()
return report
async def generate_research_report():
report = await fetch_report(QUERY, REPORT_TYPE)
print(report)
if __name__ == "__main__":
asyncio.run(generate_research_report())
代碼內容主要使用GPT Researcher調用研究任務的計劃、執行、搜索、總結的能力,詳細代碼解釋如下:
(1) 導入模塊
from gpt_researcher import GPTResearcher
import asyncio
導入了自定義模塊 gpt_researcher 中的 GPTResearcher 類,用于后續研究報告的生成。同時導入了 asyncio 模塊,用于支持異步編程。
(2) 定義全局常量
QUERY = "<填寫需要研究的內容>"
REPORT_TYPE = "research_report"
定義了兩個全局常量:QUERY 保存查詢問題,REPORT_TYPE 保存報告類型。
(3) 異步函數 fetch_report
async def fetch_report(query, report_type):
researcher = GPTResearcher(query=query, report_type=report_type, config_path=None)
await researcher.conduct_research()
report = await researcher.write_report()
return report
定義了一個名為 fetch_report 的異步函數,用于根據給定的查詢和報告類型獲取研究報告。
- 創建 GPTResearcher 實例,傳入查詢和報告類型。
- 調用 conduct_research 方法執行研究。
- 調用 write_report 方法生成報告并返回。
(4) 異步函數 generate_research_report
async def generate_research_report():
report = await fetch_report(QUERY, REPORT_TYPE)
print(report)
定義了一個名為 generate_research_report 的異步函數,用于執行生成研究報告的主要邏輯。調用 fetch_report 函數獲取研究報告。打印生成的報告。
(5) 主程序入口
if __name__ == "__main__":
asyncio.run(generate_research_report())
在腳本作為主程序運行時,調用 asyncio.run 方法執行 generate_research_report 函數,啟動異步任務并生成報告。
整體而言這段代碼,使用異步編程技術,通過 GPTResearcher 類生成關于指定查詢的研究報告,并在主程序中執行生成并打印結果。
定制GPT Researcher:從配置到應用
我們不僅可以將GPT Researcher集成應用中,還可以對大模型,搜索引擎等信息進行定制。在源代碼目錄下面的gpt_researcher/config目錄下面,存在配置文件 config.py,文件中描述了所有可以配置的環境變量。基于這些環境變量,你可以根據具體需求靈活定制 GPT Researcher。包括選擇不同的搜索引擎、嵌入提供商和大語言模型提供商,以確保獲得最佳的研究結果。而這些配置參數設置在.env 文件中保存。說白了,就是config.py 文件中定義配置的信息,具體的配置在.env 中描述。
config.py 文件中的配置類定義如下:
def __init__(self, config_file: str = None):
"""Initialize the config class."""
self.config_file = os.path.expanduser(config_file) if config_file else os.getenv('CONFIG_FILE')
self.retriever = os.getenv('RETRIEVER', "tavily")
self.embedding_provider = os.getenv('EMBEDDING_PROVIDER', 'openai')
self.llm_provider = os.getenv('LLM_PROVIDER', "openai")
self.fast_llm_model = os.getenv('FAST_LLM_MODEL', "gpt-3.5-turbo-16k")
self.smart_llm_model = os.getenv('SMART_LLM_MODEL', "gpt-4o")
self.fast_token_limit = int(os.getenv('FAST_TOKEN_LIMIT', 2000))
self.smart_token_limit = int(os.getenv('SMART_TOKEN_LIMIT', 4000))
self.browse_chunk_max_length = int(os.getenv('BROWSE_CHUNK_MAX_LENGTH', 8192))
self.summary_token_limit = int(os.getenv('SUMMARY_TOKEN_LIMIT', 700))
self.temperature = float(os.getenv('TEMPERATURE', 0.55))
self.user_agent = os.getenv('USER_AGENT', "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0")
self.max_search_results_per_query = int(os.getenv('MAX_SEARCH_RESULTS_PER_QUERY', 5))
self.memory_backend = os.getenv('MEMORY_BACKEND', "local")
self.total_words = int(os.getenv('TOTAL_WORDS', 800))
self.report_format = os.getenv('REPORT_FORMAT', "APA")
self.max_iterations = int(os.getenv('MAX_ITERATIONS', 3))
self.agent_role = os.getenv('AGENT_ROLE', None)
self.scraper = os.getenv("SCRAPER", "bs")
self.max_subtopics = os.getenv("MAX_SUBTOPICS", 3)
self.load_config_file()
def load_config_file(self) -> None:
"""Load the config file."""
if self.config_file is None:
return None
with open(self.config_file, "r") as f:
config = json.load(f)
for key, value in config.items():
setattr(self, key.lower(), value)
由于配置參數內容比較多,這里我們挑選幾個經常用的配置給大家介紹。這些配置參數可以在 .env 文件中設置,并在 Config 類初始化時加載。以下是主要配置選項的介紹:
RETRIEVER:用于檢索資源的網絡搜索引擎。默認值為 tavily,可選項包括 duckduckgo、bing、google、serper、searx。通過設置 RETRIEVER 環境變量,可以選擇不同的搜索引擎。例如,在.env 中使用 Bing 搜索引擎:
RETRIEVER=bing
EMBEDDING_PROVIDER:嵌入模型的提供商。默認值為 openai,可選項包括 ollama、huggingface、azureopenai、custom。可以通過設置 EMBEDDING_PROVIDER 環境變量來選擇不同的提供商:
EMBEDDING_PROVIDER=huggingface
LLM_PROVIDER:大語言模型(LLM)的提供商。默認值為 openai,可選項包括 google、ollama、groq 等。可以通過設置 LLM_PROVIDER 環境變量選擇不同的 LLM 提供商:
LLM_PROVIDER= openai
FAST_LLM_MODEL:用于快速 LLM 操作(如摘要)的模型名稱。默認值為 gpt-3.5-turbo-16k。可以通過設置 FAST_LLM_MODEL 環境變量調整此模型:
FAST_LLM_MODEL=gpt-3.5-turbo-16k
SMART_LLM_MODEL:用于復雜操作(如生成研究報告和推理)的模型名稱。默認值為 gpt-4o。可以通過設置 SMART_LLM_MODEL 環境變量來選擇合適的模型:
SMART_LLM_MODEL=gpt-4o
總結
GPT Researcher 在自動化研究領域中展示了顯著的進步,解決了傳統大型語言模型的局限性。通過采用 Plan-and-Solve 方法,GPT Researcher 能夠高效處理以前需要大量人力的復雜任務。它能夠拆解任務、進行并行處理,并從多個來源生成詳細的報告,確保高準確性和客觀性。此外,其靈活的配置使用戶可以根據具體的研究需求對其進行定制,增強了其在各種領域的實用性。隨著AI技術的不斷發展,像GPT Researcher這樣的工具將在簡化研究過程方面發揮關鍵作用,使高質量的信息變得更加易于獲取,并減少完成綜合研究所需的時間和精力。
參考
??https://ar5iv.labs.arxiv.org/html/2305.04091??
作者介紹
崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。
