项目简介

Inference Gateway是一个先进的代理服务器,旨在简化大型语言模型(LLM)的访问和管理。它提供一个统一的接口来与OpenAI、Anthropic、Groq、Ollama等多个LLM提供商进行交互,并支持模型上下文协议(MCP)集成,能够自动发现并向LLM暴露外部工具和资源,无需客户端额外管理。

主要功能点

  • 统一LLM API访问: 通过单一接口代理请求到OpenAI、Ollama、Groq、Anthropic、Cohere、DeepSeek、Cloudflare、Google、Mistral等多种LLM API。
  • MCP工具集成: 全面支持Model Context Protocol,自动从MCP服务器发现并向LLM提供外部工具,简化LLM的功能调用。
  • 流式响应支持: 实时接收和转发LLM生成的流式(streaming)响应。
  • 可配置性强: 支持通过环境变量轻松配置API密钥、URLs、以及各种行为(如MCP启用、模型过滤)。
  • 监控和可观察性: 内置OpenTelemetry指标,支持与Prometheus和Grafana集成,提供全面的性能、使用和工具调用监控。
  • 生产就绪: 针对生产环境设计,支持Docker、Kubernetes部署,具备可扩展性、安全性和最小资源消耗。

安装步骤

使用Docker

  1. 确保您已安装Docker和Docker Compose。
  2. 克隆Inference Gateway仓库: 'git clone https://github.com/inference-gateway/inference-gateway.git && cd inference-gateway'
  3. 使用提供的Docker Compose示例启动服务:'docker compose up -d' (参考 'examples/docker-compose/basic/' 目录)。

手动安装 (Go)

  1. 确保您已安装Go语言环境 (v1.25.0+)。
  2. 克隆Inference Gateway仓库: 'git clone https://github.com/inference-gateway/inference-gateway.git && cd inference-gateway'
  3. 构建二进制文件: 'go build -o bin/inference-gateway cmd/gateway/main.go'
  4. 运行服务: './bin/inference-gateway'

服务器配置

Inference Gateway作为Model Context Protocol (MCP) 服务器,其核心职责是以标准化的方式向 LLM 客户端提供上下文信息和功能(主要是工具)。LLM客户端(即与Inference Gateway交互的应用程序)需要以下信息来连接和配置Inference Gateway作为其MCP服务器:

  • 名称 (name): "Inference Gateway" (用于识别服务器)
  • 命令 (command): 启动 Inference Gateway 服务器的可执行文件路径。例如,如果您手动编译,可能是 '["/path/to/inference-gateway/binary"]';如果您使用Docker,这通常是Docker容器的启动命令。
  • 参数 (args): 传递给 Inference Gateway 的命令行参数或环境变量。
    • '--mcp-enable': 'true' (启用 Inference Gateway 的MCP功能,使其能够处理LLM的工具调用)
    • '--mcp-servers': 'http://filesystem-server:3001/mcp,http://search-server:3002/mcp,...' (Inference Gateway自身作为MCP客户端连接的上游MCP工具服务器的URL列表,多个URL以逗号分隔。这些上游服务器提供的工具将由Inference Gateway聚合并暴露给LLM客户端。)
    • '--mcp-expose': 'true' (如果希望通过 '/v1/mcp/tools' 路径将聚合的MCP工具列表暴露给外部调用,应设置为 'true'。)
    • '--server-port': '8080' (Inference Gateway监听的端口)
    • LLM提供商API密钥: 诸如 'OPENAI_API_KEY=your_key'、'GROQ_API_KEY=your_key' 等LLM提供商的API密钥应作为环境变量提供给Inference Gateway运行环境,以便其能连接到实际的LLM服务。

MCP客户端的JSON配置信息 (此示例并非实际配置代码,仅为说明客户端如何配置Inference Gateway):

{
  "name": "Inference Gateway for LLM Tools",
  "command": ["/usr/local/bin/inference-gateway"], // 示例路径,根据实际部署调整
  "args": [
    "--mcp-enable", "true",
    "--mcp-servers", "http://filesystem-server:3001/mcp,http://search-server:3002/mcp", // 指向实际的MCP工具服务
    "--server-port", "8080"
  ],
  "description": "连接到 Inference Gateway,以统一的方式访问多种LLM并使用聚合的MCP工具服务。"
}

注意: 上述配置是示例,实际部署时Inference Gateway的启动命令和参数取决于您的具体环境。LLM客户端将通过配置好的命令和参数启动或连接到Inference Gateway进程,并通过标准的JSON-RPC协议与之通信。

基本使用方法

一旦Inference Gateway运行起来,它会监听指定的端口(默认为8080)。LLM客户端(如集成AI代理的应用程序)可以向其发送标准的OpenAI兼容API请求,Inference Gateway会负责将请求路由到正确的LLM提供商,并处理其中的MCP工具调用。

  • 发送聊天完成请求 (普通):

    curl -X POST http://localhost:8080/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "openai/gpt-3.5-turbo",
        "messages": [{"role": "user", "content": "Hello, world!"}]
      }'
  • 发送聊天完成请求 (带MCP工具调用): 如果Inference Gateway配置了MCP服务器(例如文件系统服务器),LLM可能会在其响应中建议调用一个工具。Inference Gateway会拦截此响应,执行工具,然后将工具结果反馈给LLM,以获得最终的自然语言回答。

    # LLM客户端的请求可能暗示使用一个工具,例如询问文件系统信息
    curl -X POST http://localhost:8080/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "openai/gpt-4",
        "messages": [{"role": "user", "content": "列出当前目录中的文件"}]
      }'
    # Inference Gateway会检测到LLM建议的“list_directory”工具调用,它会通过其内部MCP客户端调用实际的文件系统MCP工具服务,
    # 然后将工具执行结果(例如文件列表)返回给LLM,LLM再根据这些结果生成最终的自然语言回复给客户端。
  • 列出可用MCP工具: 如果Inference Gateway配置了暴露MCP工具('MCP_EXPOSE=true'),LLM客户端或其他应用程序可以查询它所聚合和暴露的工具列表:

    curl http://localhost:8080/v1/mcp/tools

关键词

LLM代理, AI工具集成, 多模型网关, 实时流, 模型路由

信息

分类

AI与计算