logo
0
0
WeChat Login

Model Proxy

OpenAI 标准格式的模型代理服务(Go),自动注入模型供应商所需的额外 Header,流式 SSE 透传。

架构

Admin (OpenAI 标准格式) │ POST /v1/chat/completions ▼ ┌──────────────┐ │ Model Proxy │ 自动注入: │ :8080 │ User-Agent │ (Go) │ X-Conversation-ID │ 5.9MB 单文件 │ X-Conversation-Message-ID └──────┬───────┘ X-Conversation-Request-ID │ │ POST /v2/openapi/chat/completions ▼ ┌──────────────┐ │ Model 供应商 │ SSE 流式响应原样回传 │ (可配置地址) │ └──────────────┘

项目结构

model_proxy/ ├── main.go # 入口 ├── internal/ │ ├── config/config.go # 配置加载 │ ├── proxy/proxy.go # 核心反向代理 │ └── middleware/middleware.go # 日志/Recovery/CORS ├── config.yaml # 配置文件 ├── Dockerfile ├── go.mod / go.sum └── README.md

快速开始

1. 配置后端模型服务商地址

编辑 config.yaml:

server: port: 8080 upstream: # 模型服务商地址 - 修改此处切换供应商 base_url: "https://staging.codebuddy.cn" path_prefix: "/v2/openapi" # 上游 API Key(留空则透传客户端的 Authorization) api_key: "" headers: user_agent: "openapi"

也可通过环境变量覆盖(优先级最高):

环境变量说明默认值
PROXY_PORT监听端口8080
UPSTREAM_BASE_URL模型服务商地址https://staging.codebuddy.cn
UPSTREAM_PATH_PREFIX路径前缀/v2/openapi
UPSTREAM_API_KEY上游 API Key(透传客户端的)
HEADER_USER_AGENTUser-Agentopenapi

2. 编译运行

go mod tidy go build -o model_proxy . ./model_proxy

3. Docker

docker build -t model_proxy . docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml model_proxy

4. 环境变量方式运行(无需配置文件)

UPSTREAM_BASE_URL=https://your-model-provider.com \ UPSTREAM_PATH_PREFIX=/v2/openapi \ UPSTREAM_API_KEY=your_key \ ./model_proxy

使用方式

Admin 后台配置模型时,将 Base URL 指向 Proxy:

http://<proxy_host>:8080/v1

测试

# 健康检查 curl http://localhost:8080/healthz # 流式对话 curl -X POST http://localhost:8080/v1/chat/completions \ -H "Authorization: Bearer <your_key>" \ -H "Content-Type: application/json" \ -d '{ "model": "glm-4.7", "messages": [{"role": "user", "content": "你好"}], "stream": true, "max_tokens": 256 }'