Просмотр исходного кода

优化兼容其他历史方法中根据模型使用deepseek或火山API

lh 3 месяцев назад
Родитель
Сommit
85e6a65e08
1 измененных файлов с 48 добавлено и 43 удалено
  1. 48 43
      app/Services/DeepSeek/DeepSeekService.php

+ 48 - 43
app/Services/DeepSeek/DeepSeekService.php

@@ -413,25 +413,27 @@ class DeepSeekService
             'stream'                => false  // 是否流式输出,如果设置为 True,将会以 SSE(server-sent events)的形式以流式发送消息增量。消息流以 data: [DONE] 结尾。
         ];
 
-        $client = new Client(['timeout' => 1200, 'verify' => false]);
-        $result = $client->post($this->url, ['json' => $post_data, 'headers' => $this->headers]);
-        $response = $result->getBody()->getContents();
-        $response_arr = json_decode($response, true);
-        $update_data = [];
-        $content = '';
-        if (isset($response_arr['choices']) && count($response_arr['choices']) > 0) {
-            $content = isset($response_arr['choices'][0]['message']['content']) ? $response_arr['choices'][0]['message']['content'] : '';
-            $update_data = [
-                'role'      => 'assistant',
-                'content'   => $response_arr['choices'][0]['message']['content'],
-                'usage'     => isset($response_arr['usage']) ? $response_arr['usage'] : []
-            ];
+        // 根据模型类型选择调用方法
+        $fullContent = '';
+        $usage = [];
+        
+        if (in_array($model, ['deepseek-reasoner', 'deepseek-chat'])) {
+            // R1和V3模型使用DeepSeek API
+            $chatResult = $this->chatOnly($post_data);
+        } else {
+            // 其他模型使用火山引擎API
+            $chatResult = $this->volcEngineChatCompletion($post_data);
+        }
+        
+        if (is_array($chatResult)) {
+            $fullContent = $chatResult['fullContent'];
+            $usage = $chatResult['usage'];
         }
 
         // 处理获取到的剧本数据
-        $script_content = handleScriptWords($content, $enable_emotion);
+        $script_content = handleScriptWords($fullContent, $enable_emotion);
         $result = [
-            'origin_content'    => $content,
+            'origin_content'    => $fullContent,
             'roles'             => getProp($script_content, 'roles'),
             'words'             => getProp($script_content, 'words'),
         ];
@@ -1378,7 +1380,6 @@ class DeepSeekService
      * @return array
      */
     public function chatWithFile($data) {
-        // dd(handleScriptContent(''));
         $script_id = getProp($data, 'script_id');
         $file = getProp($data, 'file');
         $content = getProp($data, 'content', '');
@@ -1435,28 +1436,32 @@ class DeepSeekService
             'stream'            => false
         ];
 
-        $client = new Client(['timeout' => 1200, 'verify' => false]);
-        $result = $client->post($this->url, ['json' => $post_data, 'headers' => $this->headers]);
-        $response = $result->getBody()->getContents();
-        $response_arr = json_decode($response, true);
-
-        $content = '';
+        // 根据模型类型选择调用方法
+        $fullContent = '';
         $usage = [];
-        if (isset($response_arr['choices']) && count($response_arr['choices']) > 0) {
-            $content = isset($response_arr['choices'][0]['message']['content']) ? $response_arr['choices'][0]['message']['content'] : '';
-            $usage = isset($response_arr['usage']) ? $response_arr['usage'] : [];
+        
+        if (in_array($model, ['deepseek-reasoner', 'deepseek-chat'])) {
+            // R1和V3模型使用DeepSeek API
+            $chatResult = $this->chatOnly($post_data);
+        } else {
+            // 其他模型使用火山引擎API
+            $chatResult = $this->volcEngineChatCompletion($post_data);
+        }
+        
+        if (is_array($chatResult)) {
+            $fullContent = $chatResult['fullContent'];
+            $usage = $chatResult['usage'];
         }
-        // \Log::info('返回值内容: '.$content);
 
         $script_arr = [];
         // 处理结果
-        if ($content) {
-            $script_arr = handleScriptContent($content);
+        if ($fullContent) {
+            $script_arr = handleScriptContent($fullContent);
         }
 
         return [
             'script'        => $script_arr,
-            'answer'        => $content,
+            'answer'        => $fullContent,
             'usage'         => $usage
         ];
     }
@@ -3665,22 +3670,22 @@ class DeepSeekService
             'stream'                => false  // 是否流式输出,如果设置为 True,将会以 SSE(server-sent events)的形式以流式发送消息增量。消息流以 data: [DONE] 结尾。
         ];
 
-        $client = new Client(['timeout' => 1200, 'verify' => false]);
-        $result = $client->post($this->url, ['json' => $post_data, 'headers' => $this->headers]);
-        $response = $result->getBody()->getContents();
-        $response_arr = json_decode($response, true);
-        $update_data = [];
-        $content = '';
-        if (isset($response_arr['choices']) && count($response_arr['choices']) > 0) {
-            $content = isset($response_arr['choices'][0]['message']['content']) ? $response_arr['choices'][0]['message']['content'] : '';
-            $update_data = [
-                'role'      => 'assistant',
-                'content'   => $response_arr['choices'][0]['message']['content'],
-                'usage'     => isset($response_arr['usage']) ? $response_arr['usage'] : []
-            ];
+        // 根据模型类型选择调用方法
+        $fullContent = '';
+        
+        if (in_array($model, ['deepseek-reasoner', 'deepseek-chat'])) {
+            // R1和V3模型使用DeepSeek API
+            $chatResult = $this->chatOnly($post_data);
+        } else {
+            // 其他模型使用火山引擎API
+            $chatResult = $this->volcEngineChatCompletion($post_data);
+        }
+        
+        if (is_array($chatResult)) {
+            $fullContent = $chatResult['fullContent'];
         }
 
-        return $content;
+        return $fullContent;
     }
 
     /**