Создание генератора поздравлений на GPT-3

b105b4da10c825159a010e27a3d54da8

Для начала небольшие вводные данные. Я студент 3 курса специальности прикладная информатика, знаю базово python, создавал небольшие игры на pygame, поверхностные познания html, php, css, слабые знания js, создал telegram-бот ChatGPT, которым пользуется большая часть моей группы и ещё несколько человек. Это моя первая статья на Habr и многие вещи могу описывать не профессионально, так что прошу строго не судить. Так же сразу отмечу, что я не профессиональный программист и web-дизайнер, так что с удовольствием восприму любую конструктивную критику.

У меня была большая проблема с написанием поздравлений, ничего больше «Поздравляю тебя с днём рождения и желаю всего самого наилучшего!» я написать не мог. Вернее, я мог написать что-то поинтереснее, но отправить это не мог. Но у меня был ChatGPT, так что в марте 2023 года я на хостинге, на котором у меня к тому времени работал бот, поднял сервер Apache (с Nginx у меня не вышло) и начал создавать структуру сайта. Учитывая тот факт, что я сайт планировал в долгосрочную перспективу, я решил делить сайт по продуктам компаний. В итоге туда вошли: Google, Microsoft, OpenAI, ВК, «Название моего учебного заведения», Сбербанк России. То есть каждый мой продукт, был связан с той или иной компанией. Страницу генератора поздравлений в итоге я разместил по пути OpenAI/GPT/Поздравление/. Самое интересное это то, что я был первопроходцем в этой области, так как подобных сервисов на нейросетях не было, так что конкурентов у меня не было.

Из интересного у меня размещён пресс-релиз Windows 1.0.

Доменное имя было желание выбрать sibir.ru или ponomar.ru, но так эти доменные имена были заняты, то через хостинг я купил домен ponomar-sibir.ru. Есть план в будущем выкупить домен sibir.ru (с него почему-то идёт переадресация на www.aviasales.ru).

Изначально планировалось использовать готовые решения, для взаимодействия с api OpenAI. Из готового был ChatGPT PHP SDK, но так как мои познания в php очень ограничены, я так и не разобрался как с ним работать, так что я перешёл к чтению документации OpenAI. У OpenAI есть два способа взаимодействия с api: curl и python. Так как поднимать сервер на python, чтобы взаимодействовать с php, у меня желания не было, пришлось изучать curl.

Моим первым вариантом было использование командной строки:

$output = shell_exec((string)('curl https://api.openai.com/v1/completions -H "Content-Type: application/json" -H "Authorization: Bearer Мой_токен" -d \'{"model": "gpt-3.5-turbo", "prompt": "Напиши большое поздравление '.$_GET["prompt"].'", "temperature": 0.5, "max_tokens": 500}\' '));

Но так как я понимал, что использование командной строки опасно, так есть риск, что могут отправить вместе с запросом вредоносную команду, в дальнейшем, изучив curl в php, код был переписан:

$dataString = (string)('{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "Напиши поздравление '.$_GET["prompt"].'"}],"temperature": 0.7}');

$url = 'https://api.openai.com/v1/chat/completions';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($dataString),
	'Authorization: Bearer Мой_токен'
]);

$result = curl_exec($ch);
$jsonDe = json_decode($result,true);
echo $jsonDe["choices"][0]["message"]["content"];
curl_close($ch);

Итоговый код был записан в файл gpt.php, но нужно было ещё создать файл index.php. Итоговые основные пункты:

  • Стеклянные блоки.

  • Фон, созданный Midjourney (после отключения бесплатного доступа все остальные фоны для сайта были созданы Kandinsky).

  • Кроссплатформенность.

  • Стеклянные кнопки «Создать поздравление!» и «Скопировать в буфер обмена

    © Habrahabr.ru