一个将多种 AI 服务商 API 格式相互转换并转发到本地 OpenAI 兼容后端(如 Ollama、vLLM、LM Studio)的轻量级代理服务器,带 GUI 界面。
- 接收各服务商格式的 API 请求,统一转换为 OpenAI Chat Completions 格式转发到本地后端
- 将后端响应转换回对应服务商格式返回给客户端
- 支持流式(SSE)与非流式响应
- 系统托盘 + 主窗口 GUI,实时日志,内联配置编辑,一键应用重启
- Strategy 模式架构:各服务商独立 Handler,易于扩展
| 服务商 | 协议 | 端点 |
|---|---|---|
| Anthropic | Messages API | POST /v1/messages |
| 流式 Messages | POST /v1/messages(stream: true) |
|
| Token 计数 | POST /v1/messages/count_tokens |
|
| 模型列表 | GET /v1/models、GET /v1/models/{id} |
|
| 旧版 Complete | POST /v1/complete |
|
| 文件透传 | * /v1/files/** |
|
| Google Gemini | generateContent | POST /v1beta/models/{model}:generateContent |
| streamGenerateContent | POST /v1beta/models/{model}:streamGenerateContent |
|
| AWS Bedrock | Converse | POST /model/{modelId}/converse |
| Converse Stream | POST /model/{modelId}/converse-stream |
|
| Azure OpenAI | Chat Completions | POST /openai/deployments/{id}/chat/completions |
- Claude Code / Anthropic SDK(Python、Node.js)
- Google Generative AI SDK(Python、Node.js)
- AWS Boto3 Bedrock Runtime(自定义反序列化)
- Azure OpenAI SDK
- 任何兼容以上协议的工具(LangChain、LlamaIndex 等)
- CMake 3.16+
- Qt 6(Core、Network、Widgets 模块)
- C++17 兼容编译器(MSVC 2022、GCC 9+、Clang 10+)
推荐使用 Qt Creator 打开 CMakeLists.txt 后直接构建。
命令行构建(需 MSVC 环境):
cmake -B build -S .
cmake --build build --config Release启动后可在 GUI 界面内直接编辑配置并点击「应用并重启」,也可手动编辑 config/config.ini:
[listener]
; 代理监听端口,AI 客户端将连接此端口
port=8080
readTimeout=120000
maxRequestSize=10485760
minThreads=1
maxThreads=20
[openai]
; OpenAI 兼容后端地址(如 Ollama / vLLM / LM Studio)
api_base=http://localhost:11434
; 后端 API Key(无需认证时填 none)
api_key=none
; 当请求未指定模型时使用的默认模型
default_model=qwen2.5-72b-instruct- 启动本地 OpenAI 兼容后端(例如 Ollama):
ollama serve-
启动 polyai-proxy,GUI 界面自动读取配置并启动监听。
-
将客户端 API 地址指向代理:
# Claude Code / Anthropic SDK
export ANTHROPIC_BASE_URL=http://127.0.0.1:8080
export ANTHROPIC_API_KEY=any
claude
# Google Gemini SDK(Python)
import google.generativeai as genai
genai.configure(api_key="any", client_options={"api_endpoint": "http://127.0.0.1:8080"})
# Azure OpenAI SDK
from openai import AzureOpenAI
client = AzureOpenAI(azure_endpoint="http://127.0.0.1:8080", api_key="any", api_version="2024-02-01")polyai-proxy/
├── CMakeLists.txt
├── config/
│ └── config.ini # 配置文件
├── src/
│ ├── main.cpp # 程序入口
│ ├── mainwindow.h/.cpp # GUI 主窗口 + 系统托盘
│ ├── abstractproviderhandler.h/.cpp # 抽象基类(共享 NAM、透传)
│ ├── claudeproxyhandler.h/.cpp # 路由层(分发到各 Handler)
│ ├── anthropichandler.h/.cpp # Anthropic Messages API
│ ├── geminihandler.h/.cpp # Google Gemini API
│ ├── bedrockhandler.h/.cpp # AWS Bedrock Converse API
│ └── azurehandler.h/.cpp # Azure OpenAI API
├── scripts/
│ └── test_proxy.py # 测试脚本
└── third_party/
└── httpserver/ # stefanfrings Qt HTTP Server
本项目使用的 Qt HTTP Server(stefanfrings)遵循 LGPL 许可证。