作者 lyh

gx

... ... @@ -61,18 +61,24 @@ class ChatLogic extends BaseLogic
];
}
$data = ['message' => $message];
return response()->stream(function () use ($gptService, $data, $chatId) {
$fullResponse = ''; // 存储完整 AI 回复
$response = $gptService->get_ai_chat($data); // 获取流
while (!$response->eof()) {
$chunk = $response->read(1024); // 逐步读取数据块
echo $gptService->en_sse_data($chunk); // **封装 SSE 数据**
$fullResponse = ''; // **存储完整 AI 回复**
$stream = $gptService->get_ai_chat($data); // 获取流
if ($stream) {
while (!$stream->eof()) {
$chunk = $stream->read(1024); // **逐步读取数据块**
echo "data: " . json_encode(['message' => $chunk], JSON_UNESCAPED_UNICODE) . "\n\n";
ob_flush();
flush();
$fullResponse .= $chunk; // 拼接完整 AI 回复
$fullResponse .= $chunk; // **拼接完整 AI 回复**
}
} else {
$fullResponse = '服务器繁忙,请重试';
echo "data: " . json_encode(['message' => $fullResponse], JSON_UNESCAPED_UNICODE) . "\n\n";
}
// **流结束后,保存完整的 AI 回复**
$this->saveChatItem($chatId, $fullResponse ?: '服务器繁忙,请重试', 1);
// **流结束后,保存完整 AI 回复**
$this->saveChatItem($chatId, $fullResponse, 1);
}, 200, [
"Content-Type" => "text/event-stream",
"Cache-Control" => "no-cache",
... ...
... ... @@ -46,7 +46,8 @@ class GptService
// **流式请求**
$payload->stream = true;
$response = $client->chat($payload);
return $response;
$stream = $response->getBody();
return $stream;
}
}
... ...