Создание приложения для глубокого обучения с использованием React и OpenAI.
С выпуском дополнительных инструментов API от OpenAI я решил протестировать их, используя их модели GPT. Это мое первое приложение на базе OpenAI, использующее их API завершения. GPT сама по себе является основной большой языковой моделью, используемой для генерации и анализа текста. Эти же модели распускает лингвист Ноам Хомский. Поскольку GPT требуется только подсказка, вы можете дать ему небольшую текстовую фразу, и он выведет текст, максимально соответствующий этому подсказке. Это делается с помощью API завершения текста, который генерирует текст для завершения предыдущего запроса.
Суть любого GPT-подобного метода заключается в создании подсказки, которой достаточно для получения интересного ответа. Это привело к понятию подсказка, которая заключается в том, чтобы попытаться изменить подсказку, чтобы она как можно лучше соответствовала ожидаемому результату. Я решил сделать подсказку простой и просто попросить ее создать стихотворение с добавлением к нему подсказки темы.
Для этого приложения я решил следовать подсказке Genuary Генеративная поэзия. Приложение Poet пишет случайное стихотворение, используя подсказку с префиксом Напишите стихотворение о. Чтобы создать приложение для реагирования, я использовал приложение create-react-app и установил необходимые библиотеки. Я использовал rebass для компонентов и theme-ui для оформления компонентов. API ноды устанавливается с помощью библиотеки openai npm. Репозиторий можно клонировать здесь. Затем запустите его, используя следующие команды.
npm install npm run start
Основная проблема вызовов OpenAI — асинхронные функции, которые генерируют текст и название стихотворения. Я помещаю это в отдельный файл PoemGen.js, который затем импортируется. В качестве основного двигателя используется Давинчи-003, который на сегодняшний день является самой последней высокопроизводительной моделью ГПТ-3. Температура измеряет, насколько творческим должен быть результат, но не слишком бессмысленным.
import { Configuration, OpenAIApi } from "openai";
// setup configuration
const configuration = new Configuration({
apiKey: process.env.REACT_APP_OPENAI_API_KEY,
});
// create api interface
const openai = new OpenAIApi(configuration);
export async function createText(prompt, temperature) {
// generate poem text
let completion;
try {
completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: `Write a poem about ${prompt}`,
temperature: temperature,
max_tokens: 2048
});
}
catch (error) {
console.error(error);
}
return completion.data.choices[0].text;
}
export async function createTitle(prompt, temperature) {
// generate poem title
let completion;
try {
completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: `Write a title for a poem about ${prompt}`,
temperature: temperature,
});
}
catch (error) {
console.error(error);
}
return completion.data.choices[0].text;
}
Приложение можно посмотреть здесь, размещенное на netlify. Различные подсказки приводят к разным результатам, а более высокие температуры приводят к странным результатам. Окончательное стихотворение загружается некоторое время, до минуты или около того, из-за задержки API завершения OpenAPI. Мы можем посмотреть на стихи, сгенерированные с одной и той же подсказкой и разной температурой, чтобы увидеть, как они различаются. Температура меняет степень риска, на который модель готова пойти. Риск связан с творчеством, поэтому более высокая температура должна быть более творческой; однако это не всегда так. Например, с подсказкой Залитые солнцем небеса при температуре 0,2 возвращается вот такое стихотворение.
Залитые солнцем небеса, такие яркие и голубые, Зрелище такое прекрасное, это правда. Светит солнце, поют птицы, Прекрасный день для пикника в парке. Залитое солнцем небо, такое теплое и манящее, идеальный фон для дня прогулок. Светит солнце, дует ветер, Прекрасный день для прогулки по лесу. Залитое солнцем небо, такое мирное и безмятежное, Зрелище настолько успокаивающее, что трудно поверить. Солнце светит, тучи плывут, Прекрасный день для плавания по морю. Залитое солнцем небо, такое яркое и живое, Зрелище настолько захватывающее, что его трудно описать. Светит солнце, цветут цветы, Прекрасный день для пикника на лугу.
Однако, когда мы меняем температуру на 0,8, стихотворение меняется на это.
Залитые солнцем небеса такие яркие и голубые Согревающий оттенок, чтобы увидеть нас в Наши дни радости, наши дни горя Залитые солнцем небеса всегда будут показывать Утреннее утро, полдень Залитые солнцем небеса всегда будут падать в обморок Принося жизнь и радость всем Не лучше Залитое солнцем небо, такое чистое и ясное, Как одеяло, притягивающее нас Свет дня, наша надежда на завтра Залитое солнцем небо, полное печали Залитое солнцем небо, напоминание о том, что может быть Дыхание свежести воздух, шанс быть свободным Немного утешения в мире раздоров Залитое солнцем небо дает нам новую жизнь
Первый имеет более точную структуру, а пунктуация и грамматика полностью правильны. Последний имеет более свободную структуру и отсутствие знаков препинания.
Мы также можем писать различные типы стихов, например, хайку, добавляя «как» к нашей подсказке. С подсказкой «Илон Маск как хайку» при температуре 0,8 возвращается.
Амбициозный человек
Ведущий нас к звездам
Мечты сбываются, Илон
Поскольку GPT принимает символы Unicode, мы также можем использовать смайлики в качестве подсказок. С подсказкой 💔 возвращается вот это стихотворение.
Мое сердце, как разбитое стекло, Хрупкое и разбитое на осколки, Мне снова и снова причиняли боль, И это никогда не прекращалось. Я чувствую боль и печаль, Остающуюся пустоту, Депрессию и одиночество, Это все, что она приносит. Мое сердце подобно разбитому зеркалу, Отражение моего прошлого, Мои слезы никогда не остановятся, Они никогда не продлятся. Я так сломлен и одинок, Никто не может помочь мне исцелиться, Я несу это бремя, Нереальную боль. Мое сердце, как разбитое стекло, Которое никогда не будет целым, Моя любовь и надежда, Оно все в дыре.
Это сюрреалистично, что теперь вы можете описать целое стихотворение в смайликах. Изображение действительно говорит тысячу слов, используя GPT. Попробуйте разные подсказки, чтобы увидеть, что изменится, и посмотрите, имеют ли значение разные типы стихотворений, такие как сонеты, хайку и элегии. Таким способом можно даже писать тексты песен, хотя форматирование для этого не подойдет. Возможными модификациями могут быть изменение форматирования, хотя я еще не разобрался с этим, чтобы текст был организован в строфы и т. д.
В будущем мы увидим, куда пойдет генерация текста с использованием GPT, но пока это кажется впечатляющим, учитывая, что всего несколько лет назад большинство LLM не могли написать даже половину истории, а тем более целую. Мне любопытно посмотреть, куда это пойдет дальше по мере совершенствования технологий. Тем временем я мог бы публиковать стихи GPT с помощью приложения.