ChatGPT API — это инструмент, который позволяет разработчикам интегрировать языковую модель OpenAI в свои программные приложения. В этой статье мы подробно расскажем, как использовать ChatGPT API в PHP: от настройки аккаунта и получения API ключа до выполнения запросов к ChatGPT API с использованием библиотеки cURL в PHP.

Шаги для использования ChatGPT API в PHP
1. Получение API-учетных данных
Для начала использования ChatGPT API вам нужно получить учетные данные API. Это включает в себя создание аккаунта на OpenAI и генерацию API ключа. Этот ключ необходим для доступа к ресурсам OpenAI.
2. Настройка окружения PHP
Следующий шаг — правильно настроить ваше окружение для разработки. Для этого вам нужно установить библиотеку cURL, которая позволяет выполнять HTTP-запросы из PHP, а также Composer — инструмент для управления зависимостями в PHP. Вам также нужно создать новый PHP проект или использовать уже существующий для интеграции с ChatGPT API.
3. Установка OpenAI PHP SDK
OpenAI PHP SDK — это удобный инструмент, который позволяет взаимодействовать с ChatGPT API прямо из вашего PHP-кода. Вы можете установить SDK, выполнив команду composer require openai-php/client
в директории вашего проекта. После установки вы можете импортировать SDK в ваши PHP-файлы с помощью следующего кода:
require 'vendor/autoload.php';
use OpenAI\Api\OpenAI;
4. Выполнение API-запросов
Когда ваше окружение настроено, а SDK установлен, вы можете отправлять запросы к ChatGPT API. Вот пример того, как можно получить ответ в виде чата, используя API:
$openai = new OpenAI('YOUR_API_KEY');
$response = $openai->complete([
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'Who won the world series in 2020?']
],
'temperature' => 0.6
]);
Объяснение кода
- Строка 1: Создается объект OpenAI с использованием вашего API ключа.
- Строка 3: Вызывается метод
complete
для объекта OpenAI. Результат этого метода сохраняется в переменную$response
. - Строки 4-8: Указываются сообщения в формате массива объектов. Каждый объект включает в себя роль (system или user) и содержимое сообщения.
- Строка 9: Параметр
temperature
устанавливает степень случайности в ответах модели.
Лучшие практики
Чтобы обеспечить эффективность вашей реализации, придерживайтесь следующих рекомендаций при использовании ChatGPT API в PHP:
- Пакетирование запросов: Вместо того, чтобы выполнять отдельные запросы для каждого взаимодействия с пользователем, можно объединить несколько сообщений в один запрос, чтобы снизить задержку и затраты.
- Управление лимитами запросов: ChatGPT API имеет ограничения по количеству запросов. Убедитесь, что вы правильно обрабатываете ошибки, связанные с лимитами, и реализуете механизм повторных попыток.
- Очистка пользовательских данных: Необходимо фильтровать и проверять входные данные пользователей, чтобы предотвратить отправку неподобающего контента в API.
- Эксперименты с параметрами: Изменяя параметр
temperature
, вы можете регулировать случайность ответов. Экспериментируйте с различными значениями, чтобы найти оптимальное для вашего приложения.
Пример работы с длинными текстами
Предположим, что вы хотите отправить текст, который превышает максимальный лимит токенов ChatGPT API. Это может быть длинный диалог между пользователем и помощником, обсуждающий сложную тему. Текст слишком велик, чтобы поместиться в один запрос, поэтому его нужно разбить на несколько частей.
Во-первых, важно понять, что ChatGPT API принимает серию сообщений в качестве ввода и возвращает сообщение, сгенерированное моделью. Каждое сообщение имеет роль (system, user или assistant) и содержимое (текст сообщения от роли).
Для того чтобы разбить разговор на части, выполните следующие шаги:
- Идентификация естественных точек разрыва: Найдите места, где разговор можно разбить без потери контекста (например, в конце темы или вопроса).
- Разделите текст: Разбейте текст на части, каждая из которых будет соответствовать лимиту токенов API.
- Отправьте каждую часть в API: Отправьте каждую часть как отдельное сообщение. Сообщение с ролью "system" можно использовать для определения поведения помощника, а сообщения с ролью "user" — для частей разговора.
Пример разбивки длинного текста:
$openai = new OpenAI('YOUR_API_KEY');
$response = $openai->complete([
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'Part 1 of the conversation'],
['role' => 'user', 'content' => 'Part 2 of the conversation'],
['role' => 'user', 'content' => 'Part 3 of the conversation']
],
'temperature' => 0.6
]);
Пример кода для взаимодействия с OpenAI API
Приведем простой пример того, как можно использовать OpenAI API для взаимодействия с моделью GPT-3.5 для разговоров:
<?php
// Определение ключа API и URL конечной точки
const OPENAI_API_KEY = "YOUR_API_KEY_HERE"; // Замените на ваш настоящий ключ API
const ENDPOINT_URL = "https://api.openai.com/v1/chat/completions";
// Проверка наличия ключа API
if (OPENAI_API_KEY === "YOUR_API_KEY_HERE") {
die("Пожалуйста, замените 'YOUR_API_KEY_HERE' на ваш ключ API.");
}
// Определение параметров заголовка
$headerParameters = array(
"Content-Type: application/json",
"Authorization: Bearer " . OPENAI_API_KEY
);
// Определение параметров тела запроса
$bodyParameters = array(
"model" => "gpt-3.5-turbo",
"messages" => array(
array(
"role" => "system",
"content" => "Assume the persona of Shakespeare and provide profound, intellectual responses as if we were in the 1750s."
),
array(
"role" => "user",
"content" => "What are computers!"
)
)
);
// Инициализация cURL сессии
$ch = curl_init();
// Настройка параметров cURL
curl_setopt($ch, CURLOPT_URL, ENDPOINT_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerParameters);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($bodyParameters));
// Выполнение запроса cURL
$response = curl_exec($ch);
// Проверка на ошибки cURL
if ($response === false) {
die("Ошибка cURL: " . curl_error($ch));
}
// Получение HTTP кода статуса
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Проверка на ошибки HTTP
if ($httpStatusCode !== 200) {
echo "HTTP ошибка: " . $httpStatusCode;
echo "Ответ от сервера: " . $response;
} else {
// Декодирование JSON ответа
$responseData = json_decode($response, true);
// Вывод ответа
echo "Ответ: " . print_r($responseData, true);
}
// Закрытие cURL сессии
curl_close($ch);
?>
Заключение
Следуя шагам, описанным в этой статье, вы сможете эффективно использовать ChatGPT API в PHP. Помните о лучших практиках, таких как пакетирование запросов и очистка пользовательских данных, чтобы обеспечить эффективность и безопасность вашего решения.