当前位置: 首页 > article >正文

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/


http://www.kler.cn/a/146523.html

相关文章:

  • Unity-Mirror网络框架-从入门到精通之RigidbodyPhysics示例
  • AIGC时代 | 探索AI Agent的奥秘:四种设计模式引领未来智能趋势
  • 【无标题】
  • Spring 核心技术解析【纯干货版】- VIII:Spring 数据访问模块 Spring-Tx 模块精讲
  • C++并发编程之std::partial_sum的并行版本
  • 抢十八游戏
  • 【华为OD】B\C卷真题:100%通过:整型数组按个位值排序 C/C++实现
  • 精进Beautiful Soup 小技巧(三)---综合提供效率(缓存/error/多线程/异步)
  • c语言-冒泡排序
  • C#文件基本操作(判断文件是否存在、创建文件、复制或移动文件、删除文件以及获取文件基本信息)
  • 四、IDEA创建项目时,Maven Archetype模板工程说明
  • P18 C++ 继承
  • Rust语言入门教程(四) - 数据类型
  • 案例034:基于微信小程序的课堂助手系统
  • app自动化测试接口文档与在线测试
  • LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  • 基于C#实现奇偶排序
  • sql 动态语句
  • vue+springboot读取git的markdown文件并展示
  • Camtasia Studio2024专业的屏幕录制和视频剪辑软件
  • 人工智能 -- 神经网络
  • 切水果小游戏
  • 【开源】基于JAVA的海南旅游景点推荐系统
  • Python 测试框架 Pytest 的入门
  • <JavaEE> Java中线程有多少种状态(State)?状态之间的关系有什么关系?
  • Java中使用 com.google.zxing 生成二维码