babyagi-asi
双Agent协作闭环,让AI自主规划、执行并从历史经验中自我进化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
双Agent协作闭环,让AI自主规划、执行并从历史经验中自我进化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你对着一台运行着某个程序的电脑说:"帮我研究一下量子计算的最新进展,然后写一份报告。"程序不是简单地去 Wikipedia 复制粘贴——它会自己拆解任务,调用搜索引擎搜索相关论文,自己写代码验证某个量子算法,理解结果,判断任务是否完成,如果没有就继续执行,直到你满意为止。整个过程,你只需要设定一个"目标(Objective)"。
这正是 BASI(BabyAGI-ASI, BabyAGI an Autonomous and Self-Improving Agent) 试图实现的事情——一个真正自主的、能够自我进化的 AI Agent。
BASI 由开发者 oliveirabruno01 创建,是一个持续活跃开发的实验性项目(PoC)。项目名称明确表明了其血统:它脱胎于著名的 BabyAGI,而"ASI"代表 Autonomous and Self-Improving(自主与自我进化)。
从 GitHub 主题标签可以看出其核心定位:agi(通用人工智能)、autonomous-agents(自主 Agent)、chain-of-thought(思维链)、program-of-thoughts(思维编程)。这个项目在 GitHub 上获得了 801 颗星,在同期 pending 项目中排名第一。
BASI 的设计哲学极为简洁,却蕴含着深刻的工程思考。其核心架构是一个双 Agent 协作闭环:
这是系统的"行动者"。它接收当前最相关的任务,动态选择 one-shot 示例(即历史上的成功案例),然后决定如何执行该任务。执行 Agent 的能力由 src/tools/config.json 控制,默认启用的工具有:
有趣的是,这些工具并非简单调用——它们被嵌入到一个精心设计的 one-shot 动态选择机制中。当 BASI 要执行一个新任务时,它会查看 /memories/one-shots.json 中的历史成功案例,根据当前任务上下文(由 GPT-3.5 自动选择)动态选择最相似的示例。这使得 BASI 能够"举一反三"——一旦学会做某件事,后续做类似任务就会更轻松。
这是系统的"质量把关者"。在执行 Agent 完成任务后,它会检查:
如果任务未完成,变更传播 Agent 会将结果反馈给执行 Agent,继续循环,直到任务真正被解决。这种"执行→检查→再执行"的双 Agent 架构,是 BASI 区别于简单单步 Agent 的关键。
BASI 内置了可选的 Pinecone 向量数据库集成。成功执行的任务会被编码为向量存入 Pinecone,Agent 未来可以通过语义相似度搜索召回相关记忆,实现跨会话的持续学习。当然,默认情况下(未配置 Pinecone)BASI 也会将任务结果存入本地 JSON 文件,实现基本的持久化。
BASI 最令人印象深刻的特性之一是其 动态 one-shot 学习机制。在 /memories/one-shots.json 中保存了历史成功案例,每个案例包含:任务描述、关键词、以及成功的执行步骤。当遇到新任务时,Agent 会根据上下文自动选择最相关的 one-shot 示例。
作者甚至展示了用 BASI 发 Twitter 的例子——它能直接控制浏览器,在打开的账号中发帖。这背后的原理是:一个成功的 Twitter 发帖案例被存入了 one-shot 记忆,后续发帖时 BASI 自动调用这个案例,通过 Tab 键导航完成操作。
从代码结构来看,BASI 非常轻量,核心代码仅 8 个 Python 文件:
| 文件 | 职责 |
|---|---|
src/babyagi.py | 核心 Agent 类定义,双 Agent 协作逻辑 |
src/prompts.py | 系统提示词生成,工具可用性提示 |
src/main.py | 入口程序,任务初始化和 Agent 状态序列化 |
src/common_utils.py | OpenAI API 调用封装、token 计数、one-shot 加载 |
src/consts.py | 环境变量配置(API Key、目标、任务列表等) |
src/utils/pinecone_utils.py | Pinecone 向量数据库集成 |
src/utils/text_processing.py | 文本处理工具 |
src/tools/serp_api.py | SerpAPI Google 搜索封装 |
依赖栈非常简洁:
openai==0.27.2:OpenAI ChatGPT API 调用tiktoken:GPT token 计数(控制上下文长度)colorama:彩色终端输出psutil:获取系统资源信息(CPU、内存)注入到系统提示词pinecone_client:可选向量数据库google_search_results:可选网络搜索bs4:网页内容解析模型选择:默认使用 gpt-3.5-turbo,可通过配置切换 gpt-4。代码中明确区分了两种模型的 max_tokens 限制(gpt-3.5 为 4000,gpt-4 为 8000)。
BASI 提供了 Dockerfile 和 docker-compose.yml,部署非常便捷:
FROM python:3.11
WORKDIR /app
COPY . /app
ENTRYPOINT ["python", "src/main.py"]
使用 docker-compose run basi 即可启动一个交互式容器(注意 compose 中有 profiles: ["exclude-from-up"],不能直接 docker-compose up)。
如果不用 Docker,只需要:
pip install -r requirements.txt.env 文件(至少填入 OPENAI_API_KEY)python src/main.py这是一个纯 CPU 运行的 CLI 工具,不需要 GPU。推荐 2GB+ RAM,磁盘占用约 200MB。唯一需要的是 OpenAI API Key——所有 AI 推理都通过 OpenAI 完成。
BASI 完全没有 Web 界面,是一个纯命令行交互的程序。用户通过环境变量 OBJECTIVE 设置目标,或使用 USER_IN_THE_LOOP=True 在运行时交互式输入目标。
作者在 README 开篇就明确声明:"This is just a PoC in constant development"(这只是持续开发中的概念验证)。代码中确实存在一些不规范的实践,例如:
src/prompts.py 中的 eval(os.getenv("TASKS_LIST", "")) —— 直接 eval 环境变量存在安全风险所有推理都依赖 OpenAI API,意味着:
"Self-Improving"(自我进化)是 BASI 名字中的关键词,但实际上自我进化主要体现在 one-shot 记忆积累层面——Agent 记住成功案例以便未来复用。真正的"自我改进代码或模型"的能力尚未实现,更多是一种工程层面的复用优化。
BASI 处于 2023 年上半年 AI Agent 热潮的脉络中。这一时期的标志性事件包括:
BASI 的特殊之处在于它将 BabyAGI 的目标驱动理念与 动态 one-shot 学习结合,探索了一条"让 Agent 从历史经验中学习"的技术路径。虽然仍处于 PoC 阶段,但它展示了 AI Agent 从"每次都从零思考"到"积累经验、举一反三"的演进方向。
总结:BASI 是一个极具想象力的 AI Agent 实验项目。它用极简的代码(仅 8 个 Python 文件)实现了一个双 Agent 协作闭环,结合动态 one-shot 学习让 AI 能够从历史经验中进化。虽然是实验性代码、缺少 Web UI、且完全依赖 OpenAI API,但其核心设计理念——"自主规划 + 执行 + 自我进化"——代表了 AI Agent 发展的重要方向。对于想要深入理解 AI Agent 内部运行机制的开发者而言,BASI 是一个不可多得的阅读和实验素材。