Bladeren bron

1.调整全能模式策划相关的接口为开启思考,强度为高2.百度版glm大模型设置默认思考强度为高

lh 1 week geleden
bovenliggende
commit
a59560cb86
1 gewijzigde bestanden met toevoegingen van 41 en 8 verwijderingen
  1. 41 8
      app/Services/DeepSeek/DeepSeekService.php

+ 41 - 8
app/Services/DeepSeek/DeepSeekService.php

@@ -3550,8 +3550,8 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
         }
 
         // OpenAI Chat Completions 标准参数白名单。
-        // 注意:百度 GLM-5.x 始终思考,不支持 thinking 开关(传 disabled 会报 400),
-        // 因此不转发 thinking;仅透传网关原生支持的 reasoning_effort(low/high/max)。
+        // 注意:thinking 不在白名单中,由下方按模型单独控制
+        // (glm-5.2 支持关闭思考,glm-5.3 强制思考、不接受 thinking 参数)。
         $allowedKeys = [
             'temperature',
             'top_p',
@@ -3581,9 +3581,42 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
             }
         }
 
-        // 百度网关只接受 low / high / max;其它取值(如 none)会导致 400
-        if (isset($payload['reasoning_effort']) && !in_array($payload['reasoning_effort'], ['low', 'high', 'max'], true)) {
-            unset($payload['reasoning_effort']);
+        // ================= 思考模式策略(仅百度 GLM)=================
+        // 规则:调用方传了的参数以其为准,未传则按模型默认策略补齐。
+        //   glm-5.2:支持关闭思考,默认关闭(thinking.disabled),可显著缩短响应时间
+        //   glm-5.3:强制思考,网关不接受 thinking 参数(传 disabled 会返回 400),
+        //            因此统一不下发 thinking,只下发 reasoning_effort,默认 low
+        $validEfforts = ['low', 'high', 'max'];
+
+        // 调用方传入的 thinking(兼容 'enabled' 字符串与 ['type' => 'enabled'] 数组两种写法)
+        $inputThinking = null;
+        if (array_key_exists('thinking', $data)) {
+            $rawThinking = $data['thinking'];
+            if (is_array($rawThinking)) {
+                $rawThinking = getProp($rawThinking, 'type', null);
+            }
+            if (in_array($rawThinking, ['enabled', 'disabled'], true)) {
+                $inputThinking = $rawThinking;
+            }
+        }
+
+        // 调用方传入的思考强度;百度网关只接受 low / high / max,其它取值(如 none)视为未传
+        $inputEffort = null;
+        if (isset($payload['reasoning_effort']) && in_array($payload['reasoning_effort'], $validEfforts, true)) {
+            $inputEffort = $payload['reasoning_effort'];
+        }
+        unset($payload['reasoning_effort']);
+
+        if ($externalModel === 'glm-5.3') {
+            // glm-5.3 始终思考:即使传入 disabled(或未传)也强制走 reasoning_effort
+            $payload['reasoning_effort'] = $inputEffort ?: 'high';
+        } else {
+            // glm-5.2 支持关闭思考:未显式开启思考时默认关闭
+            $thinkingType = ($inputThinking === 'enabled') ? 'enabled' : 'disabled';
+            $payload['thinking'] = ['type' => $thinkingType];
+            if ($thinkingType === 'enabled') {
+                $payload['reasoning_effort'] = $inputEffort ?: 'high';
+            }
         }
 
         if ($stream && !isset($payload['stream_options'])) {
@@ -9130,7 +9163,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
         ];
 
         // 模型兼容性处理:deepseek-chat 和 deepseek-reasoner 映射到 deepseek-v4-flash
-        $thinkingMode = getProp($data, 'thinking', 'disabled'); // 默认非思考模式
+        $thinkingMode = getProp($data, 'thinking', 'enabled'); // 默认思考模式
         $reasoningEffort = getProp($data, 'reasoning_effort', 'high'); // 默认思考强度
         
         if ($model === 'deepseek-chat') {
@@ -10526,7 +10559,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
         }
 
         // 模型兼容性处理:deepseek-chat 和 deepseek-reasoner 映射到 deepseek-v4-flash
-        $thinkingMode = getProp($data, 'thinking', 'disabled'); // 默认非思考模式
+        $thinkingMode = getProp($data, 'thinking', 'enabled'); // 默认非思考模式
         $reasoningEffort = getProp($data, 'reasoning_effort', 'high'); // 默认思考强度
         
         if ($model === 'deepseek-chat') {
@@ -12137,7 +12170,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
         }
 
         // 模型兼容性处理:deepseek-chat 和 deepseek-reasoner 映射到 deepseek-v4-flash
-        $thinkingMode = getProp($data, 'thinking', 'disabled'); // 默认非思考模式
+        $thinkingMode = getProp($data, 'thinking', 'enabled'); // 默认非思考模式
         $reasoningEffort = getProp($data, 'reasoning_effort', 'high'); // 默认思考强度
         
         if ($model === 'deepseek-chat') {