Skip to content

scorpion-fish/codex-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codex Proxy

将智谱 GLM Coding Plan API 转换为 OpenAI Codex 兼容格式。

通过 litellm 代理层,让 Codex CLI 直接调用 GLM 系列模型(glm-4.7 / glm-5 / glm-5.1 / glm-5.2)。

架构

Codex CLI ──► [Codex Proxy :9002] ──► litellm ──► 智谱 GLM API
                   │
                   └─► filter_tools (仅保留 function 类型 tool)

目录结构

codex-proxy/
├── src/codex_proxy/        # 源码
│   ├── __init__.py         # 包初始化
│   ├── __main__.py         # 模块入口 (python -m codex_proxy)
│   ├── server.py           # 主服务:配置加载 → litellm 启动
│   ├── config.py           # 配置管理(文件 + 环境变量)
│   └── tool_filter.py      # Monkey-patch:过滤 GLM 不支持的 tool 类型
├── config/
│   └── providers.example.yaml  # 配置模板(复制后编辑)
├── install.sh              # systemd 一键安装脚本
├── pyproject.toml          # Python 项目元数据
├── requirements.txt        # 依赖清单
├── .env.example            # 环境变量模板
└── README.md

快速开始

1. 配置

# 复制配置模板
cp config/providers.example.yaml config/providers.yaml

# 编辑配置,填入你的 API Key
nano config/providers.yaml

或通过环境变量配置(见 .env.example):

export CODEX_PROXY_API_KEY=your-key-here

2. 运行

# 方式一:直接安装依赖后运行
pip install -r requirements.txt
python -m codex_proxy

# 方式二:一键安装为 systemd 服务
sudo bash install.sh

3. 配置 Codex CLI

编辑 ~/.codex/config.toml

model = "glm-5.2"
model_provider = "codex-proxy"

[model_providers.codex-proxy]
name = "codex-proxy"
base_url = "http://127.0.0.1:9002/v1"
experimental_bearer_token = "any-key"
requires_openai_auth = false
wire_api = "responses"

4. 验证

curl http://127.0.0.1:9002/health

配置项

所有配置均可通过 providers.yaml 或环境变量设置,环境变量优先级更高

配置项 环境变量 默认值 说明
api_base CODEX_PROXY_API_BASE https://open.bigmodel.cn/api/coding/paas/v4 上游 API 地址
api_key CODEX_PROXY_API_KEY API 密钥(必填)
models CODEX_PROXY_MODELS glm-4.7,glm-5,glm-5.1,glm-5.2 模型列表
host CODEX_PROXY_HOST 127.0.0.1 监听地址
port CODEX_PROXY_PORT 9002 监听端口

systemd 管理

sudo systemctl start   codex-proxy   # 启动
sudo systemctl stop    codex-proxy   # 停止
sudo systemctl restart codex-proxy   # 重启
sudo systemctl status  codex-proxy   # 状态
sudo journalctl -u codex-proxy -f    # 日志

技术细节

Tool 类型过滤

Codex CLI 通过 /v1/responses 接口发送请求时会附带多种 tool 类型(function、web_search、code_interpreter 等),但 GLM API 目前仅支持 function 类型。

litellm 的 responses handler 直接调用内部 completion 函数,绕过了常规 callback 钩子。因此通过 monkey-patch 在调用入口处拦截,清理不支持的 tool 类型。

依赖说明

litellm 的 orjson pin(==3.10.15)在 Python 3.14 上无可编译 wheel。安装策略是先 --no-deps 装 litellm,再手动装其余依赖。详见 requirements.txt

License

MIT

About

将智谱 GLM Coding Plan API 转换为 OpenAI Codex 兼容格式

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors