[PR #3] [MERGED] feat: 添加 OpenAI Responses API 代理转发 & effort 参数迁移 #3

Closed
opened 2026-02-27 05:53:11 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/HaoYan-A/claude-code-router/pull/3
Author: @HaoYan-A
Created: 2/7/2026
Status: Merged
Merged: 2/7/2026
Merged by: @HaoYan-A

Base: mainHead: feat/openai-responses-api-proxy


📝 Commits (1)

  • dff9ead feat: 迁移 budget_tokens → effort 参数并支持 API Key reasoningEffort 覆盖

📊 Changes

8 files changed (+143 additions, -32 deletions)

View changed files

📝 packages/backend/src/modules/proxy/channels/antigravity/converter.ts (+19 -3)
📝 packages/backend/src/modules/proxy/channels/kiro/converter.ts (+6 -3)
📝 packages/backend/src/modules/proxy/channels/openai/converter.ts (+34 -20)
📝 packages/backend/src/modules/proxy/channels/openai/models.ts (+1 -1)
📝 packages/backend/src/modules/proxy/proxy.service.ts (+36 -2)
📝 packages/backend/src/modules/proxy/types.ts (+45 -1)
📝 packages/shared/src/constants/models.ts (+1 -1)
📝 packages/shared/src/schemas/api-key.schema.ts (+1 -1)

📄 Description

Summary

  • OpenAI Responses API 代理转发: 新增 OpenAI 平台 channel,支持将 Claude API 请求转换为 OpenAI Responses API (/v1/responses) 格式,包括流式 SSE 响应转换、工具调用、reasoning 映射等
  • budget_tokens → effort 参数迁移: 统一使用 output_config.effort 控制思考深度,支持 thinking.type = 'adaptive',保持旧 budget_tokens 向后兼容
  • API Key reasoningEffort 覆盖: API Key 映射中配置的 reasoningEffort 优先于请求中的 effort 配置(auto 则走请求配置)

Changes

OpenAI 平台支持 (commit 1)

  • 新增 channels/openai/ 目录:converter、handler、models、index
  • proxy.service.ts 新增 executeOpenaiProxy() 方法
  • account-selector.ts 支持 OpenAI 账号选择
  • 前端新增 OpenAI 账号导入表单和模型映射 UI
  • Prisma schema 新增 OpenAI 相关字段

effort 参数迁移 (commit 2)

  • types.ts: 新增 EffortLevelOutputConfig 类型,ThinkingConfig 支持 adaptive,新增 resolveEffort() / effortToBudgetTokens() 工具函数
  • 各平台 converter 改用 effort 驱动(Kiro/Antigravity/OpenAI)
  • proxy.service.ts: getModelMapping() 返回 reasoningEffort,新增 applyReasoningEffortOverride() 实现 API Key 级别覆盖
  • shared 常量和 Zod schema 同步添加 max 等级

Test plan

  • pnpm build 编译通过
  • Kiro: adaptive + effort=medium / 旧格式 budget_tokens / disabled 均正常
  • OpenAI: adaptive + effort=max 流式响应正常、仅 output_config.effort 正常
  • API Key reasoningEffort 覆盖: mapping=high 强制覆盖 request effort=low
  • API Key reasoningEffort auto: 不覆盖请求配置

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/HaoYan-A/claude-code-router/pull/3 **Author:** [@HaoYan-A](https://github.com/HaoYan-A) **Created:** 2/7/2026 **Status:** ✅ Merged **Merged:** 2/7/2026 **Merged by:** [@HaoYan-A](https://github.com/HaoYan-A) **Base:** `main` ← **Head:** `feat/openai-responses-api-proxy` --- ### 📝 Commits (1) - [`dff9ead`](https://github.com/HaoYan-A/claude-code-router/commit/dff9eadebaa56fd9dde4e14beddc4ded0a0d34e0) ✨ feat: 迁移 budget_tokens → effort 参数并支持 API Key reasoningEffort 覆盖 ### 📊 Changes **8 files changed** (+143 additions, -32 deletions) <details> <summary>View changed files</summary> 📝 `packages/backend/src/modules/proxy/channels/antigravity/converter.ts` (+19 -3) 📝 `packages/backend/src/modules/proxy/channels/kiro/converter.ts` (+6 -3) 📝 `packages/backend/src/modules/proxy/channels/openai/converter.ts` (+34 -20) 📝 `packages/backend/src/modules/proxy/channels/openai/models.ts` (+1 -1) 📝 `packages/backend/src/modules/proxy/proxy.service.ts` (+36 -2) 📝 `packages/backend/src/modules/proxy/types.ts` (+45 -1) 📝 `packages/shared/src/constants/models.ts` (+1 -1) 📝 `packages/shared/src/schemas/api-key.schema.ts` (+1 -1) </details> ### 📄 Description ## Summary - **OpenAI Responses API 代理转发**: 新增 OpenAI 平台 channel,支持将 Claude API 请求转换为 OpenAI Responses API (`/v1/responses`) 格式,包括流式 SSE 响应转换、工具调用、reasoning 映射等 - **budget_tokens → effort 参数迁移**: 统一使用 `output_config.effort` 控制思考深度,支持 `thinking.type = 'adaptive'`,保持旧 `budget_tokens` 向后兼容 - **API Key reasoningEffort 覆盖**: API Key 映射中配置的 `reasoningEffort` 优先于请求中的 effort 配置(`auto` 则走请求配置) ## Changes ### OpenAI 平台支持 (commit 1) - 新增 `channels/openai/` 目录:converter、handler、models、index - `proxy.service.ts` 新增 `executeOpenaiProxy()` 方法 - `account-selector.ts` 支持 OpenAI 账号选择 - 前端新增 OpenAI 账号导入表单和模型映射 UI - Prisma schema 新增 OpenAI 相关字段 ### effort 参数迁移 (commit 2) - `types.ts`: 新增 `EffortLevel`、`OutputConfig` 类型,`ThinkingConfig` 支持 `adaptive`,新增 `resolveEffort()` / `effortToBudgetTokens()` 工具函数 - 各平台 converter 改用 effort 驱动(Kiro/Antigravity/OpenAI) - `proxy.service.ts`: `getModelMapping()` 返回 `reasoningEffort`,新增 `applyReasoningEffortOverride()` 实现 API Key 级别覆盖 - shared 常量和 Zod schema 同步添加 `max` 等级 ## Test plan - [x] `pnpm build` 编译通过 - [x] Kiro: `adaptive + effort=medium` / 旧格式 `budget_tokens` / `disabled` 均正常 - [x] OpenAI: `adaptive + effort=max` 流式响应正常、仅 `output_config.effort` 正常 - [x] API Key reasoningEffort 覆盖: mapping=high 强制覆盖 request effort=low ✅ - [x] API Key reasoningEffort auto: 不覆盖请求配置 ✅ 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 05:53:11 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/claude-code-router#3
No description provided.