标签 API 代理 下的文章

背景

使用 CPA 作为 API 代理,配合 OpenCode,想要通过 OpenAI 兼容格式调用 Gemini 3
系列模型。

环境配置:

  • CPA 部署在自用云服务器,配置了 OpenAI 兼容转发
  • 上游服务:https://***.com(支持多模型的 API 服务|newapi)
  • 本地客户端:OpenCode


问题现象

  1. 第一个错误:404 Not Found
  • POST “/v1/models/gemini-3-flash-preview:streamGenerateContent?alt=sse” 404

  • 请求直接返回 404,模型无法调用。

  1. 第二个错误:Invalid Role
  • 修复 404 后,出现新错误:

  • Invalid param: Please use a valid role: user, model.


问题分析

  1. 404 问题分析
  • 查看 CPA 日志发现请求路径是:/v1/models/gemini-3-flash-preview:streamGenerateContent?alt=sse; 这是 Gemini 原生 API 格式,而不是 OpenAI 兼容格式 (/v1/chat/completions)。

  • 原因:OpenCode 检测到模型名包含 gemini 关键字,自动切换到 Gemini 原生协议。

  1. Invalid Role 问题分析
  • 修复 404 后,查看日志发现请求走的是:POST “/v1/responses” 400; 这是 OpenAI 新的 Responses API(用于 GPT-5.x 等新模型),而不是传统的 /v1/chat/completions。

  • 原因:OpenCode 配置中 openai provider 包含 reasoningEffort 等参数,触发了新 API 格式。而 Responses API 使用 role: “assistant”,Gemini API 期望 role:“model”,上游服务没有正确转换角色名。


解决方案

  1. 步骤 1:CPA 配置 - 给 Gemini 模型设置别名

修改服务器上的 /path/to/cpa/config.yaml,给 Gemini 模型设置不含 “gemini” 关键字的别名:

 openai-compatibility: - name: claude base-url: https://***.com/v1 api-key-entries: - api-key: sk-xxxxx models: # Claude 模型 - name: claude-opus-4-5-20251101 alias: claude-opus-4-5 # Gemini 模型 - 使用不含 "gemini" 的别名 - name: gemini-3-flash-preview alias: "g3-flash-preview" - name: gemini-3-pro-preview alias: "g3-pro-preview" - name: gemini-3-pro-image-preview alias: "g3-pro-image-preview" 

重启 CPA 容器:
docker restart cpa

  1. 步骤 2:OpenCode 配置 - 创建独立 Provider
    关键点:不要把 Gemini 模型放在带有 reasoningEffort 等参数的 openai provider
    下,否则会触发 Responses API。
    创建一个独立的 provider:
{ "provider": { "openai": { "name": "OpenAI", "options": { "baseURL": "https://***.com/v1", "apiKey": "your-key", "reasoningEffort": "medium" // 这会触发 Responses API }, "models": { "gpt-5.2": { ... } // GPT 模型放这里 } }, "openai-compat": { "name": "Gemini via CPA", "options": { "baseURL": "https://***.com/v1", "apiKey": "your-key" // 注意:不要加 reasoningEffort 等参数! }, "models": { "g3-pro-preview": { "name": "Gemini 3 Pro Preview", "limit": { "context": 1048576, "output": 65535 } }, "g3-flash-preview": { "name": "Gemini 3 Flash Preview", "limit": { "context": 1048576, "output": 65535 } }, "g3-pro-image-preview": { "name": "Gemini 3 Pro Image Preview", "limit": { "context": 1048576, "output": 65536 } } } } } } 


问题总结

问题原因解决方案
404 错误模型名含 gemini,OpenCode 自动用 Gemini 原生协议设置不含 gemini 的别名
Invalid RolereasoningEffort 参数触发 Responses API,角色名不兼容创建独立 provider,不加 reasoning 参数


关键

  1. 模型名称很重要:某些客户端会根据模型名自动选择协议,避免使用原厂商关键字(如 gemini、claude)可以强制走 OpenAI 兼容格式。
  2. OpenAI API 有两套格式:
    • 传统:/v1/chat/completions
    • 新版:/v1/responses(GPT-5.x,带 reasoning 功能)

自用经验仅供参考


📌 转载信息
转载时间:
2026/1/21 21:42:07

打开上面的网址,默认会选择第一个 GCP 项目,如果和反代的项目不一致,再选择对应的
然后勾选下面的预览版,保存即可。


📌 转载信息
原作者:
Zephyr1996
转载时间:
2026/1/18 15:49:09

起因

up 在使用 Claude code 之后,觉得这种 CLI 工具比 IDE 中的 AI 工具更好用一点 (。・ω・。)ノ♡,于是就想到了 github copilot

GitHub copilot 就算是 free 账户也会有大量的免费的限额,而且 up 还申请了 GitHub Student Pack,可以免费使用 GitHub copilot (≧◡≦) ♡

然后就在 GitHub 上找到了 copilot-api 这个项目 copilot-api

简单使用

项目支持 docker 和本地启动两种方式。项目支持多个参数启动,实现各种额外的功能(例如自定义监听端口,设置发送次数频率上限)

同时,还支持展示 GitHub copilot 的使用情况,例如剩余的请求次数等。


copilot-api.cmd check-usage

或者访问 https://ericc-ch.github.io/copilot-api?endpoint=http://localhost:4141/usage 查看使用情况。

~/.claude 文件夹中的 settings.json 文件中,添加以下配置

 "ANTHROPIC_BASE_URL": "http://localhost:4141", "ANTHROPIC_AUTH_TOKEN": "dummy",//任意的“token”都行 "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4.5", "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4.5", "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4.5", 

然后就可以愉快地使用 GitHub copilot 反代出来的 claude(≧▽≦)/

疑问╰(°▽°)╯

copilot 在 vscode 中的上下文似乎是被限制在了 128K,那么 copilot-api 反代出来的 claude 应该也是有这个限制的 (#°Д°)

Important

给项目原作者点个 star 吧,我只是发现并分享了它 (。・ω・。)ノ♡·


📌 转载信息
转载时间:
2026/1/18 09:11:06

这又是一个重复造轮子系列,目的是解决一些公益站不支持 CC、模型不支持工具调用的问题,该项目可以让不支持工具调用的模型获得工具调用的能力
在佬友项目B4U2CC:让 B4U 支持 Claude Code+思考的基础上进行大量的迭代更新,

  • 支持了多组配置,可以配置多个站点,使用渠道+模型名称的形式进行分流
  • 支持的密钥透传
  • 支持使用 firecrawl 来模拟官方 api 才有的的 web searchweb fetch 功能 (目前仅 Preview 分支,测试镜像 ghcr.io/passerby1011/cc-proxy:preview
  • 在 b4u2cc 的基础上改用了 @curaalizm 佬友项目的随机字符标识 感觉更稳定? 好像?
  • 增加了远端 pg 数据库存储配置(hugging face 部署,冲!!!)
  • 增加了工具内部重试 (测试 ing)
  • 增加了 web 管理界面 (/admin),配置更方便
┌─────────────┐
│ Claude Code │ ──① Claude API 请求──▶
└─────────────┘    (包含 tools 定义)

┌──────────────────────────────────────┐
│           cc-proxy 代理层             │
│                                      │
│  ② 提示词注入 (prompt_inject.ts)       │
│     • 工具定义 → XML 格式提示词         │
│     • 注入到 system prompt            │
│     • 生成唯一分隔符                   │
│                                      │
│  ③ 协议转换 (map_claude_to_openai.ts) │
│     • Claude Messages API            │
│       → OpenAI Chat Completions      │
│     • 保持流式兼容                     │
│                                      │
│  ④ 上游转发 (upstream.ts)             │
│     • 支持 OpenAI 协议                │
│     • 支持 Anthropic 协议             │
│     • SSE 流式处理                    │
└──────────────────────────────────────┘
                    │
                    ▼
         ┌──────────────────┐
         │   上游 AI 服务    │ ──⑤ 返回 XML 格式的工具调用──▶
         │ (GPT-4/Claude等)  │
         └──────────────────┘

┌──────────────────────────────────────┐
│           cc-proxy 代理层             │
│                                      │
│  ⑥ 智能解析 (parser.ts)               │
│     • 识别 XML 工具调用块              │
│     • 识别 <thinking> 块              │
│     • 提取工具名称和参数                │
│                                      │
│  ⑦ 标准化输出 (claude_writer.ts)       │
│     • 生成标准 Claude SSE 事件         │
│     • tool_use 消息块                 │
│     • thinking 消息块                 │
└──────────────────────────────────────┘
                    │
                    ▼
         ┌─────────────┐
         │ Claude Code │ ◀── 标准 Claude API 响应
         └─────────────┘
Tip

使用 firecrawl 来模拟官方 api 才有的的 web searchweb fetch,这个思路可以引入到哪些能力更健全逆向模型上,更好的支持 cc
这个项目所有的工具调用都是用提示词来实现的,感觉还是太勉强

测试截图,模型来自 elysiver 的 claude-4.5-sonnet
吐槽:这数据从哪来的,编的和真一样


致谢:

Danger

部署者能看到您的部分聊天上下文推荐自行部署以保证数据安全

Tip

可能有非常多的 bug,代码都来自 claude,anthropic 公司对此负全责,有问题也可以找它修改


📌 转载信息
原作者:
passerby
转载时间:
2026/1/10 19:22:01

最近折腾了一下 kiro2api,用的站内佬的开源项目 `kiroGate`

发现问题还挺多的,折腾了老半天,我自己修复了一些问题

1. 增加了思考模式的支持,支持 Claude 的扩展思考模式
2. 增加了图片的支持
3. 管理页面添加kiro账户详情功能
4. 其他等等

不过感觉还是有点问题,比如上下文不会中断 压缩也有问题等

改不动了…. 继续用公益佬们的 cc 了,哈哈哈

还有一些账号额度,不想用了….

所以分享出来给佬们用用,佬们 尝尝咸淡

{ "alwaysThinkingEnabled": true, "env": { "ANTHROPIC_AUTH_TOKEN": , "ANTHROPIC_BASE_URL": "https://awei.mail-account.biz", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", "DISABLE_TELEMETRY": "1" }, "skipWebFetchPreflight": true, } 

话说有没有优秀稳定一点的 kiro2api 的项目可以抄一抄的??


📌 转载信息
原作者:
cao_Jacker
转载时间:
2026/1/5 12:20:35