草庐IT

爆款来袭!刷屏的Auto-GPT与ChatGPT区别,GPT成为AI领域最受关注的技术,你还在等什么?(狂飙 啊。。。Github 80k star了)

玄明Hanko 2023-10-12 原文

最近全网火爆刷屏的热门词auto-gpt,在全网站频频出现:

"ChatGPT 过时了,Auto-GPT才是未来"

"它所具备的能力主打的就是一个“自主”,完全不用人类插手的那种!"

到底什么是auto-gpt?

1、Auto-GPT和ChatGPT有什么区别

Torantulino/Auto-GPT和ChatGPT都是基于GPT模型的神经网络模型,但它们之间有一些本质上的区别:

  1. 目标不同:Auto-GPT的目标是使用自动化搜索算法寻找最优的预训练神经网络结构,以提高语言建模任务的性能。而ChatGPT的目标是针对聊天场景进行微调,从而生成更加自然流畅的对话。
  2. 数据集不同:Auto-GPT使用了大量的通用文本语料库来进行预训练,而ChatGPT则使用了专门针对聊天对话收集的语料库来进行微调训练。
  3. 超参数设置不同:Auto-GPT使用了较大的模型规模和更加复杂的搜索算法,需要更多的计算资源和时间来进行训练。而ChatGPT的模型规模相对较小,可以在一般的计算机上进行训练。
  4. 开发者不同:Torantulino/Auto-GPT是由社区开发的Python包,而ChatGPT是由OpenAI开发的神经网络模型。

因此,Torantulino/Auto-GPT和ChatGPT虽然都是基于GPT模型的变体,但它们的应用场景、数据集、训练方法和超参数等方面有很大差异,需要根据具体需求来选择合适的模型。

总的来说

就是chatgpt是聊天形式的AI,auto-gpt是自主形式(多了自动做出推理、计划和执行)的AI。你可以给定一个角色及目标

给定好后,它会定一个计划出来

然后调用google查询

分析出结果

例如一位网友就要求AutoGPT开发一个网站,结果不到3分钟,AI自己就用React和Tailwind CSS“唰唰唰”地搞定了。

2、github相关项目

4月13日消息,近日,代码托管平台GitHub上线了一个新的基于GPT-4的开源应用项目AutoGPT,凭借超51k的Star数在开发者圈爆火。

项目源代码地址:

github.com/Torantulino…

3、搭建

我们来体验一下auto-gpt的搭建吧

要求:

  • Python 3.8或更高版本
  • OpenAI API密钥

安装步骤

要安装Auto-GPT,请执行以下步骤:

  1. 确保你有以上所有的要求,如果没有,安装他们。

  2. 克隆存储库: 在这一步中,你需要安装Git,但是你可以点击页面顶部的按钮下载zip文件 ☝️

    git clone github.com/Torantulino…

  3. 导航到项目目录:(Type你的目标是在CMD窗口中导航到你刚刚下载的存储库)

    cd Auto-GPT

  4. 安装所需的依赖项:

    pip install -r requirements.txt

  5. 将 .env.template重命名为.env并填写OPENAI_API_KEY。如果您计划使用语音模式,请同时填写ELEVEN_LABS_API_KEY。

  • 从以下地址获取OpenAI API密钥:https://platform.openai.com/account/api-keys.

    #.env.template .env为隐藏文件,ll ls看不到,不过它存在 cp .env.template .env

然后把自己的openai key填上去,保存。

  1. 启动,在 main.py 终端中运行Python脚本:

    python scripts/main.py

此时就安装完成了可以体验一下了:

开始会让你输入外名称和角色,随便整个就好,然后就出现Input:让你输入了

输入问题后就会出现Thinking...

上面就是它的回答了。

如果安装后,启动报这个错:

Low priority: ARGUMENTS = 'dict' object has no attribute 'replace' :) #1085

可以在代码main.py的第372行(不同版本的代码行数有差别),加上以下代码,注意python代码的**缩进。**保存重新启动就可以了。

try:
    json.loads(assistant_reply)
except ValueError as e:
    if assistant_reply.count('{') == assistant_reply.count('}') == 0:
        # remove " and '
        assistant_reply = assistant_reply.replace('"', '').replace("'", '')
        assistant_reply = '{' \
        '"thoughts": {' \
        '"text": "' + assistant_reply + '",' \
        '"reasoning": "",' \
        '"plan": "",' \
        '"criticism": "",' \
        '"speak": ""' \
        '},' \
        '"command": {' \
        '"name": "do_nothing", "args": {}' \
        '}' \
        '}'
    elif assistant_reply.count('{') == assistant_reply.count('}'):
        # remove everything before the first { and after the last }
        assistant_reply = assistant_reply[assistant_reply.find('{'):assistant_reply.rfind('}') + 1]
    else:
        while assistant_reply.count('{') != assistant_reply.count('}'):
            if assistant_reply.count('{') > assistant_reply.count('}'):
                # add a } to the end
                assistant_reply = assistant_reply + '}'
            else:
                # add a { to the beginning
                assistant_reply = '{' + assistant_reply
复制代码

如果行数不准确大家可以搜索关键词

“# Print Assistant thoughts”加在它上面就可以了,最后效果类似蓝色框起来的代码。也就是加在这行代码上面

4、其它问题

上面说了一大堆,已经体验了下auto-gpt。那auto-gpt说的gpt-4,

我们到底用的是gpt-3还是gpt-4呢?

可以发现我们用的openai key还是gpt-3的,那如何申请gpt-4呢?网上有2种方式,一种是充gpt plus会员,另一种是申请gpt-4 api waitlist。

p.s.网上有人说要先成为plus才能申请waitlist,不过查了一些资料好像没这要求,只是说plus要使用gpt4 api也要申请waitlist,反正先申请试试。。。。


最后

如果我的文章对你有帮助欢迎点赞+关注!!!

有关爆款来袭!刷屏的Auto-GPT与ChatGPT区别,GPT成为AI领域最受关注的技术,你还在等什么?(狂飙 啊。。。Github 80k star了)的更多相关文章

  1. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

    请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

  2. ruby-on-rails - `a ||= b` 和 `a = b if a.nil 之间的区别? - 2

    我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行

  3. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  4. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  7. spring.profiles.active和spring.profiles.include的使用及区别说明 - 2

    转自:spring.profiles.active和spring.profiles.include的使用及区别说明下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息如:jdbc地址、ip、端口等此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常spring.profiles.active属性例:配置文件,可使用以下方式定义application-${profile}.properties开发环境配置文件:application-dev

  8. ruby - 这两段代码有什么区别? - 2

    打印1:defsum(i)i=i+[2]end$x=[1]sum($x)print$x打印12:defsum(i)i.push(2)end$x=[1]sum($x)print$x后者是修改全局变量$x。为什么它在第二个例子中被修改而不是在第一个例子中?类Array的任何方法(不仅是push)都会发生这种情况吗? 最佳答案 变量范围在这里无关紧要。在第一段代码中,您仅使用赋值运算符=为变量i赋值,而在第二段代码中,您正在修改$x(也称为i)使用破坏性方法push。赋值从不修改任何对象。它只是提供一个名称来引用一个对象。方法要么是破坏性

  9. ruby - Ruby 中 .next 和 .succ 的区别 - 2

    Ruby中的Fixnum方法.next和.succ有什么区别?看起来它的工作原理是一样的:1.next=>21.succ=>2如果有什么不同,为什么有两种方法做同样的事情? 最佳答案 它们是等价的。Fixnum#succ只是Fixnum#next的同义词。他们甚至在thereferencemanual中共享同一block. 关于ruby-Ruby中.next和.succ的区别,我们在StackOverflow上找到一个类似的问题: https://stacko

  10. ruby - 在参数为 `yield self` 的方法中使用 `&block` 和在没有参数 `yield self` 的方法中使用 `&block` 有什么区别吗? - 2

    我明白了defa(&block)block.call(self)end和defa()yieldselfend导致相同的结果,如果我假设有这样一个blocka{}。我的问题是-因为我偶然发现了一些这样的代码,它是否有任何区别或者是否有任何优势(如果我不使用变量/引用block):defa(&block)yieldselfend这是一个我不理解&block用法的具体案例:defrule(code,name,&block)@rules=[]if@rules.nil?@rules 最佳答案 我能想到的唯一优点就是自省(introspecti

随机推荐