Skip to content

FudanSELab/ToolComposer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ToolComposer

一个基于多代理系统的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

配置API信息

在各代理的Python文件中配置API信息。需要修改的文件包括:

  1. orchestrator/work_node.py - 主编排器的API配置
  2. worker_agent/openapi_agent/docker_agent/docker_agent.py - Docker代理
  3. worker_agent/openapi_agent/github_agent/github_agent.py - GitHub代理
  4. worker_agent/openapi_agent/gitlab_agent/gitlab_agent.py - GitLab代理
  5. worker_agent/openapi_agent/jenkins_agent/jenkins_agent.py - Jenkins代理
  6. 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 中替换占位符 为实际值:

  1. 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
  2. GitLab代理 - worker_agent/openapi_agent/gitlab_agent/prompts/execute_prompt.txt

    • 1. Gitlab: 后替换 为你的GitLab Private Token
  3. 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

启动服务

1. 启动各个代理服务

cd backend
python start_agents.py

这将启动以下代理服务:

2. 启动主服务器

在另一个终端中:

cd backend
python server.py

主服务器将在 http://localhost:30011 启动

使用示例

通过API使用

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 采用分层代理架构:

  1. Orchestrator (编排器): 负责接收用户请求,进行任务分解和调度
  2. Work Nodes (工作节点): 执行具体的子任务
  3. Specialized Agents (专业代理): 各工具领域的专业代理,负责执行具体操作

任务执行流程

  1. 用户发送自然语言请求
  2. 编排器接收请求并进行初始分析
  3. 任务被分解为多个子任务
  4. 子任务被分配给相应的专业代理
  5. 代理执行操作并返回结果
  6. 结果汇总后返回给用户

开发指南

添加新的工具代理

  1. backend/worker_agent/ 下创建新的代理目录
  2. 继承 OpenAPI_agentMCP_agent 基类
  3. 实现必要的方法
  4. start_agents.py 中注册新代理
  5. orchestrator/prompts/work_node/agent_list.json 中添加代理信息

自定义提示词

可以通过修改 orchestrator/prompts/ 目录下的提示词文件来调整系统行为。

注意事项

  • API密钥和敏感配置在各agent文件中硬编码,请勿将包含真实密钥的代码提交到公共仓库
  • 建议在发布前创建 .gitignore 文件排除包含敏感信息的配置文件
  • 生产环境请务必修改默认端口和添加适当的认证
  • 建议使用Docker容器化部署以获得更好的隔离性

贡献

欢迎提交Issue和Pull Request!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors