10.6k Star!GPT Researcher:尖端AI搜索的深入研究者,告别偏见或破碎的信息、API集成进业务!

技术

Aitrainee | 公众号:AI进修生

🌟GPT研究员是一个开源AI智能体代理,专门进行各种任务的 全面综合在线 研究和设计,可确保卓越的性能、稳定性和闪电般的研究结果、API接口无缝集成进应用。

在这个数字化的时代 ,迅 速获取 可 靠信息比以往 更加重要。 不幸 的是,现有的搜索引擎往往无法直接提供清晰、客观的答案,用 户 不得不 在多个网站间反复点击、搜索。

对此,GPT Researcher出现了,这是一个用于加速在线研究的开源自主代理。以前我们介绍过AutoGPT,但是它常常因为需要手动干预而陷入无尽的循环,效率低下,信息跟踪也容易丢失,有时甚至出现错误信息。

此外,AutoGPT是同步执行的,它创建一个任务列表然后逐个执行,这意味着如果一个研究任务需要访问20个网站,每个站点耗时一分钟,整个任务至少需要20分钟。相比之下,GPT Researcher作为自主代理,可以同时抓取、过滤和整合来自20多个网络资源的信息,大大提升了研究效率并确保了信息的全面性和准确性。

GPT Researcher通过使用Python中的asyncio库,能够并行处理任务,显著提高研究速度。以下是一个示例代码:


      
      
          

        tasks 
        =
         
        [
        async\_browse
        (
        url
        ,
         query
        ,
         self
        .
        websocket
        )
         
        for
         url 
        in
         
        await
         new\_search\_urls
        ]
          

        responses 
        =
         
        await
         asyncio
        .
        gather
        (*
        tasks
        ,
         return\_exceptions
        =
        True
        )
      
    

在这个示例中,通过同时启动所有URL的查询,只有当所有任务完成后才会继续。官方测试显示,使用GPT Researcher的研究任务通常只需三分钟,比AutoGPT快85%。

这里推荐油管博主echohive的教程( GPT 研究员浏览科学文献 ) :

此外,如果你有兴趣构建自己的可访问互联网的LLM助手,可以参考这篇教程:

**如何构建一个可以访问互联网的OpenAI助手:https://docs.tavily.com/blog/building-openai-assistant

我们继续深入讲讲GPT Researcher:

为什么选择 GPT 研究员?

picture.image手动研究任务得出客观结论可能需要时间,有时甚至需要数周才能找到正确的资源和信息。

picture.image目前的法学硕士接受的是过去和过时信息的培训,产生幻觉的风险很大,这使得他们几乎与研究任务无关。

picture.image支持网络搜索的解决方案(例如 ChatGPT + Web 插件)仅考虑有限的资源和内容,在某些情况下会导致肤浅的结论或有偏见的答案。

picture.image仅使用精选的资源可能会在确定研究问题或任务的正确结论时产生偏差。

功能

📝 生成研究、大纲、资源和经验教训报告

📜 可以生成长而详细的研究报告(超过2K字)

🌐 每项研究汇总 20 多个网络资源,形成客观、事实的结论

🖥️ 包括易于使用的 Web 界面 (HTML/CSS/JS)

🔍 通过 JavaScript 支持抓取网络资源

📂 跟踪访问和使用的网络资源的跟踪和上下文

📄 将研究报告导出为 PDF、Word 等...

架构

主要思想是运行“计划者”和“执行者”代理,计划者生成研究问题,执行代理根据每个生成的研究问题寻找最相关的信息。最后,规划者过滤并汇总所有相关信息并创建研究报告。代理利用 gpt3.5-turbo 和 gpt-4-turbo(128K 上下文)来完成研究任务。

我曾写过免费获取API相关文章,你可以利用它们:

利用免登录 ChatGPT Web 提供的无限制免费GPT-3.5-Turbo API 服务

社区热议!54.8k Star开源项目,GPT-4Free : 让GPT4免费不是梦

6种免费使用Llama3 70B的方法及英伟达提供的免费API接口调用!

研究任务平均需要大约 3 分钟才能完成,成本约为 0.1 美元。

picture.image

▲ GPT Researcher架构

进一步来说:

  • 根据研究查询或任务创建特定于领域的代理。
  • 生成一组研究问题,这些问题共同形成对任何给定任务的客观意见。
  • 对于每个研究问题,触发一个 爬虫代理 来抓取在线资源以获取与给定任务相关的信息。
  • 对于每个抓取的资源,根据相关信息进行汇总并跟踪其来源。
  • 最后,过滤和汇总所有汇总来源并生成最终 研究报告

架构说完后,我们继续看看官方文档的一些有用介绍:

支持本地文档以及网络链接研究

picture.image

作为独立Agent集成

GPT Researcher 可以作为独立Agnet导包集成进自己的项目中

picture.image

API接口无缝集成进应用

官方最近更新了pip包,也就就是说你可以直接下载该库,直接 集成 到自己产品中去开发。哈哈,调包总是令人快乐~

以下是安装 GPT Researcher 的步骤:

1. 先决条件:

  • • 确保您的计算机上安装了 Python 3.10+ 💻

2. 安装 gpt-researcher:

  • • 从 PyPi 获取官方包。

          
          
              

            pip install gpt
            -
            researcher
          
        

3. 设置环境变量:

  • • 使用 OpenAI API 密钥创建 .env 文件或直接将其导出。

          
          
              

            export
             OPENAI\_API\_KEY
            ={
            Your
             
            OpenAI
             API 
            Key
             here
            }
              

            export
             TAVILY\_API\_KEY
            ={
            Your
             
            Tavily
             API 
            Key
             here
            }
          
        

4. 开始在您自己的代码库中使用 GPT Researcher

用法示例📝:


      
      
          

        from
         gpt\_researcher 
        import
         
        GPTResearcher
          

        import
         asyncio
          

          

        async
         
        def
         
        get\_report
        (
        
 query
 :
  
 
 str
 
 ,
  report\_type
 :
  
 
 str
 
 
        )
         
        ->
         
        str
        :
          

            researcher 
        =
         
        GPTResearcher
        (
        query
        ,
         report\_type
        )
          

            research\_result 
        =
         
        await
         researcher
        .
        conduct\_research
        ()
          

            report 
        =
         
        await
         researcher
        .
        write\_report
        ()
          

            
        return
         report
          

          

        if
         \_\_name\_\_ 
        ==
         
        "\_\_main\_\_"
        :
          

            query 
        =
         
        "what team may win the NBA finals?"
          

            report\_type 
        =
         
        "research\_report"
          

          

            report 
        =
         asyncio
        .
        run
        (
        get\_report
        (
        query
        ,
         report\_type
        ))
          

            
        print
        (
        report
        )
      
    

具体例子🌐:

  • • 示例 1:研究报告📚

          
          
              

            query 
            =
             
            "Latest developments in renewable energy technologies"
              

            report\_type 
            =
             
            "research\_report"
          
        
  • • 示例 2:资源报告📋

          
          
              

            query 
            =
             
            "List of top AI conferences in 2023"
              

            report\_type 
            =
             
            "resource\_report"
          
        
  • • 示例 3:报告大纲📝

          
          
              

            query 
            =
             
            "Outline for an article on the impact of AI in education"
              

            report\_type 
            =
             
            "outline\_report"
          
        

与 Web 框架集成🌍:

FastAPI示例:


      
      
          

        from
         fastapi 
        import
         
        FastAPI
          

        from
         gpt\_researcher 
        import
         
        GPTResearcher
          

        import
         asyncio
          

          

        app 
        =
         
        FastAPI
        ()
          

          

        
 @app
 .
 get
 (
 
 
 "/report/{report\_type}"
 
 
 )
 
          

        async
         
        def
         
        get\_report
        (
        
 query
 :
  
 
 str
 
 ,
  report\_type
 :
  
 
 str
 
 
        )
         
        ->
         
        dict
        :
          

            researcher 
        =
         
        GPTResearcher
        (
        query
        ,
         report\_type
        )
          

            research\_result 
        =
         
        await
         researcher
        .
        conduct\_research
        ()
          

            report 
        =
         
        await
         researcher
        .
        write\_report
        ()
          

            
        return
         
        {
        "report"
        :
         report
        }
      
    

Flask 示例:

先决条件:安装带有 async extra 的 Flask。


      
      
          

        pip install 
        'flask[async]'
      
    

      
      
          

        from
         flask 
        import
         
        Flask
        ,
         request
          

        from
         gpt\_researcher 
        import
         
        GPTResearcher
          

          

        app 
        =
         
        Flask
        (
        \_\_name\_\_
        )
          

          

        
 @app
 .
 route
 (
 
 
 '/report/<report\_type>'
 
 ,
  methods
 =[
 
 'GET'
 
 ]
 
 )
 
          

        async
         
        def
         
        get\_report
        (
        report\_type
        ):
          

            query 
        =
         request
        .
        args
        .
        get
        (
        'query'
        )
          

            researcher 
        =
         
        GPTResearcher
        (
        query
        ,
         report\_type
        )
          

            research\_result 
        =
         
        await
         researcher
        .
        conduct\_research
        ()
          

            report 
        =
         
        await
         researcher
        .
        write\_report
        ()
          

            
        return
         report
      
    

运行服务器:

Flask:


      
      
          

        flask run
      
    

FastAPI:


      
      
          

        uvicorn main
        :
        app 
        --
        reload
      
    

请求示例:


      
      
          

        curl 
        -
        X GET 
        "http://localhost:5000/report/research\_report?query=what team may win the nba finals?"
      
    

注意:上述代码片段仅为示例。您可以根据自己的要求进行自定义。

下面提供GPT Researcher官方的 文档介绍、相关资源、部署教程 等,进一步支撑你的行动,以提升本文的帮助力。

快速开始

步骤 0 - 安装 Python 3.11 或更高版本。参见此处 获取详细指南。

步骤 1 - 下载项目


      
      
          

        $ git 
        clone
         https
        ://
        github
        .
        com
        /
        assafelovic
        /
        gpt
        -
        researcher
        .
        git
          

        $ 
        cd
         gpt
        -
        researcher
      
    

步骤2 -安装依赖项


      
      
          

        $ pip install 
        -
        r requirements
        .
        txt
      
    

第 3 步 - 使用 OpenAI 密钥和 Tavily API 密钥创建 .env 文件,或直接导出该文件


      
      
          

        $ 
        export
         OPENAI\_API\_KEY
        ={
        Your
         
        OpenAI
         API 
        Key
         here
        }
      
    

      
      
          

        $ 
        export
         TAVILY\_API\_KEY
        ={
        Your
         
        Tavily
         API 
        Key
         here
        }
      
    
  • • LLM,我们推荐使用 OpenAI GPT,但您也可以使用 Langchain Adapter 支持的任何其他 LLM 模型(包括开源),只需在 config/config.py 中更改 llm 模型和提供者即可。请按照 这份指南 学习如何将 LLM 与 Langchain 集成。
  • 对于搜索引擎,我们推荐使用 Tavily Search API(已针对 LLM 进行优化) ,但您也可以选择其他搜索引擎,只需将 config/config.py 中的搜索提供程序更改为 "duckduckgo"、"googleAPI"、"googleSerp "或 "searx "即可。然后在 config.py 文件中添加相应的 env API 密钥。
  • 我们强烈建议使用 OpenAI GPT 模型和 Tavily Search API 以获得最佳性能。

第 4 步 - 使用 FastAPI 运行代理


      
      
          

        $ uvicorn main
        :
        app 
        --
        reload
      
    

第 5 步 - 在任何浏览器上访问 http://localhost:8000,享受研究乐趣!

参考链接:
[1] https://github.com/assafelovic/gpt-researcher

[2] https://docs.tavily.com/docs/gpt-researcher/getting-started

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

picture.image

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
边缘云打通大模型物理世界
《火山引擎边缘智能,打通大模型的物理世界》 张俊钦 | 火山引擎边缘智能资深研发工程师
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论