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
  }'

About

model_proxy01

Language
Go96%
Dockerfile4%