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
编辑 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_AGENT | User-Agent | openapi |
go mod tidy go build -o model_proxy . ./model_proxy
docker build -t model_proxy . docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml model_proxy
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
}'