项目简介
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
- 确保您已安装Docker和Docker Compose。
- 克隆Inference Gateway仓库: 'git clone https://github.com/inference-gateway/inference-gateway.git && cd inference-gateway'
- 使用提供的Docker Compose示例启动服务:'docker compose up -d' (参考 'examples/docker-compose/basic/' 目录)。
手动安装 (Go)
- 确保您已安装Go语言环境 (v1.25.0+)。
- 克隆Inference Gateway仓库: 'git clone https://github.com/inference-gateway/inference-gateway.git && cd inference-gateway'
- 构建二进制文件: 'go build -o bin/inference-gateway cmd/gateway/main.go'
- 运行服务: './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与计算