|
|
@@ -2017,7 +2017,7 @@ EOD;
|
|
|
$usage = [];
|
|
|
$buffer = '';
|
|
|
|
|
|
- Log::info('开始读取 DeepSeek 流式响应');
|
|
|
+ dLog('deepseek')->info('开始读取 DeepSeek 流式响应');
|
|
|
|
|
|
// 逐行读取流式响应
|
|
|
while (!$body->eof()) {
|
|
|
@@ -2037,18 +2037,18 @@ EOD;
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // Log::info('收到原始行数据', ['line' => $line]);
|
|
|
+ // dLog('deepseek')->info('收到原始行数据', ['line' => $line]);
|
|
|
|
|
|
// 检查是否是 SSE 数据行
|
|
|
if (strpos($line, 'data: ') !== 0) {
|
|
|
- Log::warning('非 SSE 数据行', ['line' => $line]);
|
|
|
+ dLog('deepseek')->warning('非 SSE 数据行', ['line' => $line]);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
$data = substr($line, 6); // 移除 "data: " 前缀
|
|
|
|
|
|
if ($data === '[DONE]') {
|
|
|
- Log::info('收到结束标记');
|
|
|
+ dLog('deepseek')->info('收到结束标记');
|
|
|
break 2; // 跳出两层循环
|
|
|
}
|
|
|
|
|
|
@@ -2056,11 +2056,11 @@ EOD;
|
|
|
$json = json_decode($data, true);
|
|
|
|
|
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
|
|
- Log::warning('JSON 解析错误: ' . json_last_error_msg(), ['data' => $data]);
|
|
|
+ dLog('deepseek')->warning('JSON 解析错误: ' . json_last_error_msg(), ['data' => $data]);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // Log::info('成功解析 JSON', ['has_choices' => isset($json['choices'])]);
|
|
|
+ // dLog('deepseek')->info('成功解析 JSON', ['has_choices' => isset($json['choices'])]);
|
|
|
|
|
|
if (isset($json['choices'][0]['delta'])) {
|
|
|
$delta = $json['choices'][0]['delta'];
|
|
|
@@ -2069,7 +2069,7 @@ EOD;
|
|
|
// 注释掉以下内容则不返回d思维链内容
|
|
|
if (isset($delta['reasoning_content'])) {
|
|
|
$fullReasoningContent .= $delta['reasoning_content'];
|
|
|
- // Log::info('输出思维链内容', ['length' => strlen($delta['reasoning_content'])]);
|
|
|
+ // dLog('deepseek')->info('输出思维链内容', ['length' => strlen($delta['reasoning_content'])]);
|
|
|
yield [
|
|
|
'type' => 'reasoning',
|
|
|
'content' => $delta['reasoning_content'],
|
|
|
@@ -2080,7 +2080,7 @@ EOD;
|
|
|
// 处理最终回答内容
|
|
|
if (isset($delta['content'])) {
|
|
|
$fullContent .= $delta['content'];
|
|
|
- // Log::info('输出回答内容', ['length' => strlen($delta['content'])]);
|
|
|
+ // dLog('deepseek')->info('输出回答内容', ['length' => strlen($delta['content'])]);
|
|
|
yield [
|
|
|
'type' => 'content',
|
|
|
'content' => $delta['content'],
|
|
|
@@ -2092,21 +2092,21 @@ EOD;
|
|
|
// 获取使用统计信息
|
|
|
if (isset($json['usage'])) {
|
|
|
$usage = $json['usage'];
|
|
|
- Log::info('收到使用统计', ['usage' => $usage]);
|
|
|
+ dLog('deepseek')->info('收到使用统计', ['usage' => $usage]);
|
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('解析流式响应失败: ' . $e->getMessage(), ['line' => $line]);
|
|
|
+ dLog('deepseek')->error('解析流式响应失败: ' . $e->getMessage(), ['line' => $line]);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Log::info('流式读取完成', [
|
|
|
+ dLog('deepseek')->info('流式读取完成', [
|
|
|
'content_length' => strlen($fullContent),
|
|
|
'reasoning_length' => strlen($fullReasoningContent)
|
|
|
]);
|
|
|
- Log::info('完整内容: '.$fullContent);
|
|
|
+ dLog('deepseek')->info('完整内容: '.$fullContent);
|
|
|
|
|
|
// $fullContent = $this->test_content;
|
|
|
// $fullReasoningContent = [];
|
|
|
@@ -2419,7 +2419,7 @@ EOD;
|
|
|
$usage = [];
|
|
|
$buffer = '';
|
|
|
|
|
|
- Log::info('开始读取 DeepSeek 流式响应');
|
|
|
+ dLog('deepseek')->info('开始读取 DeepSeek 流式响应');
|
|
|
|
|
|
// 逐行读取流式响应
|
|
|
while (!$body->eof()) {
|
|
|
@@ -2439,18 +2439,18 @@ EOD;
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // Log::info('收到原始行数据', ['line' => $line]);
|
|
|
+ // dLog('deepseek')->info('收到原始行数据', ['line' => $line]);
|
|
|
|
|
|
// 检查是否是 SSE 数据行
|
|
|
if (strpos($line, 'data: ') !== 0) {
|
|
|
- Log::warning('非 SSE 数据行', ['line' => $line]);
|
|
|
+ dLog('deepseek')->warning('非 SSE 数据行', ['line' => $line]);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
$data = substr($line, 6); // 移除 "data: " 前缀
|
|
|
|
|
|
if ($data === '[DONE]') {
|
|
|
- Log::info('收到结束标记');
|
|
|
+ dLog('deepseek')->info('收到结束标记');
|
|
|
break 2; // 跳出两层循环
|
|
|
}
|
|
|
|
|
|
@@ -2458,11 +2458,11 @@ EOD;
|
|
|
$json = json_decode($data, true);
|
|
|
|
|
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
|
|
- Log::warning('JSON 解析错误: ' . json_last_error_msg(), ['data' => $data]);
|
|
|
+ dLog('deepseek')->warning('JSON 解析错误: ' . json_last_error_msg(), ['data' => $data]);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // Log::info('成功解析 JSON', ['has_choices' => isset($json['choices'])]);
|
|
|
+ // dLog('deepseek')->info('成功解析 JSON', ['has_choices' => isset($json['choices'])]);
|
|
|
|
|
|
if (isset($json['choices'][0]['delta'])) {
|
|
|
$delta = $json['choices'][0]['delta'];
|
|
|
@@ -2471,7 +2471,7 @@ EOD;
|
|
|
// 注释掉以下内容则不返回d思维链内容
|
|
|
if (isset($delta['reasoning_content'])) {
|
|
|
$fullReasoningContent .= $delta['reasoning_content'];
|
|
|
- // Log::info('输出思维链内容', ['length' => strlen($delta['reasoning_content'])]);
|
|
|
+ // dLog('deepseek')->info('输出思维链内容', ['length' => strlen($delta['reasoning_content'])]);
|
|
|
yield [
|
|
|
'type' => 'reasoning',
|
|
|
'content' => $delta['reasoning_content'],
|
|
|
@@ -2482,7 +2482,7 @@ EOD;
|
|
|
// 处理最终回答内容
|
|
|
if (isset($delta['content'])) {
|
|
|
$fullContent .= $delta['content'];
|
|
|
- // Log::info('输出回答内容', ['length' => strlen($delta['content'])]);
|
|
|
+ // dLog('deepseek')->info('输出回答内容', ['length' => strlen($delta['content'])]);
|
|
|
yield [
|
|
|
'type' => 'content',
|
|
|
'content' => $delta['content'],
|
|
|
@@ -2494,17 +2494,17 @@ EOD;
|
|
|
// 获取使用统计信息
|
|
|
if (isset($json['usage'])) {
|
|
|
$usage = $json['usage'];
|
|
|
- Log::info('收到使用统计', ['usage' => $usage]);
|
|
|
+ dLog('deepseek')->info('收到使用统计', ['usage' => $usage]);
|
|
|
}
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('解析流式响应失败: ' . $e->getMessage(), ['line' => $line]);
|
|
|
+ dLog('deepseek')->error('解析流式响应失败: ' . $e->getMessage(), ['line' => $line]);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Log::info('流式读取完成', [
|
|
|
+ dLog('deepseek')->info('流式读取完成', [
|
|
|
'content_length' => strlen($fullContent),
|
|
|
'reasoning_length' => strlen($fullReasoningContent)
|
|
|
]);
|
|
|
@@ -2726,7 +2726,7 @@ EOD;
|
|
|
$content = $pdf->getText();
|
|
|
return trim($content);
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('PDF解析失败: ' . $e->getMessage());
|
|
|
+ dLog('deepseek')->error('PDF解析失败: ' . $e->getMessage());
|
|
|
Utils::throwError('20003:PDF解析失败,请确保文件格式正确');
|
|
|
}
|
|
|
}
|
|
|
@@ -2748,7 +2748,7 @@ EOD;
|
|
|
}
|
|
|
return trim($content);
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('Word解析失败: ' . $e->getMessage());
|
|
|
+ dLog('deepseek')->error('Word解析失败: ' . $e->getMessage());
|
|
|
Utils::throwError('20003:Word解析失败,请确保文件格式正确');
|
|
|
}
|
|
|
}
|
|
|
@@ -2785,7 +2785,7 @@ EOD;
|
|
|
$content = $this->callVolcEngineOCR($base64Image);
|
|
|
return trim($content);
|
|
|
} catch (\Exception $e) {
|
|
|
- Log::error('图片OCR识别失败: ' . $e->getMessage());
|
|
|
+ dLog('deepseek')->error('图片OCR识别失败: ' . $e->getMessage());
|
|
|
Utils::throwError('20003:图片识别失败');
|
|
|
}
|
|
|
}
|
|
|
@@ -2843,7 +2843,7 @@ EOD;
|
|
|
}
|
|
|
|
|
|
if (empty($textLines)) {
|
|
|
- Log::warning('OCR识别结果为空', ['response' => $response_arr]);
|
|
|
+ dLog('deepseek')->warning('OCR识别结果为空', ['response' => $response_arr]);
|
|
|
return '';
|
|
|
}
|
|
|
|