技术文摘

纯php搭建DeepSeek教程

作者:雨祺   发表于:
浏览:77次    字数:2397  电脑原创
级别:站长   总稿:81篇, 月稿:12
最近老坛们都在讨论DeepSeek。也看到有些大佬非要把简单的搞那么复杂,还搞个什么桌面端的就出来了。只能说这个对站长没有任何用处。谁会安装个CURL别人的加个壳的呢?其实最好的方法还是去他们官网上面提问聊天。毕竟免费的。如果实在要搬到自己的网站上面。官方也是有提供API地址的。(收费的居然也想CURL他的接口,充分说明是用来搞火车头采集的)。

若还有老坛们不是奔着采集的,那小编也可以简单写个php的CURL。分为流式的(打字机般输出体验号)与非流式的(便于火车采集)。下面上干货:
  1. <?php 
  2. $apikey =$add_deepseekkey;//到deepseek申请 
  3. $enwse=$_GET['moshi']; 
  4. if($enwse==='sse'){ //流式输出接口的 
  5. $postData = ["model"=>'deepseek-chat',"stream"=>true,"max_tokens"=>4000]; 
  6. }else
  7. $postData = ["model"=>'deepseek-chat',"max_tokens"=>4000];         
  8. $context = json_decode($_POST['context']?: "[]"true) ?: []; 
  9. if (!empty($context)) { 
  10. $context = array_slice($context, -5); 
  11. foreach ($context as $message) { 
  12. $postData['messages'][] = ['role' => 'user''content' => str_replace("\n""\\n", $message[0])]; 
  13. $postData['messages'][] = ['role' => 'assistant''content' => str_replace("\n""\\n", $message[1])]; 
  14. $postData['messages'][] = ['role' => 'user''content' =>$_POST['message']]; 
  15. $postData = json_encode($postData); 
  16. $deepseekapiurl="https://api.deepseek.com/v1/chat/completions";//deepseek接口地址 
  17. if($enwse==='sse'){ //流式输出接口 
  18. header('Access-Control-Allow-Origin: *'); 
  19. header("Content-Type: text/event-stream"); 
  20. ini_set('output_buffering''off'); 
  21. ini_set('zlib.output_compression'false); 
  22. while (@ob_end_flush()) {} 
  23. header('Cache-Control: no-cache'); 
  24. header('Connection: keep-alive'); 
  25. header('X-Accel-Buffering: no'); 
  26. setcookie("errcode""");  
  27. setcookie("errmsg"""); 
  28. $ch = curl_init(); 
  29. $headers= ['Content-Type: application/json','Authorization: Bearer ' . $apikey]; 
  30. $callback = function ($ch, $data) { 
  31. $complete = json_decode($data); 
  32. if (isset($complete->error)) { 
  33. setcookie("errcode", $complete->error->type); 
  34. setcookie("errmsg", $complete->error->message);         
  35. echo "event: close".PHP_EOL; 
  36. echo "data: Connection closed".PHP_EOL . PHP_EOL; 
  37. ob_flush(); 
  38. flush(); 
  39. echo $data;         
  40. ob_flush(); 
  41. flush();         
  42. return strlen($data); 
  43. }; 
  44. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
  45. curl_setopt($ch, CURLOPT_URL, $deepseekapiurl); 
  46. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
  47. curl_setopt($ch, CURLOPT_POST, 1); 
  48. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  49. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  50. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
  51. curl_setopt($ch, CURLOPT_WRITEFUNCTION, $callback); 
  52. curl_exec($ch); 
  53. curl_close($ch); 
  54. }else{//非流式 
  55. $ch = curl_init();         
  56. $headers= ['Content-Type: application/json','Authorization: Bearer ' . $apikey]; 
  57. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
  58. curl_setopt($ch, CURLOPT_URL, $deepseekapiurl); 
  59. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
  60. curl_setopt($ch, CURLOPT_POST, 1); 
  61. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  62. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  63. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
  64. $response=curl_exec($ch); 
  65. $response=json_decode($response, true); 
  66. $result = array( 
  67. 'code'=> 200, 
  68. 'asktext'=>str_replace( "\\n""\n", $response['choices'][0]['message']['content']), 
  69. 'time'=>date('Y-m-d H:i:s'), 
  70. ); 
  71. echo json_encode($result, JSON_UNESCAPED_UNICODE); 
  72. exit();  
另外SSE要支持POST请求需要引入see.js这个组件。(自行下载)
另外要让代码能高亮显示,表格需要显示等,需要自行下载highlight.min.js,remarkable.js,showdown.min.js

调用的时候就是这样的
  1. var alltext = ""
  2. var data = {message: alytyqw,context: JSON.stringify(contextarray),}; 
  3. var jsondata=JSON.stringify(data); 
  4. eventSource = new SSE("deepseek.php?moshi=sse",{headers: {'Content-Type''text/event-stream'},payload: jsondata,method:'POST'}); 
  5. eventSource.addEventListener("open", (event) => { 
  6. console.log("连接已建立"); 
  7. }); 
  8. eventSource.addEventListener("message", (event) => { 
  9. if(event.data == "[DONE]"){ 
  10. contextarray.push(alytyqw, alltext); 
  11. contextarray = contextarray.slice(-5);  
  12. eventSource.close(); 
  13. return
  14. console.log("连接已关闭");         
  15. var result = JSON.parse(event.data); 
  16. if(result.choices[0].finish_reason == "stop"){ 
  17. return
  18. }         
  19. alltext += result.choices[0].delta.content;         
  20. let newalltext = alltext; 
  21. newalltext = newalltext.replace(/\\n/g, '\n'); 
  22. newalltext = mdHtml.render(newalltext); 
  23. newalltext = newalltext.replace(/\\t/g, '    '); 
  24. $("#q" + answer).html(newalltext); 
  25. $('.RightCont').scrollTop($('.RightCont')[0].scrollHeight );//将滚动条始终保持在底部 
  26. }); 
  27. eventSource.addEventListener("close", (event) => { 
  28. console.log("连接已关闭", JSON.stringify(event.data)); 
  29. }); 

【审核人:站长】

99Ai聊天   收藏   加好友   海报   88分享
点赞(0)
打赏
标签:PHP教程DeepSeek搭建

发布者资料

热门文章

技术文摘

查看更多技术文摘
    首页
    栏目
    搜索
    会员
    投稿