Pourquoi l'API OpenAI Chat GPT (GPT-3.5) ne répond-elle pas lorsque le paramètre stream est défini sur false ?
P粉865900994
P粉865900994 2023-11-10 18:39:06
0
1
1012

Vous pouvez voir $prompt 值。当我输入此提示值时,chat GPT 不会给出结果。但这是因为参数中的 "stream" => false 。如果 "stream" => true dans mon application ci-dessous, discuter avec GPT donne des résultats.

Ma question est de savoir pourquoi le chat GPT ne donne pas de résultats quand "stream" => false . Et que faire pour produire des résultats.

$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{

}


P粉865900994
P粉865900994

répondre à tous(1)
P粉466290133

Si défini "stream" => false 则得不到响应的原因是,整个代码设计为当 Stream 参数设置为 true.

Avec la modification suivante, la réponse sera traitée dans son ensemble, quelle que soit la valeur du paramètre stream.

Essayez ceci :

$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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal