一个基于多代理系统的DevOps工具编排平台,使用LLM来驱动各种开发运维操作。
ToolComposer 是一个智能的DevOps工具编排系统,它通过多代理协作的方式,让用户能够用自然语言来执行各种DevOps操作,包括Docker容器管理、GitHub/GitLab仓库操作、Jenkins构建任务、Kubernetes集群管理等。
- 🌐 多代理协作: 支持Docker、GitHub、GitLab、Jenkins、Kubernetes等多个专业代理
- 🤖 LLM驱动: 基于LangChain和LangGraph构建,利用大语言模型进行智能任务分解和执行
- 🔌 OpenAI兼容API: 提供与OpenAI API兼容的接口,可直接接入OpenWebUI等前端
- 📊 流式响应: 支持SSE流式响应,实时展示任务执行过程
- 🧩 可扩展架构: 易于添加新的工具代理
ToolComposer/
├── backend/ # 后端服务
│ ├── orchestrator/ # 任务编排器
│ │ ├── initialnode.py # 初始节点
│ │ ├── node_graph.py # 节点图构建
│ │ ├── work_node.py # 工作节点
│ │ └── prompts/ # 提示词模板
│ ├── worker_agent/ # 工作代理
│ │ ├── openapi_agent/ # OpenAPI代理
│ │ │ ├── docker_agent/ # Docker代理
│ │ │ ├── github_agent/ # GitHub代理
│ │ │ ├── gitlab_agent/ # GitLab代理
│ │ │ └── jenkins_agent/ # Jenkins代理
│ │ └── mcp_agent/ # MCP代理
│ │ └── kubernetes_agent/ # Kubernetes代理
│ ├── main_method.py # 主执行方法
│ ├── server.py # FastAPI服务器
│ ├── start_agents.py # 代理启动脚本
│ ├── pyproject.toml # 项目配置
│ └── requirements.txt # Python依赖
└── webopenui/ # Web UI(可选)
- Python 3.12+
- pip 或 uv
cd backend
pip install -r requirements.txt或使用 uv:
cd backend
uv sync在各代理的Python文件中配置API信息。需要修改的文件包括:
- orchestrator/work_node.py - 主编排器的API配置
- worker_agent/openapi_agent/docker_agent/docker_agent.py - Docker代理
- worker_agent/openapi_agent/github_agent/github_agent.py - GitHub代理
- worker_agent/openapi_agent/gitlab_agent/gitlab_agent.py - GitLab代理
- worker_agent/openapi_agent/jenkins_agent/jenkins_agent.py - Jenkins代理
- worker_agent/mcp_agent/kubernetes_agent/kubernetes_agent.py - Kubernetes代理
在每个文件中,找到以下配置项并修改为你的实际值:
base_url = "https://api.openai.com/v1" # LLM API地址
api_key = "your-api-key" # LLM API密钥
model_name = "gpt-4" # 使用的模型名称若代理访问系统时需要账号权限,在各代理的prompt文件中配置。需要在以下文件的 execute_prompt.txt 中替换占位符 ? 为实际值:
-
GitHub代理 -
worker_agent/openapi_agent/github_agent/prompts/execute_prompt.txt- 个人使用: 在
1. GitHub for personal usage:后替换?为你的GitHub Personal Access Token - 组织管理: 在
2. GitHub for organization management:后替换?为你的GitHub Token
- 个人使用: 在
-
GitLab代理 -
worker_agent/openapi_agent/gitlab_agent/prompts/execute_prompt.txt- 在
1. Gitlab:后替换?为你的GitLab Private Token
- 在
-
Jenkins代理 -
worker_agent/openapi_agent/jenkins_agent/prompts/execute_prompt.txt- 在
1. Jenkins:后替换?为username:token格式的认证信息
- 在
示例(GitHub):
### TOKEN INFO:
To authenticate API requests, include the platform-specific authorization token in the request header:
1. GitHub for personal usage:
ghp_xxxxxxxxxxxx # 替换为你的GitHub PAT
cd backend
python start_agents.py这将启动以下代理服务:
- Docker Agent: http://localhost:8000
- GitHub Agent: http://localhost:8001
- GitLab Agent: http://localhost:8002
- Jenkins Agent: http://localhost:8003
- Kubernetes Agent: http://localhost:8004
在另一个终端中:
cd backend
python server.py主服务器将在 http://localhost:30011 启动
ToolComposer 提供与OpenAI API兼容的接口:
curl -X POST http://localhost:30011/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "chatops-service",
"messages": [
{"role": "user", "content": "列出所有Docker容器"}
],
"stream": true
}'- "列出所有Docker容器"
- "创建一个新的GitHub仓库"
- "触发Jenkins构建任务"
- "查询Kubernetes中的命名空间"
- "查看GitLab项目的Issue"
- 核心框架: LangChain, LangGraph
- Web框架: FastAPI, Uvicorn
- 向量检索: FAISS
- LLM集成: OpenAI API兼容接口
- 其他: requests, python-dotenv, pydantic
ToolComposer 采用分层代理架构:
- Orchestrator (编排器): 负责接收用户请求,进行任务分解和调度
- Work Nodes (工作节点): 执行具体的子任务
- Specialized Agents (专业代理): 各工具领域的专业代理,负责执行具体操作
- 用户发送自然语言请求
- 编排器接收请求并进行初始分析
- 任务被分解为多个子任务
- 子任务被分配给相应的专业代理
- 代理执行操作并返回结果
- 结果汇总后返回给用户
- 在
backend/worker_agent/下创建新的代理目录 - 继承
OpenAPI_agent或MCP_agent基类 - 实现必要的方法
- 在
start_agents.py中注册新代理 - 在
orchestrator/prompts/work_node/agent_list.json中添加代理信息
可以通过修改 orchestrator/prompts/ 目录下的提示词文件来调整系统行为。
- API密钥和敏感配置在各agent文件中硬编码,请勿将包含真实密钥的代码提交到公共仓库
- 建议在发布前创建
.gitignore文件排除包含敏感信息的配置文件 - 生产环境请务必修改默认端口和添加适当的认证
- 建议使用Docker容器化部署以获得更好的隔离性
欢迎提交Issue和Pull Request!