AutoGPT@v0.4.7 代码分析
本文分析了 AutoGPT@release-v0.4.7 的代码,主要内容包含 AutoGPT 的主要工作流程、迭代的主要方法及 command 的定义。
2023-10-30
主流程分析
在命令行中使用
./run.sh
run_auto_gpt
在
run_auto_gpt
其中执行目标(ai_goals)的设定方式为:
- 继续上一次的目标;
- 用户通过输入 进行手动设置;
--manual
- 用户输入目标,通过调用 自动生成。
generate_aiconfig_automatic
注册 commands 的方法是通过
Command Registry
with_command_modules
import_command_module
COMMAND_CATEGORIES
其中 command_registry.register
dict
完成 commands 的注册后会初始化一个 agent ,并将其传递到
run_interaction_loop
在主循环(run_interaction_loop
agent.think
然后通过调用 update_user
确认用户反馈后,根据反馈结果调用 agent.execute
在 agent.execute
command_registry.get_command
当 cycles_remaining
cycle_remaining
- 如果在初始化时启用了 ,则为
continuous_mode
或 ∞,否则为 1;continuous_limit
- 在 中,如果用户输入
get_user_feedback
,则y
被重新设置为 1,若指定了连续执行的轮数,则cycles_remaining
为执行轮数 + 1;cycles_remaining
- 在执行非 的指令前将
human_feedback
-1。cycles_remaining
agent.think
方法
agent.think
agent.think
BaseAgent
首先使用 DEFAULT_TRIGGERING_PROMPT
其中,system prompt
- 指定 的名称和角色,要求 LLM 独立做决定;
assistant
- (可选)指定本机系统、可用的额度、限制条件(constraints)、可用资源(resoources)及最佳实践(best_practice)
- assistant 的执行目标(ai_goals)。
生成 prompt 之后,调用 openai 接口生成响应(Response
command 指令
AutoGPT 内置了 5 种指令:
- : 执行 Python 代码或 Shell 指令;
execute_code
- :文件和文件夹操作;
file_operations
- :使用 DuckDuckGo 或 Google 进行搜索;
web_search
- :使用 headless 浏览器访问特定 url;
web_selenium
- :·goals_accomplished` 任务完成;
system
- :使用
image_gen
、dalle
或huggingface
生成图片(默认不启用);sdwebui
- :git 操作(默认不启用)。
git_operations
定义 command 的方法是在目标函数前使用 @command
定义完指令后要添加对应的 COMMAND_CATEGORIES