API OpenAI ChatGPT (gpt-3.5-turbo): как получить доступ к содержимому сообщения?
При получении ответа от OpenAItext-davinci-003
модели я смог извлечь текст из ответа с помощью следующего PHP-кода:
Вот код ответа да Винчи:
{
"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
"object": "text_completion",
"created": 1589478378,
"model": "text-davinci-003",
"choices": [
{
"text": "\n\nThis is indeed a test",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 7,
"total_tokens": 12
}
}
Сейчас я пытаюсь изменить свой код для работы с недавно выпущеннымgpt-3.5-turbo
модель, которая возвращает ответ немного по-другому:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
Мой вопрос в том, как я могу изменить код:
$response = $response->choices[0]->text;
... чтобы он мог получить содержимое ответного сообщения?
1 ответ
Это то, что сработало для меня.
$data = array(
"prompt" => "Is Climate Change worrisome?", //Your question or request
"temperature" => 0.5,
"max_tokens" => 500,
"model" => "text-davinci-003",
"top_p" => 1,
"frequency_penalty" => 0,
"presence_penalty" => 0
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
'https://api.openai.com/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer '.$OPENAI_API_KEY;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$response = json_decode($response);
echo $response->choices[0]->text;