lh 1 месяц назад
Родитель
Сommit
19159717bb
1 измененных файлов с 24 добавлено и 6 удалено
  1. 24 6
      app/Services/DeepSeek/DeepSeekService.php

+ 24 - 6
app/Services/DeepSeek/DeepSeekService.php

@@ -347,14 +347,14 @@ class DeepSeekService
      * @param string     $model
      * @return \Generator
      */
-    private function wrapGenerateTextTokenRecord(\Generator $generator, int $uid, string $model): \Generator
+    private function wrapGenerateTextTokenRecord(\Generator $generator, int $uid, string $model, string $source = 'generateText'): \Generator
     {
         $recorded = false;
         foreach ($generator as $chunk) {
             if (!$recorded && isset($chunk['type']) && $chunk['type'] === 'done') {
                 $this->recordTextTokenOnly($uid, $this->pointsService->getTokensFromUsage(getProp($chunk, 'usage', [])), [
                     'model' => $model,
-                    'source' => 'generateText',
+                    'source' => $source,
                 ], $model);
                 $recorded = true;
             }
@@ -1239,12 +1239,23 @@ class DeepSeekService
         dLog('deepseek')->info('Gemini请求参数', ['model' => $model, 'stream' => $isStream]);
 
         if ($isStream) {
-            // 流式返回生成器
-            return $this->geminiStreamResponse($requestData, $model);
+            // 流式返回生成器,成功后记录 token 使用明细(不扣积分)
+            return $this->wrapGenerateTextTokenRecord(
+                $this->geminiStreamResponse($requestData, $model),
+                $this->getCurrentUid(),
+                $model,
+                'geminiGenerateText'
+            );
         }
 
-        // 非流式
-        return $this->geminiChatOnly($requestData, $model);
+        // 非流式:成功后记录 token 使用明细(不扣积分)
+        $result = $this->geminiChatOnly($requestData, $model);
+        $this->recordTextTokenOnly($this->getCurrentUid(), $this->pointsService->getTokensFromUsage($result['usage'] ?? []), [
+            'model' => $model,
+            'source' => 'geminiGenerateText',
+        ], $model);
+
+        return $result;
     }
 
     /**
@@ -14182,6 +14193,13 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
             ];
 
             $result = $this->chatOnly($post_data, 8);
+
+            // 调用成功即记录 token 使用明细(不扣积分),保证错误分析这类隐性 AI 调用进入统计口径
+            $this->recordTextTokenOnly($this->getCurrentUid(), $this->pointsService->getTokensFromUsage($result['usage'] ?? []), [
+                'model' => 'deepseek-v4-flash',
+                'source' => 'analyzeErrorMessage',
+            ], 'deepseek-v4-flash');
+
             $content = trim((string)($result['fullContent'] ?? ''));
             if ($content === '') {
                 return null;