先把版本问题说清楚,否则你会在错误的仓库上浪费一晚上。2023 年 3 月那个引爆全网的 BabyAGI —— 三段任务循环、Task Creation Agent 造任务、Prioritization Agent 排序、Execution Agent 执行 —— 已经在 2024 年 9 月被作者 Yohei Nakajima 归档,搬进了 babyagi_archive 仓库,路径是 classic/babyagi.py,作者自称是「精简版的 Task-Driven Autonomous Agent」,正文大约 140 行。同一个 classic 目录下还躺着 BabyBeeAGI.py、BabyCatAGI.py、BabyDeerAGI.py 以及 BabyElfAGI/、babyfoxagi/ 这几个后续实验分支。今天你 pip install babyagi 装到的,是完全重写过的另一个东西:一个叫 functionz 的函数管理框架,把函数存进数据库、画依赖图、配 Flask 面板,主打「self-building autonomous agent」。
第二件事:BabyAGI 的显存需求是零。它是几百行 Python,没有 checkpoint,没有 safetensors。所有人问的「BabyAGI 需要多大显存」,问的其实是「我拿哪个模型喂这个循环」。这里的接缝是 litellm —— functionz 的 ai_functions.py 里直接写着 from litellm import completion 和 from litellm import embedding,默认模型是 gpt-4o,默认 embedding 是 text-embedding-ada-002;babyagi-2o 那个单文件版本读的是环境变量 LITELLM_MODEL,默认值是 anthropic/claude-3-5-sonnet-20240620。也就是说,你什么都不改直接跑,它就是在打云端 API 账单,跟「私有化部署」完全是反方向。要真正落地,你得把这个端点掰到自己的卡上。
第三件事,也是最该租卡的理由:这套东西会执行它自己写出来的代码。functionz 的 drafts/self_build 与 code_writing_functions 会让模型现场生成新函数并注册进库;babyagi-2o 更直接,main.py 里带一个 install_package(),模型缺什么包就 subprocess 调 pip 装什么包,然后 exec。这种行为放在你的开发机上是灾难,放在一台按秒计费、跑完就销毁的 GPU 实例里才是正确姿势。顺带一提,作者本人的重心已经转到 activegraph 上 —— 一个事件溯源的响应式图运行时,v1.10.0(2026 年 7 月)、Apache-2.0、Python 3.11+ —— 它的 examples/babyagi.py 把 BabyAGI 的自主循环重写成了共享图上的三个 reactive behavior。想跑原味循环又不想被 2024 年的依赖卡住,那是目前最新的落点。
01 —
BabyAGI 今天到底有几条线
四个仓库都还能跑,但它们要的后端模型完全不是一个量级
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| babyagi_archive · classic/babyagi.py(2023 原版) | 约 140 行 Python · 无权重 | 后端 8B 级 Q4_K_M 约 4.9GB 权重起;本地 embedding 换 bge-m3 fp16 约 1.2GB | 4K 可跑,8K 更稳(objective + 任务列表 + top-k 上下文一起塞) | 2024 年 9 月归档的三段循环本体,默认向量库 Chroma,也支持 Weaviate。想复现那篇让所有人上头的 demo 就跑这个;README 里保留了 LLM_MODEL=llama 走 llama-cpp 的本地路径,但要你自备权重和 LLAMA_MODEL_PATH。 |
| babyagi 0.1.4(functionz,pip 上的那个) | 0.1.4 · 无权重 | 后端建议 14B 起,Q4_K_M 约 9GB / Q8_0 约 15.7GB / bf16 约 28GB | 8K 起步,函数库一大、依赖图全进 prompt 就得 16K 以上 | 2024 年 10 月发布至今的最新 PyPI 版本,MIT、Flask 面板挂在 :8080/dashboard。requirements 里 sqlalchemy>=1.4,<2.0 这条硬约束会跟现代 Python 栈打架,务必单开 venv。适合做函数依赖可视化和自建函数实验。 |
| babyagi-2o(单文件极简版) | 约 185 行 · 无权重 | 后端必须支持 tool calling:14B Q4_K_M 约 9GB,32B Q8_0 约 35GB 更稳 | 建议 32K —— 工具定义会随迭代不断累积进 messages | 作者称之为「最简单的自建通用自主 Agent」。主循环写死 max_iterations = 50,靠模型调用 task_completed 提前跳出。它会 pip install 任意包再 exec,只应该跑在一次性实例里。 |
| activegraph v1.10.0 · examples/babyagi.py | v1.10.0 · 无权重 | 同后端;跑长时无人值守建议 30B-A3B Q4_K_M 约 18.6GB 或 32B Q8_0 约 35GB | 32K+,事件日志投影出来的图会持续进 prompt | Apache-2.0、Python 3.11+、pip install "activegraph[llm]"。把 BabyAGI 的循环重写成共享图上的三个 reactive behavior,append-only 事件日志是唯一真相源 —— 循环跑飞了能回放追责,这是原版最缺的东西。 |
02 —
后端模型选多大,卡就选多大
BabyAGI 不吃显存,喂它的那个模型吃;下面按你真实要跑的量级对号入座
跑通 classic/babyagi.py 三段循环,8B 级模型 Q4_K_M 验证流程
RTX 3090 24GB$0.193/卡·时
8B 的 Q4_K_M 权重约 4.9GB,24GB 里塞完模型还能顺手带一个 bge-m3 本地 embedding,把 ada-002 那条云端依赖也一起断掉。
functionz 自建函数 / babyagi-2o,需要稳定 tool calling 的 14B 量级
RTX 4090 24GB$0.540/卡·时
14B Q4_K_M 约 9GB 权重,32K 上下文的 KV 还有大把余量;想上 14B bf16(约 28GB)就换 RTX 5090 32GB $0.723/卡·时。
无人值守连跑,要求任务列表 JSON 一次解析成功的 32B / 30B-A3B
RTX A6000 48GB$0.817/卡·时
Qwen3-32B Q8_0 约 35GB、30B-A3B Q4_K_M 约 18.6GB,48GB 都装得下且 KV 宽裕 —— 循环稳不稳,八成取决于结构化输出会不会崩。
70B 级后端或 32B bf16,多个 Agent 实例并发跑长上下文
A100 SXM4 80GB$1.088/卡·时
70B 的 Q4_K_M 约 42.5GB、32B bf16 约 65GB,硬塞 48GB 卡会把 KV 挤到只能跑短上下文;80GB 才是能连跑一夜的配置。
03 —
四步把 BabyAGI 接到自己的端点上
关键不在装框架,而在让它别再偷偷打 gpt-4o
- 01
开一台卡,用 vLLM 起本地 OpenAI 兼容端点
选 NexGPU 预置的 vLLM 镜像,开机即用。这里有个省事的技巧:functionz 的 ai_functions.py 把模型名硬编码成了 gpt-4o,与其去改源码,不如直接用 --served-model-name 把你的本地模型伪装成 gpt-4o。tool calling 是 babyagi-2o 的硬需求,Qwen3 系列在 vLLM 下用 hermes 解析器。
vllm serve Qwen/Qwen3-14B --served-model-name gpt-4o --enable-auto-tool-choice --tool-call-parser hermes --max-model-len 32768 --port 8000 - 02
单开 venv 装 BabyAGI,把 litellm 指回本机
sqlalchemy>=1.4,<2.0 这条 pin 是 0.1.4 的既定事实,不隔离迟早跟别的库对撞。装完只要设两个环境变量,litellm 就会把所有 completion 请求转发到 127.0.0.1:8000,API key 随便填一个占位串即可,本地端点不校验。
python -m venv .venv && . .venv/bin/activate && pip install babyagi && export OPENAI_API_BASE=http://127.0.0.1:8000/v1 OPENAI_API_KEY=sk-local - 03
起 Flask 面板,注册函数、看依赖图
面板在 /dashboard,能看到函数、依赖关系、执行日志和密钥管理。注意它默认绑 0.0.0.0:8080 —— 公网 IP 上千万别裸奔,用 SSH 端口转发把 8080 拉回本地浏览器就好。另外 embedding 默认还是 text-embedding-ada-002,要彻底离线得把它换成本地向量模型。
python -c "import babyagi; babyagi.create_app('/dashboard').run(host='0.0.0.0', port=8080)" - 04
开自建循环前,先把护栏装上
classic/babyagi.py 的循环本身没有终止条件,babyagi-2o 也只有一个写死的 max_iterations = 50。上 self_build 之前,先设好迭代上限、给实例一个明确的关机时间点。真要长期跑,换 activegraph 那条线 —— 它的 append-only 事件日志能把每一步都回放出来,出问题不用靠猜。
pip install "activegraph[llm]" && python -m activegraph.examples.babyagi
一周的自建 Agent 实验,实际要花多少
按 Qwen3-14B Q4_K_M(约 9GB 权重)配 RTX 4090 24GB $0.540/卡·时 算:每天开 3 小时调 functionz 的函数库,一周跑 5 天共 15 小时,算力费 0.540 × 15 = $8.10。模型权重加依赖占 20GB,存储按 $0.414/GB·月 中位价,只留 5 天就销毁的话是 20 × 0.414 × 5 ÷ 30 ≈ $1.38。最后把函数库和执行日志导出,2GB 出网按 $0.0081/GB 计 ≈ $0.02。一周总计约 $9.50。如果只是想复现 2023 那个原版三段循环,8B Q4 配 RTX 3090 24GB $0.193/卡·时,跑 3 小时是 0.193 × 3 = $0.58,一顿早饭的钱。对照一下另一条路:同样 15 小时让一个没有终止条件的 while 循环去调云端 gpt-4o,token 账单是不封顶的,而这边停机即停止计费,秒级结算,没有起租门槛,也没有配额申请。
04 —
