From 1198ee161939c8826cde68f4a89b1aca8ed61a5a Mon Sep 17 00:00:00 2001 From: shaw Date: Fri, 10 Oct 2025 18:40:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dcodex=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E7=9A=84gpt-5=E6=A8=A1=E5=9E=8B=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BD=BF=E7=94=A8droid=E8=B4=A6=E5=8F=B7=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/droidRelayService.js | 33 +++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/services/droidRelayService.js b/src/services/droidRelayService.js index e274c625..ad473433 100644 --- a/src/services/droidRelayService.js +++ b/src/services/droidRelayService.js @@ -65,6 +65,30 @@ class DroidRelayService { return 'anthropic' } + _normalizeRequestBody(requestBody, endpointType) { + if (!requestBody || typeof requestBody !== 'object') { + return requestBody + } + + const normalizedBody = { ...requestBody } + + if (endpointType === 'openai' && typeof normalizedBody.model === 'string') { + const originalModel = normalizedBody.model + const trimmedModel = originalModel.trim() + const lowerModel = trimmedModel.toLowerCase() + + if (lowerModel === 'gpt-5') { + const mappedModel = 'gpt-5-2025-08-07' + if (originalModel !== mappedModel) { + logger.info(`🔄 将请求模型从 ${originalModel} 映射为 ${mappedModel}`) + } + normalizedBody.model = mappedModel + } + } + + return normalizedBody + } + async _applyRateLimitTracking(rateLimitInfo, usageSummary, model, context = '') { if (!rateLimitInfo) { return @@ -155,6 +179,7 @@ class DroidRelayService { } = options const keyInfo = apiKeyData || {} const normalizedEndpoint = this._normalizeEndpointType(endpointType) + const normalizedRequestBody = this._normalizeRequestBody(requestBody, normalizedEndpoint) try { logger.info( @@ -205,7 +230,7 @@ class DroidRelayService { // 构建请求头 const headers = this._buildHeaders( accessToken, - requestBody, + normalizedRequestBody, normalizedEndpoint, clientHeaders ) @@ -217,7 +242,7 @@ class DroidRelayService { } // 处理请求体(注入 system prompt 等) - const processedBody = this._processRequestBody(requestBody, normalizedEndpoint, { + const processedBody = this._processRequestBody(normalizedRequestBody, normalizedEndpoint, { disableStreaming }) @@ -236,7 +261,7 @@ class DroidRelayService { clientResponse, account, keyInfo, - requestBody, + normalizedRequestBody, normalizedEndpoint, skipUsageRecord ) @@ -264,7 +289,7 @@ class DroidRelayService { response, account, keyInfo, - requestBody, + normalizedRequestBody, clientRequest, normalizedEndpoint, skipUsageRecord