名称: autogpt-代理 描述: 用于构建和部署连续代理的自主AI代理平台。当创建可视化工作流代理、部署持久性自主代理或构建复杂多步骤AI自动化系统时使用。 版本: 1.0.0 作者: Orchestra Research 许可证: MIT 标签: [代理, AutoGPT, 自主代理, 工作流自动化, 可视化构建器, AI平台] 依赖项: [autogpt-platform>=0.4.0]
AutoGPT - 自主AI代理平台
综合性平台,用于通过可视化界面或开发工具包构建、部署和管理连续AI代理。
何时使用 AutoGPT
使用 AutoGPT 时:
- 构建连续运行的自主代理
- 创建基于可视化工作流的AI代理
- 部署具有外部触发器(webhooks、计划任务)的代理
- 构建复杂多步骤自动化管道
- 需要无代码/低代码代理构建器
关键功能:
- 可视化代理构建器: 基于节点的拖放式工作流编辑器
- 持续执行: 代理通过触发器持久运行
- 市场: 预构建的代理和模块供共享/重用
- 模块系统: 用于LLM、工具、集成的模块化组件
- Forge 工具包: 用于自定义代理创建的开发工具
- 基准系统: 标准化代理性能测试
使用替代方案代替:
- LangChain/LlamaIndex: 如果需要更多代理逻辑控制
- CrewAI: 用于基于角色的多代理协作
- OpenAI Assistants: 用于简单的托管代理部署
- Semantic Kernel: 用于微软生态系统集成
快速开始
安装(Docker)
# 克隆仓库
git clone https://github.com/Significant-Gravitas/AutoGPT.git
cd AutoGPT/autogpt_platform
# 复制环境文件
cp .env.example .env
# 启动后端服务
docker compose up -d --build
# 启动前端(在单独终端中)
cd frontend
cp .env.example .env
npm install
npm run dev
访问平台
- 前端UI: http://localhost:3000
- 后端API: http://localhost:8006/api
- WebSocket: ws://localhost:8001/ws
架构概述
AutoGPT 有两个主要系统:
AutoGPT 平台(生产环境)
- 具有React前端的可视化代理构建器
- 带执行引擎的FastAPI后端
- PostgreSQL + Redis + RabbitMQ 基础设施
AutoGPT 经典(开发环境)
- Forge: 代理开发工具包
- 基准: 性能测试框架
- CLI: 用于开发的命令行界面
核心概念
图和节点
代理表示为包含通过链接连接的节点的图:
图(代理)
├── 节点(输入)
│ └── 块(AgentInputBlock)
├── 节点(处理)
│ └── 块(LLMBlock)
├── 节点(决策)
│ └── 块(SmartDecisionMaker)
└── 节点(输出)
└── 块(AgentOutputBlock)
块
块是可重用的功能组件:
| 块类型 | 用途 |
|---|---|
INPUT |
代理入口点 |
OUTPUT |
代理输出 |
AI |
LLM调用、文本生成 |
WEBHOOK |
外部触发器 |
STANDARD |
通用操作 |
AGENT |
嵌套代理执行 |
执行流程
用户/触发器 → 图执行 → 节点执行 → Block.execute()
↓ ↓ ↓
输入 队列系统 输出产生
构建代理
使用可视化构建器
- 打开代理构建器 在 http://localhost:3000
- 从块控制面板添加块
- 通过拖放连接节点 在句柄之间
- 配置输入 在每个节点中
- 运行代理 使用主操作栏
可用块
AI块:
AITextGeneratorBlock- 使用LLM生成文本AIConversationBlock- 多轮对话SmartDecisionMakerBlock- 条件逻辑
集成块:
- GitHub、Google、Discord、Notion连接器
- Webhook触发器和处理器
- HTTP请求块
控制块:
- 输入/输出块
- 分支和决策节点
- 循环和迭代块
代理执行
触发器类型
手动执行:
POST /api/v1/graphs/{graph_id}/execute
Content-Type: application/json
{
"inputs": {
"input_name": "value"
}
}
Webhook触发器:
POST /api/v1/webhooks/{webhook_id}
Content-Type: application/json
{
"data": "webhook payload"
}
计划执行:
{
"schedule": "0 */2 * * *",
"graph_id": "graph-uuid",
"inputs": {}
}
监控执行
WebSocket更新:
const ws = new WebSocket('ws://localhost:8001/ws');
ws.onmessage = (event) => {
const update = JSON.parse(event.data);
console.log(`节点 ${update.node_id}: ${update.status}`);
};
REST API轮询:
GET /api/v1/executions/{execution_id}
使用 Forge(开发)
创建自定义代理
# 设置forge环境
cd classic
./run setup
# 从模板创建新代理
./run forge create my-agent
# 启动代理服务器
./run forge start my-agent
代理结构
my-agent/
├── agent.py # 主代理逻辑
├── abilities/ # 自定义能力
│ ├── __init__.py
│ └── custom.py
├── prompts/ # 提示模板
└── config.yaml # 代理配置
实现自定义能力
from forge import Ability, ability
@ability(
name="custom_search",
description="搜索信息",
parameters={
"query": {"type": "string", "description": "搜索查询"}
}
)
def custom_search(query: str) -> str:
"""自定义搜索能力。"""
# 实现搜索逻辑
result = perform_search(query)
return result
代理基准测试
运行基准测试
# 运行所有基准测试
./run benchmark
# 运行特定类别
./run benchmark --category coding
# 使用特定代理运行
./run benchmark --agent my-agent
基准测试类别
- 编码: 代码生成和调试
- 检索: 信息查找
- Web: 网页浏览和交互
- 写作: 文本生成任务
VCR 磁带
基准测试使用记录的HTTP响应以提高可重复性:
# 记录新磁带
./run benchmark --record
# 运行现有磁带
./run benchmark --playback
集成
添加凭证
- 导航到 个人资料 > 集成
- 选择提供商(OpenAI、GitHub、Google等)
- 输入API密钥或授权OAuth
- 凭证加密并安全存储
在块中使用凭证
块自动访问用户凭证:
class MyLLMBlock(Block):
def execute(self, inputs):
# 凭证由系统注入
credentials = self.get_credentials("openai")
client = OpenAI(api_key=credentials.api_key)
# ...
支持的提供商
| 提供商 | 认证类型 | 使用场景 |
|---|---|---|
| OpenAI | API密钥 | LLM、嵌入 |
| Anthropic | API密钥 | Claude模型 |
| GitHub | OAuth | 代码、仓库 |
| OAuth | Drive、Gmail、Calendar | |
| Discord | 机器人令牌 | 消息传递 |
| Notion | OAuth | 文档 |
部署
Docker 生产环境设置
# docker-compose.prod.yml
services:
rest_server:
image: autogpt/platform-backend
environment:
- DATABASE_URL=postgresql://...
- REDIS_URL=redis://redis:6379
ports:
- "8006:8006"
executor:
image: autogpt/platform-backend
command: poetry run executor
frontend:
image: autogpt/platform-frontend
ports:
- "3000:3000"
环境变量
| 变量 | 用途 |
|---|---|
DATABASE_URL |
PostgreSQL连接 |
REDIS_URL |
Redis连接 |
RABBITMQ_URL |
RabbitMQ连接 |
ENCRYPTION_KEY |
凭证加密 |
SUPABASE_URL |
认证 |
生成加密密钥
cd autogpt_platform/backend
poetry run cli gen-encrypt-key
最佳实践
- 从简单开始: 从3-5个节点的代理开始
- 逐步测试: 每次更改后运行和测试
- 使用webhooks: 用于事件驱动代理的外部触发器
- 监控成本: 通过积分系统跟踪LLM API使用
- 版本控制代理: 在更改前保存工作版本
- 基准测试: 使用agbenchmark验证代理质量
常见问题
服务未启动:
# 检查容器状态
docker compose ps
# 查看日志
docker compose logs rest_server
# 重启服务
docker compose restart
数据库连接问题:
# 运行迁移
cd backend
poetry run prisma migrate deploy
代理执行卡住:
# 检查RabbitMQ队列
# 访问 http://localhost:15672 (guest/guest)
# 清除卡住的执行
docker compose restart executor
参考资料
资源
- 文档: https://docs.agpt.co
- 仓库: https://github.com/Significant-Gravitas/AutoGPT
- Discord: https://discord.gg/autogpt
- 许可证: MIT(经典)/ Polyform Shield(平台)