CPA 安装及使用
目录
安装,运行,停止,卸载及更新
安装
- 克隆github仓库
cp config.example.yaml config.yaml,编辑config.yaml如本机文件- 注意这个里面的
127.0.0.1指的是宿主机的localhost,也就是容器对应的端口只监听宿主机自己发出的消息
- 注意这个里面的
- 编辑
docker-compose.yaml如本机文件- 注意这个里面的
host不要写成127.0.0.1,因为这是指容器的host,如果写成了127.0.0.1,代表容器的这个端口只监听来自容器自身的消息了,宿主机发消息就没用了
- 注意这个里面的
- 关闭VS Code,
docker compose up -d - 进入Web管理界面
http://localhost:8317/management.html输入密码成功登陆即可
运行
- 关闭VS Code(之后随便开)
docker compose start
停止
docker compose stop
卸载
docker compose down
更新
docker compose up -d
提供商
OAuth 登录
Codex OAuth
登录
- 点击“OAuth”登录
- 将链接复制到浏览器中完成登录即可
修改配置
- 修改优先级
Bug 修复
- OAuth认证的时候遇到了
Failed to exchange authorization code for tokens?
首先检查一下自己的浏览器是否可以打开auth.openai.com的网址,如果打不开,可能是IP被屏蔽了,修改***的配置文件,将IP换到美国,然后打开TUN模式(注意要先安装Service Mode),再进一下,如果可以登陆的话,就按照常规走就好了 - 如何判断这篇帖子提到的降智问题?
看我的L站里面的回答
AI 提供商
OpenAI 兼容
工作原理
将Base URL添加上chat/completions,同时请求头比较简洁,User-Agent是cli-proxy-openai-comp
所以对方一下子就会看出来这是CPA的请求
Claude
工作原理
将Base URL添加上v1/messages,请求头直接透传,所以对方不一定看得出来是CPA
Codex
工作原理
将Base URL添加上/responses,请求头直接透传,所以对方不一定看得出来是CPA
Gemini
工作原理
发送{baseURL}/v1beta/models/{model}:{action},其中 action 为 generateContent(生成内容)或 countTokens(计算 token 数)
请求头似乎不是透传,而是自己构造(到时候看一看日志确定)
配置文件
参数
disable-cooling:是否禁止冷却。如果不禁止,冷却时间为半小时request-log:是否记录详细日志。日志中的内容如下:=== REQUEST INFO ===:本次请求概览=== HEADERS ===:(下游应用)发送给CPA的请求头=== REQUEST BODY ===:(下游应用)发送给CPA的请求体=== API REQUEST x ===:CPA发送(给上游提供商)的请求头和请求体。x可能大于\(1\),因为这个请求在一些提供商中失败了,CPA会进行轮询=== API RESPONSE x ===:第x个提供商的返回内容=== RESPONSE ===:(给下游应用的)最终返回内容
请求策略
使用
Codex
ssh -R 127.0.0.1:8317:127.0.0.1:8317 <hostname>
-R表示远程对应端口的流量转发到本地的映射端口
FAQ
如果在同一个渠道里面,用同一个 alias 映射了多个模型,那么会怎么办?
对于 OpenAI 兼容来说,会依次询问这个渠道里面的所有模型;对于 codex 来说,只会询问第一个模型
如果要在 codex 中达到类似的效果,那么需要手动编辑文件 config.yaml,在里面找到密钥部分,为每个模型创建一模一样的渠道(除了模型本名不一样其他都一样)
为什么 CPA 没有按照预期那样轮询所有可能的模型?
除了之前说的 codex,还有可能是,cpa 不会对所有的状态码都轮询,有一些状态码是会直接终止的

浙公网安备 33010602011771号