Если вы работаете в Digital, у вас часто бывают рутинные задачи: создать 10 000 заголовков объявлений, переписать 50 000 карточек товаров, адаптировать 5 000 текстов и так далее. ChatGPT в таких задачах помогает, но вряд ли вам захочется руками вставлять в ChatGPT 50 000 карточек.
Правильным решением будет использование API ChatGPT. Создаём цикл и отправляем в ChatGPT каждую карточку/заголовок/текст с описанием задачи и вот у нас есть 50 000 готовых ответов. Но не всё так просто.
Если вы пользуетесь формулами Google Sheets для обращения к API, то быстро упрётесь в лимиты. При работе без задержки сервер выдаст ошибку на ваши бесконечные запросы. А добавление паузы перед запросом уже не попадает под временнЫе лимиты Google-таблиц. К тому же у ChatGPT есть лимиты на количество токенов в минуту. Поэтому отправка более 200 запросов уже может стать проблемой.
Можно работать через Excel, но отправление запросов через Power Query неконтролируемо. Результат нигде не сохраняется, сколько запросов сделано - непонятно, прогрузка таблицы работает либо полностью, либо никак. Будет обидно сделать 49 000 запросов и споткнуться на последней тысяче не сохранившись.
Остаётся Python, тем более что там уже есть асинхронная функция для ChatGPT. С её помощью мы сможем одновременно выполнять большое количество запросов к API и нам за это ничего не будет. А с библиотекой Kivy можем добавить к этому приятный интерфейс управления😊
Программа для массовых запросов к ChatGPT
Я сделал 2 версии программы, одна - бесплатная (скачать можно тут), вторая - в рамках подписки ПРО на Boosty (там же исходный код для доработки). В бесплатной версии нет GPT-4 и нет управления температурой - это творческий уровень генерации текстов. Но даже бесплатная версия хорошо помогает решать многие кейсы массовой генерации.
Как всё работает: берём текстовый файл и вставляем туда N строк, далее пробегаемся по этим строкам и на каждую строку получаем ответ от ChatGPT, который записывается в эту же строку правее. Чтобы потом понять где промпт, а где - ответ, между ними ставится разделитель, который вы укажете.
Анонсы всех видео, статей и полезностей - в нашем Telegram-канале🔥
Присоединяйтесь, обсуждайте и автоматизируйте!
Для тех же заголовков ChatGPT нужна подробная задача, а не просто инфа по товару. Поэтому до/после основного промпта мы можем добавить текст с описанием задачи. Программа будет забирать по N строк и отправлять их на обработку прикрепляя описание задачи в начало или в конец (можно сразу в начало и конец). Каждый запрос будет содержать описание задачи и инфу по товару/объявлению. Интерфейс выглядит так:
![](/media/image_05i96cG.png)
Давайте на примере - у нас есть длинное описание товара:
кружка керамическая с надписью удачи и успехов, объем 0.4, высота 15 см, ручка изогнутая...
Вы хотите из этого описания сделать короткий заголовок для объявления "Кружка керамическая с надписью". Таких заголовков надо сделать 1000 штук.
Пишем промпт:
Составь краткий заголовок до 30 символов по описанию этого товара, отражая самую важную характеристику. Описание товара тут:
Затем пробегаемся по тысяче описаний и отправляем в ChatGPT наш промпт + описание товара. Получаем 1000 крутых заголовков!
Преимущества Python для обращения к ChatGPT
В чём плюсы такой программы? Их довольно много:
- цикл не имеет ограничений по количеству строк, разве что файл будет очень большой, но можно переписать скрипт под нужную БД;
- программа делает 4 попытки запроса, поэтому из-за случайной ошибки ничего не сломается;
- если программа остановилась, обработанные данные сохранятся в файле;
- наглядно видно расход бюджета, а также среднюю скорость расхода токенов в минуту (чтобы не упираться в лимиты аккаунта);
- не нужно ставить скрипты Google таблиц или уметь работать с Power Query - программа легко настраивается и наглядно работает:
![](/media/image_bq5LohI.png)
Главный плюс программы - наглядность. Что же показывает программа справа? Разберём по пунктам:
![](/media/image_WB3FKjI.png)
Изначально весь объём текстов делится на части по N строк (N указывается в настройках). Вы видите сколько всего частей мы получили и какую сейчас обрабатываем. "Расход токенов" и "Расход на эту часть" отображают сколько токенов и рублей потрачено на эту часть. Токены в минуту нужны чтобы понимать скорость генерации и не превышать лимит аккаунта.
Текущий общий расход - сколько всего вы потратили в рамках этого запуска. Предполагаемый полный расход - сколько всего планируем потратить на этот запуск. Ну и время ожидания - сколько примерно придётся ждать обработки всех частей. Время оцениваем исходя из задержек, сами запросы или ошибки могут продлить ожидание.
Есть и минус - для работы программы нужен ВПН. Самый дешевый вариант - взять иностранный сервер на vdsina и подключиться к нему из outline. Это даст вам ВПН не на браузер, а на все приложения, после чего вы сможете подключаться к ChatGPT.
Загрузка промптов в файл и выгрузка результатов
Ключевым разделителем изначального файла является перенос строки. Что же делать если внутри строки у вас уже есть парочка переносов? Всё просто: составляем столбец промптов в Excel, затем выделяем его и заменяем перенос строки на пробел. Перенос выбирается сочетанием ctrl + J, в "заменить на" ставим пробел:
![](/media/image_30oAZ0V.png)
Теперь у вас остался только нужный перенос - перенос между промптами (то есть строками). Смело вставляйте полученный столбец в текстовый файл.
Но что же делать если ChatGPT ответит с кучей переносов? Тут всё проще - мы заменили переносы в ответах ChatGPT на символ <br>. Поэтому структура текстового файла не сломается. Уже потом, после отделения результатов от промптов, можно выполнить обратную замену <br> на ctrl +J.
Ответ ChatGPT будет размещен справа от каждого запроса, как же быстро отделить их друг от друга? Для этого в программе есть параметр "разделитель". Проще всего использовать в качестве разделителя один символ - так будет удобнее разбить итоговый текст по столбцам в Excel. Если символ разделителя встретится в промптах или ответах, ваше разделение по столбцам будет неверным. Потому не ставьте разделителем запятую, а вот вертикальная черта вполне подойдёт.
Еще вариант - поставить разделителем сочетание символов и перед разбивкой заменить его на нужный символ. Это хорошая страховка на случай если в ответах ChatGPT всё же встретится вертикальная черта и вам не захочется разбираться где разделитель, а где - часть ответа.
Пример цикла в ChatGPT
Попробуем программу в работе. Мы получили описания товаров магазина инструментов. Нужно составить 55 карточек с заголовком на каждый товар:
![](/media/image_Xc1soc0.png)
Вставляю их в текстовый файл и сохраняюсь. Будьте внимательны: если в файл вставилась пустая строка, алгоритм её удалит.
![](/media/image_86sLATr.png)
Заполняю токен (получить токен можно тут), ссылку на файл, забирать планирую по 10 строк за раз и делать паузы в 5 секунд, разделитель - вертикальная черта. Перед каждым товаром добавляю описание задачи - "Напиши краткий заголовок на 30 символов на основе описания товара:".
![](/media/image_XmZZONS.png)
После заполнения полей могу сохранить настройки, чтобы в следующий раз не вбивать. Программа будет отправлять в ChatGPT 55 запросов следующего вида:
Напиши краткий заголовок на 30 символов на основе описания товара: 1. Аккумуляторный дрель-шуруповерт с крутящим моментом 40 Нм, двумя скоростями и литий-ионным аккумулятором на 20 В.
Выполнение заняло полминуты, но мы могли работать быстрее, ведь лимит моего аккаунта на GPT-3.5 - 60 000 токенов в минуту. Мы работали на скорости около 14 000 токенов в минуту, а значит могли бы повысить количество строк за раз или сократить задержку:
![](/media/image_l7qZJNl.png)
Результат видим в файле справа от разделителя:
![](/media/image_REBkmQo.png)
Вставляю результат в Excel, выделяю столбец, перехожу на вкладку Данные и делю текст по столбцам:
![](/media/image_m6phhAG.png)
Разделитель - вертикальная черта:
![](/media/image_7KDwTIK.png)
У нас появился отдельный столбец заголовков, который можно использовать в карточках товаров. Разве что удалить кавычки и слегка подкорректировать:
![](/media/image_qOg9w13.png)
Если программа выдала ошибку - обработанная часть текстов сохранится в файле. Просто перенесите готовое в Excel, оставив в файле необработанные тексты, сохраните файл и снова запустите генерацию. Генерация идёт с начала файла, поэтому не оставляйте там готовые строки если планируете запускать обработку.
Итоги
ChatGPT может сильно помочь в обработке большого количества однотипных строк, будь то список заметок, описания товаров на маркетплейсе или рекламные тексты для Директа. Но стандартные способы плохо справляются с большим количеством строк + требуют дополнительных знаний.
Наша программа будет отличным решением если вам требуется обработать тысячи или даже сотню тысяч текстов одинаковым образом с помощью ChatGPT.
Следите за расходом и не пишите слишком большой промпт внутри программы - ведь он участвует в КАЖДОМ запросе. Или пишите промпты на английском - будет дешевле (отвечать можно попросить на русском). И напоминаю: GPT-3.5 в десятки раз дешевле, чем GPT-4-Turbo.
Уточните тир вашего аккаунта ChatGPT - у каждого свои ограничения. У вас могут быть как лимиты за минуту, так и лимиты за день. Если аккаунт новый, пополните его хотя бы на 5$, чтобы получить Тир1. Начинайте с небольшого количества текстов, чтобы подобрать паузу, количество элементов за раз и прикинуть общий расход. Это поможет избежать ошибок на больших объёмах.
И самое ужасное - ChatGPT не заменит ручного труда по проверке 100 000 объявлений🙄 А за ним нужно проверять, особенно за GPT-3.5. Ускорить проверку можно различными фильтрами по длине или содержанию, но проверять придётся, иначе результат может оказаться очень средним.
Комментарии