项目简介

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客户端进行通信,提供上下文信息和功能。

安装步骤

  1. 使用pip安装:
    pip install model-compose
  2. 从源代码安装 (适合开发):
    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模板"定义功能。

基本使用方法

  1. 创建'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模型。

  2. 创建'.env'文件 (包含API密钥):

    OPENAI_API_KEY=your-key
  3. 运行Model-Compose服务器:

    model-compose up

    服务器将在'http://localhost:8080'启动MCP服务。支持MCP协议的LLM客户端即可通过该地址发现并调用您的'chat'工作流工具。同时,Web UI在'http://localhost:8081'启动,可用于测试和监控工作流。

信息

分类

AI与计算