当前位置:首页|资讯|GitHub|AutoGPT|ChatGPT

AUTO-GTP执行逻辑

作者:IBAS发布时间:2023-06-14

项目的地址和标题

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

GitHub

前面的话(废话)

大致看了几个文档和视频,我按我的逻辑来分析,主要是厘清消息传递的过程,这里将我看到的几个链接也附上:

【知乎:AutoGPT源码阅读】https://zhuanlan.zhihu.com/p/623597557

【掘金:ChatGPT|Auto-GPT实现解析】https://juejin.cn/post/7221461913003442236

为什么要做一些事情(废话+1)

我对python并不是很熟悉,但是勉为其难能看懂一些,看代码的过程我要加注释,屏蔽一些影响,因为我想自己来实现和控制代码的走向,目前autogpt最大的问题是会“陷入奇怪的死循环”,特别是在Windows系统下。

陷入执行命令循环中

autogpt的另一个问题在于会陷入token限制,如果被中断,不得不面临重新开始执行。在最新的release版本(4.0)中,这个问题依旧是存在的,但是在issue中可以找到解决方案,我认为我已经不会出现这个问题了,不会再报这个错误。

√ 从masterr分支中复制 autogpt/memory/message_history.py 替换 release 中的对应的文件即可。

token limit

进入正题

直接进入到 autogpt\agent\agent.py 这个文件的 start_interaction_loop 开始看就可以了,这个文件是进入交互模式下开始循环执行的入口函数。

将代码中的日志、交互、插件配置都默认为不需要,所以忽略相关的所有代码。

代码流程

左边代码是去除部分不影响阅读代码后的版本,大致对应到右边的流程图,其中记录执行结果这个过程可以理解为是全局的,在记录执行结束后,会在最右边的生成摘要中被使用。

下面是 autogpt\llm\chat.py 代码的删减后和流程图对应的情况。

代码流程

最后给一个我大概理解的完成的执行流程(不是简单的空讲,呃呃呃,流程就是这样,而是大致能匹配代码实际执行流程的)。

autogpt 有给出一个默认的摘要信息,即最开始没有对话时的摘要信息(I was created)。

整体流程

这里有几个问题需要理解,一个是所有发送到GPT或者从GPT获取的回复都是模板化的二是,我其实没理解封装摘要前挑选的事件的条件是什么,三是,每次发送的上下文(即最近的对话场景信息)其实是有限制的,不会超过十个,但是我也不知道他怎么选的。

对于第一个问题,模板可以在 autogpt\prompts\generator.py 中找到一个,摘要的模板是在 autogpt\memroy\message_history.py 中。

后面的内容,等我看懂了代码的消息生成情况后再发上来。

如果已经执行过一次,可在log中找到一个系类的执行过程,如下

对话缓存

具体看对话内容,下面打开了连续的两次发送给gpt的信息,这两次对应的是最开始的两次。

开始的两次对话

再看一个后面的对话信息

对话 006

上面的图片如果不够清晰可以在下面地址找到,还有修改过的代码(但不保证代码可以用)

https://github.com/IBAS0742/ShareCode/blob/main/bilibili/20230614.md


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1