Я создаю PHP-скрипт для доступа к API Open Ai, чтобы задать запрос и получить ответ.
Я получаю следующую ошибку:
Вы не предоставили ключ API. Вам необходимо предоставить ключ API в Заголовок авторизации с использованием Bearer auth (т. е. Authorization: Bearer ТВОЙ КЛЮЧ)
... но я думал, что предоставляю ключ API в первой переменной?
Вот мой код:
$api_key = "sk-U3B.........7MiL";
$query = "How are you?";
$url = "https://api.openai.com/v1/engines/davinci/jobs";
// Set up the API request headers
$headers = array(
"Content-Type: application/json",
"Authorization: Bearer " . $api_key
);
// Set up the API request body
$data = array(
"prompt" => $query,
"max_tokens" => 100,
"temperature" => 0.5
);
// Use WordPress's built-in HTTP API to send the API request
$response = wp_remote_post( $url, array(
'headers' => $headers,
'body' => json_encode( $data )
) );
// Check if the API request was successful
if ( is_wp_error( $response ) ) {
// If the API request failed, display an error message
echo "Error communicating with OpenAI API: " . $response->get_error_message();
} else {
// If the API request was successful, extract the response text
$response_body = json_decode( $response['body'] );
//$response_text = $response_body->choices[0]->text;
var_dump($response_body);
// Display the response text on the web page
echo $response_body;
Все конечные точки Engines устарели.
Это правильная конечная точка завершения:
https://api.openai.com/v1/completions
Если вы запустите php test.php
в CMD, API OpenAI вернет следующее завершение:
строка (23) "
Это действительно испытание»
test.php
<?php
$ch = curl_init();
$url = 'https://api.openai.com/v1/completions';
$api_key = 'sk-xxxxxxxxxxxxxxxxxxxx';
$post_fields = '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}';
$header = [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key
];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
$response = json_decode($result);
var_dump($response->choices[0]->text);
?>
Большое спасибо за Вашу помощь. Я изменил конечную точку и обновил переменную $url, но, к сожалению, проблемы продолжаются. Я определенно не использовал кредит, поскольку я только начал пытаться использовать API. Итак, вы знаете, что еще я могу делать неправильно?
Вам это помогает?
К сожалению, нет, я пытался внести некоторые изменения, описанные в ссылке, но, к сожалению, это не помогло. У вас нет шансов получить образец сценария, который позволит просто задать запрос и получить ответ в php? Спасибо
Вы просите простой пример PHP?
Этот PHP-скрипт является частью плагина WordPress и находится на сервере. Может ли быть проблемой способ ввода пароля?
Простой пример PHP... да, пожалуйста, если возможно?
Завтра отредактирую свой ответ. :)
Давайте продолжим обсуждение в чате.
Не уверен, но примеры в примечаниях пользователя
wp_remote_post
используют массив заголовков по-разному (ключ => значение). См. примеры: developer.wordpress.org/reference/functions/wp_remote_post/…