Skip to content

feat(gateway): /v1/responses——OpenAI Responses API 双向翻译(流式/非流式/previous_response_id LRU) - #2

Closed
jk-uzi wants to merge 6 commits into
developfrom
feat/gateway-responses
Closed

jk-uzi wants to merge 6 commits into
developfrom
feat/gateway-responses

Conversation

@jk-uzi

@jk-uzi jk-uzi commented Oct 4, 2026

Copy link
Copy Markdown
Owner

改动

  • 新增 app/responses_compat.py:responses_to_anthropic / anthropic_to_responses / ResponsesStreamConverter
    • instructions→system;input 条目(message/reasoning/function_call/function_call_output,兼容客户端无 type 的 chat 简写发法)→ Anthropic 消息与块,相邻同角色合并
    • reasoning.effort 映射:minimal/low→low、high→high、xhigh→max(medium 即上游默认档,不带字段)
    • 出站 thinking→reasoning(summary_text)、stop_reason=max_tokens→incomplete
    • 流式为 Responses SSE(event:+data: 帧、sequence_number 递增、无 [DONE] 哨兵、response.completed 收尾)
  • 新增 app/response_store.py:previous_response_id 内存 LRU(256 条、线程锁、重启清零);首轮 input 同样入库,保证第二轮续接不丢首轮 user 内容
  • 路由 POST /v1/responses 镜像 chat/completions:鉴权/provider/归一化/reqlog(kind=responses)/调度容灾全套复用,_dispatch 与 _try_account 零改动
  • 空映射结果本地 400 早失败(附可读提示),不再把空 messages 发上游换语焉不详的 1214

测试

  • 单测 45 + 集成 7(Mock 上游,离线可跑),分支全量 391 通过;ruff / mypy 通过
  • 真实上游冒烟:非流式 / 流式事件序 / previous_response_id 两轮续接均通过

依赖

基于 PR 1(fix/admin-settings-protocol),请先合 PR 1。

@jk-uzi jk-uzi closed this Oct 5, 2026
@jk-uzi jk-uzi reopened this Oct 5, 2026
@jk-uzi jk-uzi closed this Oct 5, 2026
@jk-uzi

jk-uzi commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

误开:本意是向上游 dengyie/zcode2api 提交 PR,此处(fork 自身)不需要。内容已改提上游。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant