大模型学习笔记八:手撕AutoGPT

news2024/10/7 0:26:51

文章目录

    • 一、功能需求
    • 二、演示用例
    • 三、核心模块流程图
    • 四、代码分析
      • 1)Agent类目录创建智能体对象
      • 2)开始主流程
      • 3)在prompt的main目录输入主prompt和最后prompt
      • 4)增加实际的工具tools

一、功能需求

  • 目的
    设计一个 Agent,自动选择使用以下工具回答用户的问题
  • 问题
1、查看目录下的文件
2、基于给定的文档回答用户问题
3、查看与分析 Excel 文件
4、撰写文档
5、调用 Email 客户端发邮件

二、演示用例

  • 实验资料(实验中使用三个文档演示 Agent 的能力)
./data
 |__2023年8月-9月销售记录.xlsx
 |__供应商名录.xlsx
 |__供应商资格要求.pdf
  • 资料展示
    在这里插入图片描述

  • 测试用例输入举例

1、9 月份的销售额是多少
2、销售总额最大的产品是什么
3、帮我找最近一个月出销售额不达标的供应商
4、给对方发一封邮通知此事
5、对比 8 月和 9 月销售情况,写一份报告

三、核心模块流程图

在这里插入图片描述

四、代码分析

1)Agent类目录创建智能体对象

初始化准备工作:

1、语言模型:llm
2、工具集 tools
3、工作数据地址:work_dir
4、最多能思考多少步:max_thiought_steps
5、常识记忆的向量数据库连接池:memery_retriever
6、output_parse专门解析action传出来的json格式的数据
7、robust_parser用来矫正输出json格式的错误
8、__iniy_prompt_templates用来初始化模板(需要用接口适配langchain输出中文有时候打印Unicode码,看的不舒服,函数名字是__chinese_friendly)
9、初始化chain(用主要prompt和结束的prompt串起来)

在这里插入图片描述

2)开始主流程

①初始化常识和短识的记忆(短识记忆初始化为空,常识是连接向量数据库)
②记录思考步数
③开始主循环推理,若输出结果为FINISH就break,否则就执行选择出来的action,并更新短识记忆
④若大于最大思考步数,则输出未能完成任务
⑤更新长识记忆
在这里插入图片描述

3)在prompt的main目录输入主prompt和最后prompt

在这里插入图片描述

  • 注意点
    ①有时候目录会在查找过程中丢失,所以访问文件确保文件路径调整
    ②对于一些准则(总结方法论)告诉他约束
    ③输出形式要按步骤输出思考过程,然后加自我反思
    ④观察执行记录和自我反思,进一步思考
    ⑤根据反思和思考,一步步推理

4)增加实际的工具tools

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

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

相关文章

yolov8姿态识别与绘制

YOLOv8姿态检测是一种基于深度学习的计算机视觉技术,用于识别图像或视频中人体的姿态。作为YOLO系列算法的最新版本,YOLOv8在姿态检测任务上展现出了卓越的性能和效率。以下将详细介绍YOLOv8姿态检测的原理、特点、应用以及训练过程。 一、YOLOv8姿态检…

快消企业数字化转型实战解析:探寻未来增长新动力

2024年,快消行业正站在数字化转型的风口浪尖。 “今年是过去十年最差的一年,但却可能是未来十年最好的一年。”这句话几乎成为了今年的流行语。 但是这句话是情绪,不是事实。未来十年,中国会成为全球最大的消费品市场&#xff0…

CSS基础选择器 小案例复习(画三个小盒子)

(大家好,前面我们学习了基础的选择器,俗话说:温故而知新。所以今天我们将通过小案例来复习前面学过的小知识点。另,十分感谢大家对我文章的支持❤️) 通过这个案例复习两个地方: 类选择器的使用…

AJAX —— 学习(三)

目录 一、jQuery 中的 AJAX (一)get 方法 1.语法介绍 2.结果实现 (二)post 方法 1.语法介绍 2.结果实现 (三)通用型的 AJAX 方法 1.语法介绍 2.结果实现 二、AJAX 工具库 axios (…

js 基础知识 forEach 和 map 的区别,及 map 不加 return 返回什么

问题一:forEach 和 map 之间的区别: 1、forEach 不返回新数组,map 返回新数组,其中包含回调函数的返回值。 2、用途:如果只想要遍历数组并对每个元素执行某些操作而不产生新数组,那么应该使用 forEach&am…

全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——day04_Maven入门

万字长文爆肝黑马程序员2023最新版JavaWeb教程。这套教程打破常规,不再局限于过时的老套JavaWeb技术,而是与时俱进,运用的都是企业中流行的前沿技术。笔者认真跟着这个教程,再一次认真学习一遍JavaWeb教程,温故而知新&…

ETL工具-nifi干货系列 第八讲 处理器PutDatabaseRecord 写数据库(详细)

1、本节通过一个小例子来讲解下处理器PutDatabaseRecord,该处理器的作用是将数据写入数据库。 如下流程通过处理器GenerateFlowFile 生成数据,然后通过处理器JoltTransformJSON转换结构,最后通过处理器PutDatabaseRecord将数据写入数据库。如…

软件架构风格_4.虚拟机体系结构风格

虚拟机体系结构风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。虚拟机体系结构风格主要包括解释器风格和规则系统风格。 1.解释器体系结构风格 一个解释器通常包括完成解释工…

首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!

CodeGeeX是一款免费的智能编程助手。 继CodeGeeX在Visual Studio Code、JetBrains IDEs全家桶、HBuilderX、deepin-IDE等主流IDE中上线后,用户呼声最高的Visual Studio平台的适配插件产品也正式推出上线了!成为首个适配Visual Studio平台的国产智能编程…

docker导出导入镜像

docker导出镜像 查看要导出的镜像 docker images主要有两列 REPOSITORY TAG 导出命令 导出公式 docker save -o xxxx.tar REPOSITORY:TAG例子 docker save -o minio.tar minio/minio:latestminio/minio:latest可以使用image id代替,但是使用image id会导致导…

笔记: JavaSE day15 笔记

第十五天课堂笔记 数组 可变长参数★★★ 方法 : 返回值类型 方法名(参数类型 参数名 , 参数类型 … 可变长参数名){}方法体 : 变长参数 相当于一个数组一个数组最多只能有一个可变长参数, 并放到列表的最后parameter : 方法参数 数组相关算法★★ 冒泡排序 由小到大: 从前…

基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】

基于springboot实现园周边美食探索及分享平台系统演示 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域,传统的…

2024 ccfcsp认证打卡 2023 05 01 重复局面

2023 05 01 重复局面 题目题解1题解2区别:数据存储方式:时间复杂度:空间复杂度: 总结: 题目 题解1 import java.util.*;public class Main {public static void main(String[] args) {Scanner input new Scanner(Sys…

vivado eFUSE 寄存器访问和编程

eFUSE 寄存器访问和编程 注释 : 在 MPSoC 和 Versal 器件上不支持以下 eFUSE 访问和编程方法。 7 系列、 UltraScale 和 UltraScale 器件具有一次性可编程位用于执行特定功能 , 称为 eFUSE 位。不同 eFUSE 位类型如 下所述: • …

利用Winform实现简陋版的温度计(仅供参考)

本人水平有限,如有写得不对的地方,望指正。为了简单化,做了一个简陋版的温度计控件,有点丑哈。本文的内容仅供参考 测试环境: visual studio 2017 .net framework 4.0 效果图如下: 步骤如下:…

SpringBoot 微服务项目,打包报错:找不到符号

错误定位到这个代码,调试、编译都正常,就打包报错 最后发现,这个类是其他项目里的,需要重新生成其他项目后,再来打包就行了。

dhcp中继代理

不同过路由器分配ip了,通过一台服务器来代替,路由器充当中继代理功能,如下图 服务器地址:172.10.1.1/24 配置流程: 1.使能dhcp功能 2.各个接口网关地址,配置dhcp中继功能 dhcp select relay &#xff0…

ansible-自动化工具

一、ansible概述 不是C/S架构,就是一种工具 1:linux自动化运维 编写程序实现运维自动化:shell python 工具模式自动化: ①OS Provisioning: RedHat satellite;PXE(可实现dhcp和tftp&#…

基于深度学习的吸烟检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要:本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的吸烟行为检测系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及…

HDLbits 刷题 --Conditional

学习: Verilog has a ternary conditional operator ( ? : ) much like C: (condition ? if_true : if_false) This can be used to choose one of two values based on condition (a mux!) on one line, without using an if-then inside a combinational always block. …