123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use Symfony\Component\HttpFoundation\StreamedResponse;
- use think\Db;
- use app\common\library\Deepseek as DeepseekAI;
- /**
- * AI
- */
- class Deepseek extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- public function test()
- {
- // 这是模拟的文本片段 - 实际应替换为真实的API调用
- $textChunks = [
- "你好!这是 DeepSeek 的流式文本响应。\n\n",
- "我正在逐块返回文本内容。\n",
- "这种方式可以实现实时输出效果。\n",
- "这种方式可以实现实时输出效果。\n",
- "这种方式可以实现实时输出效果。\n",
- "这种方式可以实现实时输出效果。\n",
- "最后一块内容。\n"
- ];
- // 逐块输出文本
- foreach ($textChunks as $chunk) {
- echo $chunk;
- ob_flush(); // 刷新PHP输出缓冲区
- flush(); // 刷新系统缓冲区
- sleep(1); // 暂停0.3秒模拟网络延迟
- }
- }
- public function deepseek(){
- $config = config('deepseek');
- $apiKey = $config['key']; //
- $url = 'https://api.deepseek.com/chat/completions';
- $params = input();
- $data = [
- 'model' => $params['model'],
- 'messages' => $params['messages'],
- // "frequency_penalty" => 0,
- "max_tokens" => 2048,
- /*"presence_penalty" => 0,
- "response_format" => [
- "type" => $params['type']
- ],
- "stop" => null,*/
- "stream" => true,
- /*"stream_options" => null,
- "temperature" => 1,
- "top_p" => 1,
- "tools" => null,
- "tool_choice" => "none",
- "logprobs" => false,
- "top_logprobs" => null*/
- ];
- // 初始化cURL会话
- $ch = curl_init($url);
- // 设置cURL选项
- curl_setopt_array($ch, [
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_SSL_VERIFYPEER => false,
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => json_encode($data),
- CURLOPT_HTTPHEADER => [
- 'Content-Type: application/json',
- 'Authorization: Bearer ' . $apiKey,
- 'Accept: text/event-stream' // 重要:声明接受事件流
- ],
- CURLOPT_WRITEFUNCTION => function($ch, $data) {
- echo $data;
- ob_flush();
- flush();
- return strlen($data); // 返回已处理数据长度
- }
- ]);
- // 执行请求
- $response = curl_exec($ch);
- // 错误处理
- if (curl_errno($ch)) {
- echo 'Error: ' . curl_error($ch);
- }
- // 关闭连接
- curl_close($ch);
- }
- }
|