PHP и ИИ: революция, которая уже здесь
Вы когда-нибудь мечтали, чтобы ваш PHP-сайт сам писал статьи, отвечал на вопросы пользователей или помогал клиентам с техподдержкой? Раньше это звучало как фантастика, но сегодня — это реальность, доступная каждому разработчику. ChatGPT от OpenAI открыл новые горизонты для веб-разработки на PHP, и в этой статье мы покажем, как использовать эту мощь в своих проектах.
Забудьте о скучных формах обратной связи и статичных FAQ. Представьте: пользователь заходит на ваш сайт, задает вопрос на естественном языке, а ваш PHP-скрипт отправляет запрос к ChatGPT, получает осмысленный ответ и выводит его в реальном времени. Или ваш блог автоматически генерирует уникальные SEO-оптимизированные тексты. Звучит круто? Поехали!
Что нужно для интеграции ChatGPT в PHP?
Прежде чем мы начнем писать код, давайте разберемся с необходимыми инструментами. Для работы с ChatGPT через PHP вам понадобится:
- PHP 8.0+ (рекомендуется 8.1 или выше для лучшей поддержки)
- cURL (включен в большинстве сборок PHP)
- API-ключ OpenAI (получить можно на platform.openai.com)
- Composer (необязательно, но упрощает установку библиотек)
Главное преимущество PHP в том, что вам не нужны сложные фреймворки — базовый функционал можно реализовать буквально несколькими десятками строк кода. И да, PHP и ChatGPT отлично сочетаются, несмотря на то, что многие считают этот язык устаревшим.
Базовое подключение к OpenAI API на PHP
Начнем с самого простого — отправки запроса к ChatGPT и получения ответа. Вот минимальный рабочий пример на чистом PHP:
<?php
// Конфигурация
$apiKey = 'sk-your-api-key-here';
$apiUrl = 'https://api.openai.com/v1/chat/completions';
// Данные запроса
$requestData = [
'model' => 'gpt-3.5-turbo',
'messages' => [
[
'role' => 'system',
'content' => 'Ты полезный ассистент, который помогает пользователям.'
],
[
'role' => 'user',
'content' => 'Расскажи в двух словах о PHP и ИИ.'
]
],
'max_tokens' => 200,
'temperature' => 0.7
];
// Инициализация cURL
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
// Выполнение запроса
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Обработка ответа
if ($httpCode === 200) {
$result = json_decode($response, true);
$answer = $result['choices'][0]['message']['content'];
echo "Ответ ChatGPT: " . $answer;
} else {
echo "Ошибка: HTTP " . $httpCode;
}
?>
Этот код отправляет запрос к модели GPT-3.5 Turbo и выводит ответ. Обратите внимание на параметр temperature — он отвечает за креативность ответов (0 — строго факты, 1 — максимальная фантазия).
Улучшаем код с помощью библиотеки
Если вы используете Composer, рекомендую установить официальную библиотеку OpenAI PHP:
composer require openai-php/client
Пример с библиотекой:
<?php
require 'vendor/autoload.php';
$client = OpenAI::client('sk-your-api-key-here');
$response = $client->chat()->create([
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'system', 'content' => 'Ты эксперт по PHP.'],
['role' => 'user', 'content' => 'Как использовать ChatGPT в PHP?']
],
]);
echo $response->choices[0]->message->content;
?>
Код стал чище и безопаснее — библиотека автоматически обрабатывает ошибки и управляет HTTP-запросами.
Создаем умный чат-бот на PHP
Теперь давайте сделаем что-то более полезное — чат-бота, который помнит историю диалога. Это классический пример интеграции AI в веб-разработку.
Для этого нам нужно хранить историю сообщений. Самый простой способ — использовать сессии PHP:
<?php
session_start();
// Инициализация истории
if (!isset($_SESSION['chat_history'])) {
$_SESSION['chat_history'] = [
['role' => 'system', 'content' => 'Ты дружелюбный помощник. Отвечай кратко и по делу.']
];
}
// Обработка ввода пользователя
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['message'])) {
$userMessage = htmlspecialchars($_POST['message']);
// Добавляем сообщение пользователя в историю
$_SESSION['chat_history'][] = [
'role' => 'user',
'content' => $userMessage
];
// Отправляем всю историю в ChatGPT
$apiKey = 'sk-your-api-key-here';
$client = OpenAI::client($apiKey);
$response = $client->chat()->create([
'model' => 'gpt-3.5-turbo',
'messages' => $_SESSION['chat_history'],
'max_tokens' => 300
]);
$botReply = $response->choices[0]->message->content;
// Сохраняем ответ бота
$_SESSION['chat_history'][] = [
'role' => 'assistant',
'content' => $botReply
];
echo json_encode(['reply' => $botReply]);
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Чат-бот на PHP + ChatGPT</title>
</head>
<body>
<div id="chat">
<!-- Здесь будет отображаться история -->
</div>
<form id="chatForm">
<input type="text" name="message" placeholder="Спроси что-нибудь..." required>
<button type="submit">Отправить</button>
</form>
<script>
document.getElementById('chatForm').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const response = await fetch('', { method: 'POST', body: formData });
const data = await response.json();
document.getElementById('chat').innerHTML +=
`<p><b>Вы:</b> ${formData.get('message')}</p>
<p><b>