Skip to content

Commit 2090b9b

Browse files
committed
fix: Codex v3 地址不再追加 v1
1 parent e192e93 commit 2090b9b

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

src/components/providers/utils.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,15 @@ export const buildOpenAIChatCompletionsEndpoint = (baseUrl: string): string => {
6666
export const buildCodexResponsesEndpoint = (baseUrl: string): string => {
6767
const trimmed = normalizeUpstreamBaseUrl(baseUrl);
6868
if (!trimmed) return '';
69-
if (/\/v1\/responses$/i.test(trimmed)) {
69+
// Codex 兼容供应商可能把 Responses API 暴露在 /v3 下。
70+
// 已明确携带 v1/v3 版本的地址必须沿用该版本,不能再拼成 /v3/v1/responses。
71+
if (/\/v(?:1|3)\/responses$/i.test(trimmed)) {
7072
return trimmed;
7173
}
72-
if (/\/v1\/models$/i.test(trimmed)) {
74+
if (/\/v(?:1|3)\/models$/i.test(trimmed)) {
7375
return trimmed.replace(/\/models$/i, '/responses');
7476
}
75-
if (/\/v1$/i.test(trimmed)) {
77+
if (/\/v(?:1|3)$/i.test(trimmed)) {
7678
return `${trimmed}/responses`;
7779
}
7880
return `${trimmed}/v1/responses`;

src/services/api/models.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ const buildV1ModelsEndpoint = (baseUrl: string): string => {
3838
const normalized = normalizeApiBase(baseUrl);
3939
if (!normalized) return '';
4040
const trimmed = normalized.replace(/\/+$/g, '');
41-
if (/\/v1\/models$/i.test(trimmed)) return trimmed;
42-
if (/\/v1$/i.test(trimmed)) return `${trimmed}/models`;
41+
// Codex 的部分兼容供应商使用 /v3。若调用方已经给出 v3 版本前缀,
42+
// 模型发现必须继续请求 /v3/models,不能降回或追加成 /v3/v1/models。
43+
if (/\/v(?:1|3)\/models$/i.test(trimmed)) return trimmed;
44+
if (/\/v(?:1|3)$/i.test(trimmed)) return `${trimmed}/models`;
4345
return `${trimmed}/v1/models`;
4446
};
4547

0 commit comments

Comments
 (0)