Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages