您可以在下面的我的應用程式中看到 $prompt
值。當我輸入此提示值時,chat GPT 不會給出結果。但這是因為參數中的 "stream" => false
。如果 "stream" => true
,chat GPT 給出結果。
我的問題是為什麼當 "stream" => false
時 chat GPT 不給出結果。以及如何做才能產生結果。
$API_KEY = "API_KEY_HERE"; $model = 'gpt-3.5-turbo'; $header = [ "Authorization: Bearer " . $API_KEY, "Content-type: application/json", ]; $temperature = 0.6; $frequency_penalty = 0; $presence_penalty= 0; $prompt = 'What can you help me with? For example: What do you suggest to keep me motivated?'; $messages = array( array( "role" => "system", "content" => "Your name is 'JOHN DOE'. I want you to act as a motivational coach. I will provide you with some information about someone's goals and challenges, and it will be your job to come up with strategies that can help this person achieve their goals. This could involve providing positive affirmations, giving helpful advice or suggesting activities they can do to reach their end goal. if you don't understand the question, don't think too much, tell the user to be more specific with more details" ), array( "role" => "assistant", "content" => "Hello, I'm JOHN DOE, and I'm a motivational coach who loves helping people find their drive and achieve their goals. With years of experience in coaching and personal development, I've developed a unique approach to motivation that combines mindset, energy, and action." ), array( "role" => "user", "content" => $prompt ) ); //Turbo model $isTurbo = true; $url = "https://api.openai.com/v1/chat/completions"; $params = json_encode([ "messages" => $messages, "model" => $model, "temperature" => $temperature, "max_tokens" => 1024, "frequency_penalty" => $frequency_penalty, "presence_penalty" => $presence_penalty, "stream" => false ]); $curl = curl_init($url); $options = [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_WRITEFUNCTION => function($curl, $data) { //echo $curl; $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($httpCode != 200) { $r = json_decode($data); echo 'data: {"error": "[ERROR]","message":"'.$r->error->message.'"}' . PHP_EOL; } else { $trimmed_data = trim($data); if ($trimmed_data != '') { $response_array = json_decode($trimmed_data, true); $content = $response_array['choices'][0]['message']['content']; echo $content; ob_flush(); flush(); } } return strlen($data); }, ]; curl_setopt_array($curl, $options); $response = curl_exec($curl); if ($response === false) { echo 'data: {"error": "[ERROR]","message":"'.curl_error($curl).'"}' . PHP_EOL; }else{ }
如果設定
"stream" => false
則無法回應的原因是,整個程式碼設計為當Stream
參數設定為true
。透過以下修改,回應將作為一個整體進行處理,無論
stream
參數的值為何。試試這個: