DeepSeekChatController.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\LLM\DeepSeekService;
  5. use Illuminate\Http\Request;
  6. use Symfony\Component\HttpFoundation\StreamedResponse;
  7. class DeepSeekChatController extends Controller
  8. {
  9. public function handleStream(Request $request): StreamedResponse
  10. {
  11. // 一个session进行多轮对话
  12. $sessionId = $request->input("session_id");
  13. // 获取该session的历史对话记录
  14. $history = [];
  15. if ($sessionId) {
  16. // 从缓存中获取该session的历史对话记录
  17. }
  18. return new StreamedResponse(function () use ($request) {
  19. // 1. 设置SSE头
  20. header('Content-Type: text/event-stream');
  21. header('Cache-Control: no-cache');
  22. header('Connection: keep-alive');
  23. header('X-Accel-Buffering: no');
  24. // 2. 获取请求参数
  25. $prompt = $request->input('prompt', '');
  26. // 追加该会话上下文
  27. $message = [
  28. ['role' => 'user', 'content' => $prompt],
  29. ];
  30. DeepSeekService::streamedResponseChat($message);
  31. }, 200, [
  32. 'Content-Type' => 'text/event-stream',
  33. 'Access-Control-Allow-Origin' => '*'
  34. ]);
  35. }
  36. }