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

文章目录

    • 一、功能需求
    • 二、演示用例
    • 三、核心模块流程图
    • 四、代码分析
      • 1)Agent类目录创建智能体对象
      • 2)开始主流程
      • 3)在prompt的main目录输入主prompt和最后prompt
      • 4)增加实际的工具集tools(也就是函数)
      • 5)新增文件夹Utils工具来打印中间结果

一、功能需求

  • 目的
    设计一个 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(也就是函数)

①实际工具类文件是Tools.py,比如如下的FileTool.py定义了返回搜索数据文件的名字的函数
在这里插入图片描述

在这里插入图片描述
②定义读取PDF的函数,类似RAG的部分,这里拿langchain原生接口代替(不推荐,FileQATool.py)
在这里插入图片描述
③按照客户需求生成文档的函数
在这里插入图片描述

④分析Excel的函数工具(根据表名字、行列名字信息、具体格信息分析文件)ExcelTool.py和生成代码去分析数据的工具PythonTool.py,并且在prompts/tools目录下填上excel分析的prompt
在这里插入图片描述

在这里插入图片描述
⑤发邮件的工具EmailTool.py
在这里插入图片描述

5)新增文件夹Utils工具来打印中间结果

新文件callbackfunc.py

在这里插入图片描述

和带颜色的打印

在这里插入图片描述

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

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

相关文章

20240403在ubuntu20.04下解压缩gz压缩包

20240403在ubuntu20.04下解压缩gz压缩包.txt 2024/4/3 15:17 缘起:使用友善之臂FriendlyElec的NanoPi NEO Core开发板 https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO/zh#.E8.BF.90.E8.A1.8CFriendlyCore NanoPi NEO/zh http://wiki.friendlyelec.com/w…

【ArduinoQuartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能

【Arduino&Quartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能 一、将Reindeer软核下载到STEP CYC10(一)下载PulseRain Reindeer软核(二)配置Reindeer软核到开发板1.将sof文件转换为jic文件2.将jic文…

【opencv】教程代码 —Histograms_Matching(1)反向投影:在给定图像中寻找特定的颜色或颜色分布...

1. calcBackProject_Demo1.cpp 反向投影函数的使用 /*** file BackProject_Demo1.cpp* brief 示例代码,演示反向投影函数的使用* author OpenCV团队*/#include "opencv2/imgproc.hpp" // 包括图像处理相关功能的头文件 #include "opencv2/imgcodecs…

蓝奏云直链获取在线解析网站源码

源码简介 蓝奏云直链获取在线解析网站源码 蓝奏云链接解析 本地API接口 支持有无密码和短期直链和永久直链,同时还可以显示文件名和大小。 这个解析器无需数据库即可搭建,API接口已经本地化,非常简单易用。 安装环境 php5.6 搭建教程 …

构建第一个JS应用(FA模型)

创建JS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发(本文以应用开发为例,Atomic Service对…

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令 可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括的讲,转移指令就是可以控制CPU执行内存中某处代码的指令 1. 转移指令 1.1 8086CPU的转移行为有以…

《PDVC》论文笔记

PS:模型代码解释清明后出 原文链接: [2108.07781v1] End-to-End Dense Video Captioning with Parallel Decoding (arxiv.org) 原文笔记: What: End-to-End Dense Video Captioning with Parallel Decoding 并行解码的端到端…

DDL ---- 数据库的操作

1.查询所有数据库 show databases; 上图除了自创的,其他的四个都是mysql自带的数据库 。(不区分大小写) 2.查询当前数据库 select database(); 最开始没有使用数据库,那么查找结果为NULL 所以我们就需要先使用数据库&#xff…

鸿蒙分布式音乐播放-如何完成播放、暂停、上一曲、下一曲功能

介绍 本示例使用fileIo获取指定音频文件,并通过AudioPlayer完成了音乐的播放完成了基本的音乐播放、暂停、上一曲、下一曲功能;并使用DeviceManager完成了分布式设备列表的显示和分布式能力完成了音乐播放状态的跨设备分享。 本示例用到了与用户进行交…

是德科技keysight 33621A波形发生器

181/2461/8938产品概述: 与上一代DDS波形发生器相比,采用独家Trueform技术的安捷伦HP 33621A波形发生器具有更高的性能、保真度和灵活性。安捷伦HP 33621A 120 MHz、单通道、Trueform arbs,带时序控制和64 MSa存储器,1 ps抖动&am…

数据库管理工具 DBeaverUE for Mac激活版

DBeaverUE for Mac是一款功能强大且易于使用的数据库管理工具,专为Mac用户设计。它支持多种数据库类型,如MySQL、PostgreSQL、Oracle等,使得用户可以轻松管理和操作各种数据库。 软件下载:DBeaverUE for Mac激活版下载 DBeaverUE …

51单片机入门_江协科技_20.1_Proteus串口仿真

1.为了解决51单片机学习过程中在Proteus中的串口仿真的问题,需要在Proteus中建立串口仿真的环境(目前Proteus安装在Win7x64虚拟机环境中; 2. 在CSDN中找到VSPD下载地址,在虚拟机中进行VSPD的安装,具体链接地址如下&am…

从零开始:Flutter应用上架iOS的完整流程解析

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

前端作业之完成学校官方网页的制作

&#xff08;未使用框架&#xff0c;纯html和css制作&#xff09; 注&#xff1a;由本人技术限制&#xff0c;代码复用性极差 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>xxx大学</tit…

一些题目学习

1.打开文件添加helloworld public class Saier {public static void main(String[] args){String path"C:\\Users\\sjg\\Desktop\\abc.txt";String text"hello world";try {File file new File(path);FileWriter fileWriter new FileWriter(file,true);…

Ruby 之交租阶段信息生成

题目 我看了一下&#xff0c;这个题目应该不是什么机密&#xff0c;所以先放上来了。大概意思是根据合同信息生成交租阶段信息。 解答 要求是要使用 Ruby 生成交租阶段信息&#xff0c;由于时间比较仓促&#xff0c;变量名那些就用得随意了些。要点主要有下面这些&#xff1a…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包&#xff0c;推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库&#xff0c;用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

基于Python深度学习的中文情感分析系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【大数据存储】实验五:Mapreduce

实验Mapreduce实例——排序&#xff08;补充程序&#xff09; 实验环境 Linux Ubuntu 16.04 jdk-8u191-linux-x64 hadoop-3.0.0 hadoop-eclipse-plugin-2.7.3.jar eclipse-java-juno-SR2-linux-gtk-x86_64 实验内容 在电商网站上&#xff0c;当我们进入某电商页面里浏览…

C++基础13:C++输入输出

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 12.C输入/输出 12.1 C流类 计算机的输入和输出是数据传送的过…