LLM之Agent(二):BabyAGI的详细教程

       

图片

      BabyAGI是一个 AI 支持的任务管理系统(Python脚本),使用 OpenAI 和 Pinecone API 创建, 优先级排序和执行任务。该系统背后的主要思想是基于先前任务的结果和预定义的目标创建任务。脚本然后使用 OpenAI 的自然语言处理(NLP)能力根据目标创建新任务, 并使用 Pinecone 存储和检索任务结果以获得上下文. 这是原始的任务驱动的自驱代理(2023 年 3 月 28 日)的简化版本。

一、BabyAGI工作原理

BabyAGI的整体原理如下图所示:

图片

BabyAGI通过运行一个无限循环来工作, 该循环执行以下步骤:

  1. 从任务列表中提取第一个任务;

  2. 将任务发送给执行代理, 该代理使用 OpenAI API 根据上下文完成任务;

  3. 整理结果并将其存储在 Pinecone 中;

  4. 基于目标和前一个任务的结果创建新任务, 并根据优先级对任务列表进行排序。

execution_agent()函数使用 OpenAI API。它接受两个参数:目标和任务,然后向 OpenAI 的 API 发送一个 Prompt(包括 AI 系统任务的描述, 目标和任务本身), 该 API 结果以 string 形式返回。

task_creation_agent()函数使用 OpenAI API 根据目标和前一个任务的结果创建新任务。该函数接受 4 个参数:目标, 前一个任务的结果, 任务描述和当前任务列表。然后它向 OpenAI 的 API 发送一个 prompt, 该 API 返回一个新任务的 string 列表。函数然后将新任务作为字典列表返回, 其中每个字典包含任务的名称。

prioritization_agent()函数使用 OpenAI API 对任务列表进行重新排序。该函数接受一个参数, 即当前任务的 ID。它向 OpenAI 的 API 发送一个 prompt, 该 API 返回一个重新排序的任务列表(以数字编号)。

      最后, 脚本使用 Pinecone 存储和检索任务结果以获取上下文。脚本根据 YOUR_TABLE_NAME 变量中指定的表名创建一个 Pinecone 索引,然后 Pinecone 将任务结果与任务名称和任何其他元数据(metadata)一起存储在索引中。

二、BabyAGI如何使用

Step1 克隆仓库​​​​​​​

git clone https://github.com/yoheinakajima/babyagi.git

cd babyagi

Step2 安装所需要的库​​​​​​​

pip install -r requirements.txt
cp .env.example .env

Step3 设置OpenAI Key

    在.env文件中设置OPENAI_API_KEY、OPENAI_API_MODEL和PINECONE_API_KEY参数,在 PINECONE_ENVIRONMENT 变量中设置 Pinecone 环境,如果要使用weaviate,可以参考https://babyagi.org/docs/weaviate.html

Step4 设置存储结果的表名

指定存储结果的变量TABLE_NAME值

Step5 配置其他变量(可选)

     通过设置BABY_NAME变量名来指定BabyAGI实例名,通过设置OBJECTIVE变量名来制定任务管理系统的目标,通过设置INITIAL_TASK变量名来制定第一个任务名。

Step6 运行BabyAGI

python babyagi.py

PS:上述步骤同样也可以部署到docker中,首先需要安装docker和docker-compose,然后执行如下代码:

docker-compose up

三、BabyAGI支持的模型

      BabyAGI支持OpenAI所有模型,也支持LLaMA模型以及它的扩展模型(通过Llama.cpp),默认模型是 gpt-3.5-turbo,要使用不同的模型, 请通过 OPENAI_API_MODEL 指定, 或者使用命令行。

LLaMA

      下载最新版的Llama.cpp 并按照说明进行编译,还需要 Llama 模型的权重,然后将 llama/main 链接到 llama.cpp/main, 将 models 链接到存放 Llama 模型权重的文件夹,接着传入参数 OPENAI_API_MODEL=llama 或 -l 运行脚本。

PS:在任何情况下, 都不要在此 repo(仓库)的任何地方(包括问题, 讨论或拉取请求中)分享 IPFS, 磁力链接或任何其他模型下载链接。因为它们将被立即删除。

四、连续运行BabyAGI的警告

       BabyAGI被设计为作为任务管理系统的一部分持续运行,持续运行此脚本可能导致 API 的使用费超高, 请务必谨慎使用并后果自负。此外, 脚本需要正确设置 OpenAI 和 Pinecone API, 因此请确保在运行脚本之前已经设置了API。

参考文献:

[1] https://github.com/yoheinakajima/babyagi

[2] http://babyagi.org/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构学习笔记——二叉树的遍历和链式存储代码实现二叉树

目录 一、二叉树的遍历(一)二叉树的先序遍历(DLR)(二)二叉树的中序遍历(LDR)(三)二叉树的后序遍历(LRD)(四)二…

【古月居《ros入门21讲》学习笔记】07_创建工作空间和功能包

目录 说明: 1. 工作空间(workspace) 结构: 2. 创建工作空间和功能包 创建工作空间 编译工作空间 创建功能包 设置环境变量 3. 注意 同一个工作空间下,不能存在同名的功能包; 不同工作空间下,可以存在同名的功…

学习程序员必知必会的基础算法(收藏)

近年来学习python的程序员愈来愈多,有的同学选择了python培训机构,也有的人觉得自己天赋好选择了自学不管大家怎么去学习,在学习python基础的过程中,肯定离不开的就是基础算法,今天就为大家介绍几大学习中的基础算法。…

ffmpeg开发 环境配置

ffmpeg开发简图 1 下载ffmpeg开发包 https://ffmpeg.org/download.html 包含三个版本:Static、Shared以及Dev Static --- 包含3个应用程序:ffmpeg.exe , ffplay.exe , ffprobe.exe,体积都很大,相关的DLL已经被编译到exe里面去…

TDA4VM EVM开发板调试笔记

文章目录 1. 前言2. 官网资料导读3. 安装 Linux SDK4. 制作SD 启动卡5. 验证启动1. 前言 TDA4作为一般经典的车规级SOC芯片,基于它的低阶智驾方案目前成为各家智驾方案公司的量产首选,这也使得基于TDA4的开发需求陡增,开发和使用TDA4既要熟悉Linux驱应用开发,还要熟悉传统…

自建CA实战之 《0x02 Nginx 配置 https双向认证》

自建CA实战之 《0x02 Nginx 配置 https双向认证》 上一章节我们已经实现了Nginx上配置https单向认证,主要场景为客户端验证服务端的身份,但是服务端不验证客户端的身份。 本章节我们将实现Nginx上配置https双向认证,主要场景为客户端验证服…

基于Java SSM框架+Vue实现汉服文化平台网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现汉服文化平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将…

在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2

在gazebo里搭建一个livox mid360 惯导仿真平台测试 FAST-LIO2 前言立方体平台加入 livox mid360 激光雷达加入IMU模块调整底盘大小 并设计调用接口测试 Fast-Lio2 前言 livox mid360 在官网一直没有货,在gazebo里可以仿真该雷达形式的点云。 但是其只发布雷达的数…

【电源专题】DC/DC电源FB分压电阻设计注意事项

在DC/DC电源中我们不可避免的会遇到FB分压电阻的取值,PCB设计等问题。如下所示随意打开一份同步降压稳压器规格书TPS56320X,规格书中的简化电路原理图就已经存在VFB管脚上的两个分压电阻。 很多工程师朋友们会误认为分压电阻只是简单的将输出电压缩小到参考电压,通过此电压来…

电子学会C/C++编程等级考试2023年03月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:和数(2023.3) 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536输入 共两行,第一行是数列中…

【接口自动化】selenium库也有大用场(获取cookie)

相信有些童鞋在做接口、或者说接口自动化测试的过程中会遇到这样的场景:测试的接口,必须是需要登录后才能发起请求成功的。 那么怎么解决呢? 本着团队协作的精神,我们就去让开发同学开个后门,给你个“万能”值&#x…

AntDB“超融合+流式实时数仓”——颠覆50年未变的数据库内核

流式处理引擎,颠覆50年未变的数据库内核 流式处理的概念 2001年9月11日,美国世贸大楼被袭击,美国国防部第一次将“主动预警”纳入国防的宏观战略规划。而IBM作为当时全球最大的IT公司,承担了大量基础支撑软件研发的任务。其中200…

R语言单因素方差分析+差异显著字母法标注+逐行详细解释

R语言单因素方差分析 代码如下 df <- read.csv("data.csv",header TRUE,row.names 1) library(reshape2) df <- melt(df,idc()) names(df) <- c(trt, val) df aov1 <- aov(val~trt,datadf) summary(aov1)library(agricolae) data <- LSD.test(aov…

双指针算法总结

双指针算法分为两类&#xff1a;第一类指向一个序列&#xff08;更多的情况&#xff09;&#xff0c;第二类指向两个序列。 基本的代码框架是&#xff1a; for (i 0, j 0; i < n; i) {while (j < i && check(i, j)) j;// 每道题目的具体逻辑 } 核心思想&…

探索使用Quarkus和MicroProfile 构建Kubernetes原生微服务的秘诀!

Kubernetes Native Microservices with Quarkus and MicroProfile 是一个基于Kubernetes原生微服务的开发框架&#xff0c;它结合了Quarkus和MicroProfile的优点&#xff0c;提供了一个高效、可扩展、易于管理的微服务解决方案。 Quarkus是一个针对Java虚拟机&#xff08;JVM&…

代码demo-内部订单批量投料

为了简化用户操作&#xff0c;开发内部订单批量投料功能 用户可以批量上传&#xff0c;或者选择对应的物料&#xff0c;输入库位和内部订单号后进行过账操作 对用户选择的内部订单做校验&#xff0c;内部订单是否正确 内部订单的公司是否和工厂对应的公司一致等等 下面展示…

[NOIP2016 普及组] 回文日期

枚举好题&#xff0c;直接枚举答案 看看在不在范围内就行了 注意二月份 92200229是合法的~ 82200228也是合法的&#xff01; #include<bits/stdc.h> using namespace std;map<int,int>mp;int main() {mp[1] mp[3] mp[5] mp[7] mp[8] mp[10] mp[12] 31;mp[…

MMdetection3.0 问题

MMdetection3.0 问题 希望各位路过的大佬指教一下&#xff1a; 问题&#xff1a; 1、NWPU-VHR-10有标注的数据一共650张&#xff0c;我将其分为了455张训练集&#xff0c;195张验证集。 2、然后使用MMdetection3.0框架中的Faster-rcnn网络进行训练&#xff0c;设置训练参数b…

微信小程序体验版提交审核,提示接口未配置在app.json文件且无权限

在火狐浏览器 打开微信公众平台 发布小程序 弹窗一闪而过 是因为 放开这里就可以了

selenium元素定位方法之xpath

什么是xpath&#xff1f; XPath是XML的路径语言&#xff0c;通俗一点讲就是通过元素的路径来查找到这个标签元素XPath使用路径表达式在XML文档中进行导航 普通语法 注意&#xff01; 1.xpath中的值用引号引起来时&#xff0c;在代码中要注意区分&#xff0c;内单外双&#xf…