# 自定义模型添加newapi中转地址调用报错

**URL:** <https://forum.qoder.com/t/newapi/12786>\
**Category:** Bug Reports\
**Tags:** settings, others\
**Created:** [September 23, 2026, 7:56am UTC](https://forum.qoder.com/t/newapi/12786 "2026-09-23T07:56:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![a\_r](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.qoder.com/a_r/32/4998_2.png) [@a\_r](https://forum.qoder.com/u/a_r)\
**Post date:** [September 23, 2026, 7:56am UTC](https://forum.qoder.com/t/newapi/12786/1 "2026-09-23T07:56:59Z")

</div>

## Issue Description

使用自定义 `openai-responses` 提供商，经 New-API 代理接入 Codex 后端时，遇到以下错误：

```auto
400 System messages are not allowed

```

检查 Qoder App 0.4.1 代码发现，已有的 Codex 兼容处理仅在请求 URL 完全匹配官方直连地址时启用，未覆盖通过代理接入相同后端的场景。

## Steps to Reproduce

1. 添加自定义提供商，协议选择 `openai-responses`。
2. Base URL 配置为代理地址，例如 `https://<proxy-host>/v1`。
3. 代理将请求转发到 `https://chatgpt.com/backend-api/codex/responses`，不额外转换消息角色。
4. 发送消息，检查出站请求及响应。

## Expected Behavior

通过代理接入 Codex 后端时，也应能启用系统消息兼容处理，而不是仅依赖官方 URL 的完全匹配。

建议提供兼容选项，或在 Responses 专用序列化中支持将 `system` 映射为 `developer`，同时保留消息内容及其他协议的原有行为。

## Actual Behavior

客户端仅针对以下直连地址，将系统消息提取到顶层 `instructions`：

```auto
https://chatgpt.com/backend-api/codex/responses

```

使用代理地址时，不会触发该处理，`input` 中仍包含 `role: "system"`，在拒绝该角色的后端上会导致请求失败。

本地通过以下最小修改完成了兼容补丁：

```auto
- role: message.role
+ role: message.role === "system" ? "developer" : message.role

```

**验证说明：** 原始 400 错误有历史抓包；0.4.1 仍发送 `system` 已通过本地代码及离线请求构造确认。补丁通过 30 项离线测试，但未对 0.4.1 进行新的服务端重放。

## **Screenshots / Screen Recordings**

暂无截图，可提供脱敏后的历史抓包、相关代码片段及离线测试记录。

## Operating System

Windows（x64）

## Current Qoder Version (Menu → About Qoder → Copy)

Qoder App 0.4.1
