From 7fdc25df3cd391bd1899eaec2771d7143a1fe8dc Mon Sep 17 00:00:00 2001 From: ianshaw Date: Mon, 12 Jan 2026 11:39:45 -0800 Subject: [PATCH] =?UTF-8?q?fix(gateway):=20=E4=BF=AE=E5=A4=8D=20base=5Furl?= =?UTF-8?q?=20=E5=8C=85=E5=90=AB=20/chat/completions=20=E6=97=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E6=8B=BC=E6=8E=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 当账号的 base_url 配置为 https://example.com/v1/chat/completions 时 - 代码直接追加 /responses,导致路径变成 /v1/chat/completions/responses - 上游返回 404 错误 修复: - 在追加 /responses 前,先移除 base_url 中的 /chat/completions 后缀 - 确保最终路径为 https://example.com/v1/responses 影响范围: - OpenAI API Key 账号的测试接口 - OpenAI API Key 账号的实际网关请求 Related-to: #231 --- backend/internal/service/account_test_service.go | 5 ++++- backend/internal/service/openai_gateway_service.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/internal/service/account_test_service.go b/backend/internal/service/account_test_service.go index 8419c2b4..c17aa3ff 100644 --- a/backend/internal/service/account_test_service.go +++ b/backend/internal/service/account_test_service.go @@ -332,7 +332,10 @@ func (s *AccountTestService) testOpenAIAccountConnection(c *gin.Context, account if err != nil { return s.sendErrorAndEnd(c, fmt.Sprintf("Invalid base URL: %s", err.Error())) } - apiURL = strings.TrimSuffix(normalizedBaseURL, "/") + "/responses" + // Remove /chat/completions suffix if present, then add /responses + normalizedBaseURL = strings.TrimSuffix(normalizedBaseURL, "/") + normalizedBaseURL = strings.TrimSuffix(normalizedBaseURL, "/chat/completions") + apiURL = normalizedBaseURL + "/responses" } else { return s.sendErrorAndEnd(c, fmt.Sprintf("Unsupported account type: %s", account.Type)) } diff --git a/backend/internal/service/openai_gateway_service.go b/backend/internal/service/openai_gateway_service.go index 214da20a..0e228fb1 100644 --- a/backend/internal/service/openai_gateway_service.go +++ b/backend/internal/service/openai_gateway_service.go @@ -740,6 +740,9 @@ func (s *OpenAIGatewayService) buildUpstreamRequest(ctx context.Context, c *gin. if err != nil { return nil, err } + // Remove /chat/completions suffix if present, then add /responses + validatedURL = strings.TrimSuffix(validatedURL, "/") + validatedURL = strings.TrimSuffix(validatedURL, "/chat/completions") targetURL = validatedURL + "/responses" } default: