项目简介
Model-Compose是一个受'docker-compose'启发的声明式AI工作流编排工具。它允许您使用简单的YAML文件定义和运行AI模型管道,无需编写自定义代码。它能够轻松连接外部AI服务(如OpenAI、Anthropic、Google等)、运行本地AI模型、集成向量存储等,所有这些都集成在强大、可组合的工作流中。Model-Compose支持多种部署模式,包括作为HTTP服务器或MCP服务器,并提供内置Web UI和Docker部署能力。
主要功能点
- 无代码配置: 使用纯YAML文件配置AI工作流,无需编写脚本。
- 可组合性: 支持组件复用和多步骤工作流的构建。
- 生产就绪: 提供HTTP/MCP服务器、Web UI和Docker部署支持。
- 广泛连接: 可集成外部AI服务、本地模型、向量存储等多种资源。
- 流式与扩展: 支持实时流处理和事件驱动的自动化。
- 环境配置: 灵活的环境变量和设置管理。
- 外部集成: 支持Webhook、隧道和HTTP服务器集成。
- MCP服务器: 能够将定义的工作流自动转换为MCP工具,通过标准JSON-RPC协议与LLM客户端进行通信,提供上下文信息和功能。
安装步骤
- 使用pip安装:
pip install model-compose - 从源代码安装 (适合开发):
git clone https://github.com/hanyeol/model-compose.git cd model-compose pip install -e .注意: 需要Python 3.9或更高版本。
MCP服务器配置
Model-Compose可以将您的AI工作流转换为一个MCP服务器,供支持MCP协议的LLM客户端调用。以下是MCP客户端连接Model-Compose MCP服务器所需的配置信息示例(JSON格式):
{ "server_name": "我的AI工作流服务器", "command": "model-compose", "args": [ "up", "--config", "model-compose.yml", "--daemon", "--verbose" ], "environment": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY" }, "protocol": "jsonrpc", "transports": [ { "type": "stdio" }, { "type": "http", "url": "http://localhost:8080/jsonrpc" } ], "capabilities": { "tools": true, "resources": false, "prompts": false } }
- 'server_name': MCP服务器在客户端显示的用户友好名称,例如“我的AI工作流服务器”。
- 'command': 启动Model-Compose程序的命令行可执行文件路径,通常为'model-compose'。
- 'args': 启动Model-Compose服务器时传递给'command'的参数列表。
- 'up': 指示Model-Compose启动定义的所有服务。
- '--config model-compose.yml': 指定包含MCP服务器配置和工作流定义的YAML文件路径。
- '--daemon': (可选)以守护进程模式运行服务器,使其在后台持续运行。
- '--verbose': (可选)启用详细的日志输出,便于调试和监控。
- 'environment': 键值对形式的环境变量,用于在服务器启动时注入必要的密钥或配置,例如'OPENAI_API_KEY'。
- 'protocol': 客户端与服务器通信使用的协议,对于MCP服务器,此值始终为'jsonrpc'。
- 'transports': 定义客户端可以连接到服务器的传输方式列表。
- 'type: stdio': 表示通过标准输入/输出流进行通信,适合本地集成和某些开发环境。
- 'type: http': 表示通过HTTP协议进行通信。
- 'url': MCP服务器的JSON-RPC端点URL。如果'model-compose.yml'中'controller'的'port'设置为8080且没有'base_path',则URL通常是'http://localhost:8080/jsonrpc'。
- 'capabilities': 声明此MCP服务器所提供的核心功能。
- 'tools: true': 表示服务器会将配置文件中定义的工作流作为可被LLM调用的"工具"暴露。
- 'resources: false': 表示此MCP服务器当前不直接暴露数据"资源"管理功能。
- 'prompts: false': 表示此MCP服务器当前不直接暴露"Prompt模板"定义功能。
基本使用方法
-
创建'model-compose.yml'文件 (例如,一个简单的聊天工作流):
controller: type: mcp-server # 将控制器类型设置为mcp-server port: 8080 webui: port: 8081 components: - id: chatgpt type: http-client base_url: https://api.openai.com/v1 path: /chat/completions method: POST headers: Authorization: Bearer ${env.OPENAI_API_KEY} body: model: gpt-4o messages: - role: user content: ${input.prompt} workflows: - id: chat default: true jobs: - component: chatgpt这个配置会将'chat'工作流暴露为一个名为'chat'的MCP工具,它接受一个'prompt'作为输入,并调用OpenAI的GPT-4o模型。
-
创建'.env'文件 (包含API密钥):
OPENAI_API_KEY=your-key -
运行Model-Compose服务器:
model-compose up服务器将在'http://localhost:8080'启动MCP服务。支持MCP协议的LLM客户端即可通过该地址发现并调用您的'chat'工作流工具。同时,Web UI在'http://localhost:8081'启动,可用于测试和监控工作流。
信息
分类
AI与计算