[], 'stream' => true ); if (!empty($context)) { $context = array_slice($context, -5); foreach ($context as $message) { $postData['messages'][] = ['role' => 'user', 'content' => $message[0]]; $postData['messages'][] = ['role' => 'assistant', 'content' => $message[1]]; } } $postData['messages'][] = ['role' => 'user', 'content' => $_POST['message']]; $accessToken = $this->getAccessToken(); $postData = $_SESSION['data']; $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=".$accessToken, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'Content-Length: ' . strlen($postData) ), CURLOPT_WRITEFUNCTION => function ($ch, $data) { global $responsedata; $complete = json_decode($data); if (isset($complete->error_code)) { $error = array( 'id' => $complete->id, 'error_code' => $complete->error_code, 'error_msg' => $complete->error_msg ); echo json_encode($error); flush(); $responsedata = $data; } else { echo $data; $responsedata .= $data; flush(); } return strlen($data); } )); curl_exec($ch); curl_close($ch); $responsearr = explode("}\n\ndata: {", $responsedata); $answer = ""; foreach ($responsearr as $msg) { $contentarr = json_decode("{" . trim($msg) . "}", true); if (isset($contentarr['results'])) { $results = $contentarr['results']; foreach ($results as $result) { if (isset($result['result'])) { $answer .= $result['result'] . "\n"; } } } } } private function getAccessToken(){ $curl = curl_init(); $postData = array( 'grant_type' => 'client_credentials', 'client_id' => "biAmXmmAbUX4O4dP1YRL3LuX", 'client_secret' => "dhTZSa083FfhIsSPahGsroVF5yEPpkHw" ); curl_setopt_array($curl, array( CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token', CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query($postData) )); $response = curl_exec($curl); curl_close($curl); $rtn = json_decode($response); return $rtn->access_token; } }