一个轻量的 Docker 服务,用于将 OpenAI chat/completions 请求转换并转发到上游 OpenAI responses 接口。
- 提供
POST /v1/chat/completions - 提供
GET /v1/models(可选,由环境变量控制) - 支持非流式和流式(
stream: true)响应转换 - 支持
tools/tool_choice透传,并将上游函数调用转换回tool_calls - 优先转发请求中的
Authorization头;如果没有,则使用UPSTREAM_API_KEY
PORT:监听端口,默认值为8080UPSTREAM_BASE:上游responsesAPI 基础地址,默认值为https://new.xychatai.com/codex/v1UPSTREAM_API_KEY:上游 API Key,可选但推荐配置AVAILABLE_MODELS:用于/v1/models的可选 CSV 模型列表,默认为空
docker build -t codex-openai-proxy .仓库内置了一个 GitHub Actions 工作流,用于手动触发构建并发布镜像到 GHCR。
- 触发方式:GitHub Actions 页面手动运行
Publish GHCR Image - 发布地址:
ghcr.io/fqscfqj/codex-responses-proxy - 发布标签:
latest
拉取示例:
docker pull ghcr.io/fqscfqj/codex-responses-proxy:latest先在宿主机上准备上游基础地址,再通过 Docker 环境变量传入容器:
export UPSTREAM_BASE="https://your-upstream-host/codex/v1"
export UPSTREAM_API_KEY="YOUR_UPSTREAM_KEY"docker run --rm -p 8080:8080 \
-e UPSTREAM_BASE="$UPSTREAM_BASE" \
-e UPSTREAM_API_KEY="$UPSTREAM_API_KEY" \
codex-openai-proxy如果使用 Windows PowerShell:
$env:UPSTREAM_BASE = "https://your-upstream-host/codex/v1"
$env:UPSTREAM_API_KEY = "YOUR_UPSTREAM_KEY"
docker run --rm -p 8080:8080 `
-e UPSTREAM_BASE=$env:UPSTREAM_BASE `
-e UPSTREAM_API_KEY=$env:UPSTREAM_API_KEY `
codex-openai-proxy仓库已提供示例文件:compose.yaml。
默认直接使用 GHCR 预构建镜像,适合不想本地 build 的场景:
image: ghcr.io/fqscfqj/codex-responses-proxy:latest先准备环境变量:
export UPSTREAM_BASE="https://your-upstream-host/codex/v1"
export UPSTREAM_API_KEY="YOUR_UPSTREAM_KEY"
export AVAILABLE_MODELS="gpt-5.2-codex,gpt-4.1"然后启动:
docker compose up -d如果使用 Windows PowerShell:
$env:UPSTREAM_BASE = "https://your-upstream-host/codex/v1"
$env:UPSTREAM_API_KEY = "YOUR_UPSTREAM_KEY"
$env:AVAILABLE_MODELS = "gpt-5.2-codex,gpt-4.1"
docker compose up -d如果你需要基于当前仓库源码本地构建镜像,可以改用:
services:
proxy:
build:
context: .
image: codex-openai-proxy:local然后执行:
docker compose up --build -dcurl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.2-codex",
"messages": [
{"role": "user", "content": "请用一句简短的话打个招呼。"}
]
}'curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "gpt-5.2-codex",
"stream": true,
"messages": [
{"role": "user", "content": "从 1 数到 5"}
]
}'curl http://localhost:8080/health- 代理服务本身不会预设默认模型。
- 下游请求必须显式包含
model。 - 如果未设置
AVAILABLE_MODELS,则/v1/models返回空列表。