您可以在下方看到我的应用程序中的$prompt
值。当我输入这个提示值时,chatGPT不会给出结果。这是因为参数中设置了"stream" => false
。如果设置为"stream" => true
,chatGPT会给出结果。
我的问题是,为什么当"stream" => false
时,chatGPT不给出结果。以及如何做才能让它给出结果。
$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
参数的值如何,响应都将作为整体处理。
尝试这样做:
$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 ));$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,];curl_setopt_array($curl, $options);$response = curl_exec($curl);if ($response === false) { echo 'data: {"error": "[ERROR]","message":"'.curl_error($curl).'"}' . PHP_EOL;}else{ $response_array = json_decode($response, true); $content = $response_array['choices'][0]['message']['content']; echo $content;}