Добро пожаловать в будущее искусственного интеллекта, где новаторские достижения меняют наш подход к обработке естественного языка (NLP). Если вы когда-либо погружались в мир НЛП, вы знаете, каким трудным может быть этот путь — от кропотливого проектирования и обучения моделей до изнурительных итераций только для получения достойных результатов.
Но что, если я скажу вам, что те времена прошли? Да, вы правильно прочитали. Попрощайтесь с бесконечными часами обучения моделей и приготовьтесь восхититься мощью OpenAI. В этой статье я продемонстрирую, как революционные API OpenAI готовы переопределить ландшафт НЛП.
Система рекомендаций рецептов для демонстрации
Стремясь продемонстрировать замечательные возможности API OpenAI, я приступил к интересному проекту — созданию передового веб-приложения с рекомендациями по рецептам. Видение было ясным: создать систему, которая могла бы беспрепятственно принимать список ингредиентов пользователя и предлагать персонализированные рецепты, безупречно включающие эти ингредиенты.

Традиционный рабочий процесс против OpenAI
При традиционном подходе разработка системы рекомендаций по рецептам с нуля требовала тщательного сбора данных, обширной предварительной обработки и построения сложных алгоритмов. Мне пришлось бы поискать в Интернете разнообразный и всеобъемлющий набор данных рецептов, тщательно его отобрать и очистить данные, чтобы обеспечить согласованность. Затем мне пришлось бы разработать сложные алгоритмы обработки естественного языка для анализа списков ингредиентов и сопоставления их с соответствующими рецептами. Процесс обучения и тонкой настройки модели потребовал бы значительного времени и вычислительных ресурсов. Отладка и оптимизация еще больше увеличат сроки разработки. В целом, это потребовало бы много времени и усилий, без каких-либо гарантий достижения желаемой точности.
Благодаря появлению API OpenAI весь ландшафт разработки претерпел смену парадигмы. Имея в своем распоряжении мощные современные модели GPT, я смог упростить и ускорить процесс, как никогда раньше. Используя OpenAI API, я смог подключиться к предварительно обученным языковым моделям с огромным знанием разнообразных данных рецептов. Отнимающие много времени шаги по сбору и очистке данных удалось обойти, и я мог попробовать все это бесплатно!
Ниже приведены шаги, которые я предпринял для создания приложения, которое заняло у меня всего 2 часа благодаря OpenAI. Github-репозиторий всего проекта находится здесь.
1. Получение доступа к API OpenAI
- Зарегистрируйтесь для доступа к API OpenAI на их веб-сайте.
- Следуйте инструкциям, чтобы получить ключ API.
- Сохраните ключ API в безопасном месте, так как он понадобится вам для взаимодействия с моделями GPT, которые предоставляет OpenAI.
2. Настройка среды разработки
Я создал приложение с помощью NextJs, который работает на сервере NodeJs, но вы можете выбрать любой другой язык программирования, который вам нравится.
Создайте новый проект NextJs:
npx create-next-app@latest
Установите ключ OpenAI API в переменной среды:
Создайте файл ‘.env.local’ в корневом каталоге проекта. И добавьте следующее:
API_KEY = #put your OpenAI API key here
Вам нужно будет установить пакет OpenAI с NPM.
npm install openai --save
3. Написание пользовательского интерфейса
Создание UI и UX не является основной темой этой статьи, поэтому я не буду подробно обсуждать их здесь. По сути, вам нужна форма с полем ввода, в котором пользователи могут вводить свой запрос, и форма должна «отправить» запрос на конечную точку на внутреннем сервере, на котором работает приложение.
Например, в файле index.js я написал следующий компонент, принимающий ввод пользователя и отправляющий данные в конечную точку/create_recipe:
const Input = (props) => {
const inputRef = useRef();
const submit = async () => {
props.setFetching(true);
const query = inputRef.current.value;
console.log(query);
const res = await fetch("/api/create_recipe", {
method: "POST",
body: query,
});
const results = await res.text();
props.setFetching(false);
props.setRecipe(results);
};
4. Написание конечной точки API
Обработчик в /create_recipe должен сделать вызов API OpenAI, запросив рекомендацию рецепта. См. «create_recipe.js».
Следующая часть настраивает ваш объект openAI:
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.API_KEY,
});
const openai = new OpenAIApi(configuration);
Теперь вы можете сделать любой запрос к OpenAI, используя этот объект. См. документацию, чтобы попробовать и поэкспериментировать с различными API. Для этого конкретного проекта я буду использовать API завершения чата.
Моя функция обработчика маршрута выглядит следующим образом:
export default async function handler(req, res) {
const query = req.body;
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: `Recipe including: ${query}. Less than 150 words. Return html with proper tags for ingredients and instructions `,
},
],
});
res.setHeader("Content-Type", "text/html");
res.status(200).send(completion.data.choices[0].message.content);
}
Из многих моделей GPT, которые предоставляет OpenAI, я выбрал Gpt-3.5-turbo (
0,0015 долл. США / 1 тыс. токенов), потому что он дешевле, чем более продвинутый Gpt-4 (
0,03 долл. США / 1 тыс. токенов). токены) на момент написания этой статьи. Смотрите цены. Также он доступен для использования в рамках бесплатной пробной версии, которую OpenAI предлагает новым пользователям.
Форматирование подсказки
Обратите внимание на «подсказку», которую я предоставляю API — «Рецепт, включающий: ${query}. Менее 150 слов. Верните html с правильными тегами для ингредиентов и инструкций». Это очень важно, поскольку успех использования API в вашем приложении зависит от того, как вы сформулируете свое приглашение. Четкое и четко определенное приглашение помогает языковой модели лучше понять ваши требования и генерировать более точные и релевантные ответы.
Часть «Рецепт, включающий: ${query}» гарантирует, что в ответ мы получим рецепт с введенными пользователем ингредиентами. Однако важно отметить, что точный формат ответа может отличаться. Если вы использовали ChatGPT, вы знаете, что ответы могут быть в разных форматах, таких как абзацы, маркированные пункты или другие варианты. Чтобы получить более последовательное форматирование, я экспериментировал с добавлением дополнительных инструкций в подсказку. Поэтому я явно указал желаемый формат (html, потому что его легче форматировать). Кроме того, инструкция менее 150 слов гарантирует, что использование токенов будет минимальным.
5. Отображение ответа
Последним шагом является предоставление ответа от API пользователю в веб-приложении. Опять же, я не буду объяснять это очень подробно. Этот шаг включает в себя визуализацию полученных данных в удобном для пользователя формате, возможно, после очистки данных и обработки потенциальных ошибок или пустых ответов.
Ниже приведен результат ввода «мука, яйца, молоко, растительное масло»:

Полное демонстрационное видео
Соображения и компромиссы
Хотя процесс разработки с использованием API OpenAI может быть быстрее, он сопряжен с затратами. Использование OpenAI API может очень быстро привести к увеличению расходов, особенно при крупномасштабных или частых взаимодействиях. Стоимость использования API может быть важным фактором для рассмотрения, особенно для тех, у кого ограниченный бюджет или ресурсы.
При традиционном подходе у вас есть полный контроль над данными, моделью и алгоритмами, используемыми в вашей системе НЛП. Хотя точная настройка возможна при использовании моделей OpenAI, у вас по-прежнему есть ограниченные возможности по настройке базовой модели, что затрудняет ее точную настройку в соответствии с вашими конкретными требованиями.