From 4715acf5dbb7483f4501a1b74797c6694e9774ec Mon Sep 17 00:00:00 2001 From: hex2077 Date: Sun, 8 Mar 2026 20:47:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(grok):=20=E4=BF=AE=E5=A4=8D=E5=AA=92?= =?UTF-8?q?=E4=BD=93=E6=A8=A1=E5=9E=8B=E8=AF=B7=E6=B1=82=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E4=B8=AD=E7=BC=BA=E5=B0=91enable=5Fnsfw=E5=92=8Caspect=5Fratio?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除图像模型toolOverrides中冗余的disableNsfwFilter设置,统一在构建请求负载时处理NSFW逻辑。对于非视频的媒体模型,现在会正确添加enable_nsfw字段,并支持从请求体传递aspect_ratio参数。 --- VERSION | 2 +- src/providers/grok/grok-core.js | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index c63c9a7..8081b34 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.10.8 +2.10.8.1 diff --git a/src/providers/grok/grok-core.js b/src/providers/grok/grok-core.js index 1462045..b363fe1 100644 --- a/src/providers/grok/grok-core.js +++ b/src/providers/grok/grok-core.js @@ -378,7 +378,7 @@ export class GrokApiService { const isMediaModel = modelLower.includes('imagine') || modelLower.includes('video') || modelLower.includes('edit'); const isNsfw = isGrokNsfwModel(rawModelId) || requestBody.nsfw === true || requestBody.disableNsfwFilter === true; - return { + const payload = { "deviceEnvInfo": { "darkModeEnabled": false, "devicePixelRatio": 2, "screenWidth": 2056, "screenHeight": 1329, "viewportWidth": 2056, "viewportHeight": 1083 }, "disableMemory": false, "disableNsfwFilter": isNsfw, "disableSearch": false, "disableSelfHarmShortCircuit": false, "disableTextFollowUps": false, "enableImageGeneration": isMediaModel, "enableImageStreaming": isMediaModel, "enableSideBySide": true, @@ -387,6 +387,15 @@ export class GrokApiService { "responseMetadata": { "requestModelDetails": { "modelId": mapping.name }, "modelConfigOverride": modelConfigOverride }, "returnImageBytes": false, "returnRawGrokInXaiRequest": false, "sendFinalMetadata": true, "temporary": true, "toolOverrides": toolOverrides, }; + + if (isMediaModel && !modelLower.includes('video')) { + payload.enable_nsfw = isNsfw; + if (requestBody.aspect_ratio || requestBody.aspectRatio) { + payload.aspect_ratio = requestBody.aspect_ratio || requestBody.aspectRatio; + } + } + + return payload; } async generateContent(model, requestBody) { @@ -545,8 +554,7 @@ export class GrokApiService { requestBody.toolOverrides = { ...requestBody.toolOverrides, videoGen: true }; } } else if (isImageModel || isImageEditModel) { - const isNsfw = isGrokNsfwModel(rawModel) || requestBody.nsfw === true || requestBody.disableNsfwFilter === true; - requestBody.toolOverrides = { ...requestBody.toolOverrides, imageGen: isNsfw ? { disableNsfwFilter: true } : true }; + requestBody.toolOverrides = { ...requestBody.toolOverrides, imageGen: true }; } let fileAttachments = requestBody.fileAttachments || [];