首页站内杂志技术文摘
文章内容页

纯php搭建DeepSeek教程

  • 作者:雨祺
  • 来源: 电脑原创
  • 发表于2025-02-19 19:54:45
  • 被阅读0
  • 最近老坛们都在讨论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. }); 
    【审核人:站长】

        标题:纯php搭建DeepSeek教程

        本文链接:https://www.wenyunfang.com/zazhi/zhongwangjiaocheng/1247.html

        赞一下

        深度阅读

        • 您也可以注册成为文韵坊的作者,发表您的原创作品、分享您的心情!

        阅读记录

          关注文韵坊