模型感知 + 多后端池化 + OpenAI标准接口
随着大语言模型(LLM)的爆发,我们常常需要在本地或云端部署多个不同模型:llama.cpp、vLLM、OpenAI、Anthropic、Google Gemini、Ollama……这些服务接口各异,管理起来非常麻烦。 今天推荐的开源项目 Aiproxy,帮你通过一个 统一且兼容 OpenAI 的 API 网关,轻松接入并调度所有后端 LLM 服务。 项目地址: https://github.com/robcowart/aiproxy
什么是 Aiproxy?Aiproxy 是一个模型感知的反向代理,支持多种本地/远程 LLM 后端,并以 OpenAI API 风格对外提供统一服务。 它的核心设计目的是: 提供一个单一、兼容 OpenAI 的服务端点,让你能够透明地访问在 AI 实验室中运行的多个 llama.cpp 实例(或其他后端),实现请求路由、负载均衡、健康检查与故障转移。
简单来说,你只需和 Aiproxy 打交道,它帮你打理背后那一大堆模型服务。
核心特点- 多后端支持
支持 llamacpp、vLLM、OpenAI、Anthropic、Google、Ollama 等多种后端的原生或兼容 API。 - 模型感知
根据请求中的 model 名称,将请求路由到对应的模型池(pool)及具体的后端实例。 - 负载均衡与健康检查
自动在多实例之间分发请求,并定期检查后端健康状态,规避故障节点。 - 故障转移
当某个实例出错时,自动重试池内其他可用实例。 - 支持主流端点
- /v1/chat/completions – 聊天补全
- /v1/embeddings – 文本嵌入
- /v1/rerank – 重排序(部分后端支持)
- 简单配置,Docker 就绪
通过一个 YAML 文件即可定义模型池和后端实例,使用官方 Docker 镜像快速部署。
支持的“后端模式(schema)”schema 说明 llamacpp llama.cpp 服务器(兼容 OpenAI wire 格式,使用 /health 探针) 也适用于 vLLM openai OpenAI 官方 API 或任何 OpenAI 兼容服务 anthropic Anthropic API(/v1/messages) google Google Gemini API ollama Ollama 原生 API(/api/chat 等),支持 chat_completions 和 embeddings 提示:Ollama 也提供了 OpenAI 兼容的 /v1/* 端点,你可以使用 openai 模式来对接它。
配置示例一个经典的 config.yaml 如下: server: host: '0.0.0.0' port: 8080 api_key: 'your-unified-api-key' # 客户端调用时需提供 log_level: 'info' # 可选:开启 HTTPS tls: enabled: falsepools: - model: 'qwen3.5-122b' endpoint: 'chat_completions' schema: 'llamacpp' instances: - url: 'http://192.168.1.11:8080' api_key: 'backend-key-1' - url: 'http://192.168.1.12:8080' api_key: 'backend-key-2' session_timeout: 300 health_check_interval: 30 - model: 'nemotron-embed-1b-v2' endpoint: 'embeddings' schema: 'llamacpp' instances: - url: 'http://192.168.1.13:8080' api_key: 'embed-key' session_timeout: 300 health_check_interval: 30
你可以为不同的模型定义不同的池子,每个池子包含多个后端实例,Aiproxy 会自动做轮询和健康检查。
使用 Docker 一键启动# docker-compose.yamlservices: aiproxy: image: robcowart/aiproxy:latest container_name: aiproxy restart: unless-stopped volumes: - ./config.yaml:/etc/aiproxy/config.yaml:ro ports: - "8080:8080"
启动后,你的客户端只需像调用 OpenAI API 一样: curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer your-unified-api-key" \ -d '{ "model": "qwen3.5-122b", "messages": [{"role": "user", "content": "Hello!"}] }'
Aiproxy 会根据 model 自动路由到对应的 llamacpp 实例池。
当前项目状态警告!此项目仍在积极开发中。
- 主要用例(多 llama.cpp 实例)运行良好
- 对其他后端(OpenAI、Anthropic、Google、Ollama)的测试尚不全面
- 如果遇到问题,欢迎提交 Issue 或 PR
这意味着如果你想在生产环境使用非 llamacpp 的后端,建议先充分测试。但对于搭建本地多实例 llama.cpp 集群来说,它已经非常实用。
适合谁用?- 实验室或公司内部需要管理多台 LLM 服务器的团队
- 想用统一的 OpenAI 代码去调用不同后端(如本地 llama.cpp + 云端 OpenAI)
- 在多个 GPU 节点上运行 llama.cpp 或 vLLM,需要负载均衡和高可用
- 研究或开发 LLM 应用,希望后端服务无感知切换
相关链接- GitHub:https://github.com/robcowart/aiproxy
- 支持的后端文档请参阅项目 README
- 遇到问题?提交 Issues
最后的话Aiproxy 解决了一个非常实际的痛点:不同 LLM 后端接口不统一、多实例难以管理。 它虽然还在成长期,但对于 llamacpp / vLLM 用户来说已经相当靠谱。如果你也在本地或实验室环境中跑着多个 LLM 服务,不妨试试这个轻量级的“AI 网关”。 如果觉得有用,别忘了给项目点个 Star 支持一下开发者! |