爆火的Auto-GPT:实战及运行体验

news2024/12/28 18:31:29

Auto-GPT可以说是目前AI应用方向最火爆的项目了,自从3月份上线以来,一个月疯狂拦下将近7万star(截至本文写稿时69.5k)。它的目的是探索诸如GPT-4这样的大语言模型自主完成任务的能力。业界也有一些大佬出来表示这个项目真的很有趣。

这么疯狂的实验,咱也不能闲着……于是花了一个下午搭建了一下运行环境,记录一下中间踩过的坑。文章先介绍一下安装流程,再简单说一下使用体验。

项目地址:https://github.com/Significant-Gravitas/Auto-GPT

安装流程

0. 注意事项

  • 目前暂时没有使用elevenlabs提供的语音输入,未来会继续尝试+更新;
  • 目前暂时没有使用pinecone database(因为要排队),等排到了会尝试并在这里更新;
  • 版本:0.2.0

1. 系统

带terminal的操作系统即可。推荐使用带有X display的系统,安装起来更方便。云端VM要装很多东西,debug的流程很长。Mac、Windows都可以。
笔者恰好发现Google Compute Engine目前正在beta测试c3类型的VM,一个月只要1刀,等于是白嫖了,所以设置了一个VM,也正好可以踩一遍所有的坑。

2. 安装过程

2.1 clone项目

https://github.com/Significant-Gravitas/Auto-GPT.git
cd Auto-GPT

2.2 准备OpenAI API key

去到https://platform.openai.com/account/api-keys,生成一个新的API key。记得复制到记事本里,因为关闭了页面就看不到了。
在这里插入图片描述
同时,需要开启账户的付款机制。去到billing菜单,然后点击“set up paid account”,然后输入付款的银行卡信息。
在这里插入图片描述

2.3 设置python环境

笔者直接采用miniconda创建了运行环境,免得扰乱系统环境。建议采用python 3.10,因为issues里面有人提及3.8以下的版本会出错。

conda create -n autoGPT python=3.10

执行完之后开始安装auto-GPT的依赖库:

conda activate autoGPT
pip install -r requirements.txt

2.4 设置运行时配置

将名字为.env.template的文件重命名为.env,然后执行以下动作:

  1. 把刚才保存下来的OpenAI api key粘贴到OPENAI_API_KEY项中;
  2. 设置EXECUTE_LOCAL_COMMANDS=True。这个是为了让程序运行时能够执行一些本地操作,比如写入文件等。如果不希望程序执行,可以保留False。
    设置完之后的.env文件大致长这样:
    在这里插入图片描述
    到这里,安装过程就结束了,可以开始运行:
python -m autogpt

然后按照terminal里面的输出一步步执行即可。Auto-GPT是基于多轮会话的,也就是说给定一个目标,AI通过调用chatGPT api自我生成一连串问题、问题答案和执行方案。下图为笔者运行的一轮输出:
在这里插入图片描述

3. 安装时遇到的问题

3.1 Chromedriver 无法启动

因为使用的是cloud VM,很多系统库都没有,所以程序在执行COMMAND=browse_website的时候首先遇到了chromedriver无法链接到两个库:libnss3.so和libxcb.so.1。通过以下指令解决:

sudo apt-get install libnss3 libnss3-dev
sudo apt-get install libxcb1-dev

3.2 找不到chrome binary

chromedriver当程序运行的时候,如果没有找到,是会给系统自动安装的,但chrome浏览器则不会安装(应该仅发生在VM上,因为如果是桌面系统那多半都安装了chrome浏览器)。
安装chrome浏览器:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

默认的可执行路径为/usr/bin/google-chrome
除此之外,因为没有X display,chrome直接执行会crash。需要定位到项目中名为web.py文件,增加两个启动chrome时候的选项:
在这里插入图片描述

这样,程序就能够无障碍地浏览网络、执行搜索了。

4. 初步使用体验

很有意思的项目,个人认为是下一步AI应用值得发展的一个方向。不过在使用过程中,发现目标不能定得太大,比如“挣它一个亿”这样的目标,AI执行起来就比较困难(尤其是在没有pinecone db的支持下,长期记忆显得不那么稳定),需要通过更多轮的对话才有可能得出一个相对可行的解决方案。

当然,笔者也只是粗粗试了一下,很多体验都比较浅,暂时不能给出全面的感受。后续会继续在这里更新一下语音和pinecone加持后的使用体验,尝试不一样的使用目标等。会及时更新。

2023年04月15日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417106.html

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

相关文章

pnpm与monorepo架构

本文根据b站up小满zs教程记录 软硬连接介绍 在cmd环境下输入mklink 创建链接需要开启管理员模式 软连接 # mklink 要创建的连接名称 源文件 mklink ruan.js ying.js硬链接 共享一个内存地址。 # mklink 要创建的连接名称 源文件 mklink /H ying.js ying.jspn…

工程项目管理系统源码-简洁+好用+全面-工程项目管理

​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包企…

STL : 单向链表 Forward_list 与 双向链表 List

目录 Forward_list Member functions List Elements access Modifiers Operations Observes Forward_list #include using namespace std; 单链表:数据的存储位置是分散的、随机的,整个链表的数据的线性关系通过指针来维持; 擅长…

【LeetCode 训练营 3,5】无重复字符的最长子串+最长回文子串

💌 博客内容:LeetCode 训练营 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这…

架构重构的技巧

1 代码重构 定义 对软件代码做任何改动以增加可读性或者简化结构而不影响输出结果。 目的 增加可读性、增加可维护性、可扩展性 3 关键点 不影响输出不修正错误不增加新的功能性 代码重构时,发现有个功能实现逻辑不合理,可直接修改吗?…

网络安全-JDBC反序列化漏洞与RCE

目录环境Black Hat Europe 2019漏洞原理攻击手法mysql-connector-java的分析Mysql协议抓包分析Mysql服务器docker启动抓包&&分析Fake Mysql Server搭建Java反序列化工具ysoserial使用fnmsd师傅的MySQL_Fake_Server使用Y4tacker师傅的脚本JDBC代码项目架构代码复现参考环…

Python爬虫之读取数据库中的数据

之前几篇我们一直在研究如何从网站上快速、方便的获取数据,并将获取到的数据存储在数据库中。但是将数据存储在数据中并不是我们的目的,获取和存储数据的目的是为了更好的利用这些数据,利用这些数据的前提首先需要从数据库按一定的格式来读取…

LeetCode——二叉树的非递归遍历

144. 二叉树的前序遍历 给你二叉树的根节点root,返回它节点值的前序遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输入&#xff1…

[ 应急响应基础篇 ] 使用 Autoruns 启动项分析工具分析启动项(附Autoruns安装教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Spring详解简介

1、Spring的简介 Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。我得出一个公式:Spring 春天 Java程序员的春天 简化开发。最后的简化开发正是Spring框架带来的最大好处。 Spring是一个开放源代码的设计…

SpringSecurity之两个重要接口

前言 前面讲解了关于SpringSecurity的基本原理,其中介绍了过滤器链以及过滤器加载的过程。我们在前面入门案例中的用户名和密码是系统自动生成的,在真实应用环境中,是需要查询数据库获取用户名密码是否匹配的,那么如何实现呢&…

贯穿设计模式第二话--开闭职责原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

串口数据处理

1.在串口接收中断中接收到的数据写入环形缓冲区;唤醒解析线程(发出任务通知)或释放信号量。 2.开一个解析线程: void AT_Parser() {while(1){1.等待任务通知;读环形缓冲区(将数据存起来); 2.常…

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序): 普通流(标准流)浮动定位 1 标准流(普通流/文档流) 所谓的标准流: 就是标签按照规定…

LAMP架构与网站搭建实例

一.LAMP概述 1、LAMP的概念 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境 LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、…

53 openEuler搭建PostgreSQL数据库服务器-管理数据库

文章目录53 openEuler搭建PostgreSQL数据库服务器-管理数据库53.1 创建数据库创建数据库示例53.2 选择数据库选择数据库示例53.3 查看数据库查看数据库示例53.4 删除数据库删除数据库示例53.5 备份数据库备份数据库示例53.6 恢复数据库恢复数据库示例53 openEuler搭建PostgreSQ…

第十四届蓝桥杯省赛c/c++大学B组题解

第十四届蓝桥杯省赛c/c大学B组题解 个人答案,有错漏感谢指正哈 试题 A: 日期统计 本题总分:5 分 【问题描述】   小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示&#xff…

Linux应用编程(文件属性与目录)

本章将会讨论如下主题内容。 ⚫ Linux 系统的文件类型; ⚫ stat 系统调用; ⚫ 文件各种属性介绍:文件属主、访问权限、时间戳; ⚫ 符号链接与硬链接; ⚫ 目录; ⚫ 删除文件与文件重命名。 一、Linux 系统中…

python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

一、编程题目 编程题目1&#xff1a;python编写一计票程序&#xff0c;键盘输入候选人姓名(输入“#”结束)&#xff0c;使用字典存储并统计出候选人得票数。 编程题目2&#xff1a;python实现以下分段函数&#xff1a; y 2x^34x^23 -10<x<0 y x14 0<x<6 y 6x…

001+limou+git安装与入门

1、git安装以及下载检查&#xff08;windows环境&#xff0c;macOS可能比较麻烦&#xff09; &#xff08;1&#xff09;下载git git官网下载&#xff0c; Git - Downloading Package (git-scm.com) &#xff08;2&#xff09;检查下载 以下命令可以检查git是否下载成功 $…