Эта история - реальный кейс об одном из способов заставить ChatGPT делать именно то что ты хочешь, а не то что получится.
Спойлер: В результате я получил от ChatGPT то что хотел. Однако путь которым пришлось пройти сильно напоминает комедию с элементами детектива.
Спойлер: Промпт присутствует. Может быть полезен для сортировки слабоструктурированных текстовых массивов информации.
Условия задачи:
Мне нужно было написать сценарий документально видеоролика длительностью около часа, с элементами аналитики. Предположим, про Илона Маска (все имена и явки вымышлены и не имеют отношения к нашей реальности).
Поиск
При помощи ChatGPT я великолепно собрал исходную информацию:
Дал задание ему искать и в русскоязычных и в англоязычных источниках, с ссылками на первоисточник.
Задал ему стиль изложения. А то ведь он не просто ищет информацию, а ПЕРЕСКАЗЫВАЕТ её. Так пусть хоть пересказывает в нужном стиле, а не в своем доброжелательно-дебильно-политкорректно стерилизованном.
На его предложения о том что он может рассказать дополнительные подробности я часто соглашался.
Если проявлялся интересный нюанс, просил дать мне информацию и о нем тоже.
Одним словом я был доволен.
Искренне рекомендую ChatGPT для ситуаций, когда нужно осуществить глубокий поиск по массовым темам.
На выходе у меня получился файл на 120 страниц с плохо структурированной информацией.
Плохо структурированной потому что когда просишь его “расскажи во всех подробностях”, то он начинает с предыстории и заканчивает выводами. Да и я постоянно отклонялся от основной канвы, чтобы собрать дополнительную информацию.
Далее мне предстояло этот файл на 120 страниц упорядочить, иначе я в нем утонул бы.
Попытка 1
Первая логичная мысль: попросить ChatGPT рассортировать этот файл согласно таймлайну, то есть в порядке хронологии. Логичная ведь мысль?
Выяснились 2 вещи:
120 страниц в него не лезет. Ну это ладно, можно попробовать по частям.
Он уже забыл то что сам же нашел и мне пересказал.
Вот второе - критично. Делает сортировку невозможной.
Попытка 2
Ладно, я решил попробовать скормить ему собранную им же информацию, и пересказать ее мне в соответствии с таймлайном.
У ChatGPT есть 2 проблемы, которые меня реально бесят:
Доброжелательно-тупой америкосовский стиль изложения. Насчет термина “тупой” претензии не ко мне, а к Михаилу Задорнову, он этот факт открыл и обосновал.
Он стерилизует материал. Из материала исчезают конкретные имена, даты, географические названия. Остается выхолощенный пересказ с нарративом “за все хорошее против всего плохого”.
С этим можно бороться, но об этой его особенности нужно помнить.
Я не вспомнил, и материал который мне сделал ChatGPT напоминал кисельную сладенькую сказочку.
Выходов два:
Обучить ChatGPT. Но я работаю над разными текстами, и не уверен что обученный он мне не испортит все следующие материалы.
В каждом промпте давать ему указания о стиле написания и о сохранении фактических данных. Хотя, может и не помочь.
Попытка 3
Ладно, я задал ему стиль изложения. Крепко-накрепко указал сохранять все фактические данные. Категорически приказал писать все-все-все подробности!
Результат получился… ну, скажем, парадоксальным.
Он рассказал мне в нужном стиле, с большим количеством подробностей.
Однако, я вдруг наткнулся на какие-то новые имена и события.
Я подумал, что возможно это информация из той части сырьевого материала, которую я еще не прочел?
Но вот тот факт, что мать условного Илона Маска теперь звали по другому, вселил в меня смутные сомнения…
Оказалось, что все-таки он половину выдумал сам, и качественно встроил в исходную информацию.
Так что эксперимент опять не удался.
Попытка 4
Но я же упорный. Мне же лень целый день сортировать информацию вручную. Я лучше потрачу два дня на то чтобы заставить это сделать компьютер!
Я спросил у ChatGPT о том как бы он посоветовал решить возникшую проблему.
Он посоветовал сделать разметку исходного материала. С чем мне в итоге пришлось согласиться.
Сделал разметку. Твердо-натвердо приказал ни в коем случае не менять исходный текст. Отправил на исполнение.
И что? Вы думаете на этом все закончилось?
Получив от ChatGPT полученный материал я бегло посмотрел что получилось и возрадовался! Тот материал который был у меня перед глазами, был упорядочен в соответствии с моими идентификаторами!
А потом я проверил объем исходного материала, который я скормил GPT и полученного от него.
Полученный был примерно в 2 раза меньше(((
Нет, ну я конечно понимаю, что в исходном материале много информации дублировалось, потому что поиск-то я проводил многократный. Но вопрос в том что он удалил - менее или более подходящие мне информационные блоки?
Дальше у нас с ним состоялся разговор. Чтобы изложить компактно, перескажу своими словами:
Я: Слушай, а тут не вся информация…
Он: Вся.
Я: Верни текст в состояние до редактирования.
Он: Вернул.
Я: Ну вот же, смотри, вот же фраза “ХХХ”, а в итоговом документе она отсутствует?
Он: Нет здесь фразы “ХХХ”.
Я: А это что?
Он: В шаблоне обрабатываемого документа эта фраза отсутствует. Обновить шаблон?
Я: Ну, обнови.
Он: Не могу обновить шаблон, возможно слишком сложное форматирование. И вообще, у вас закончился лимит, продолжение работы возможно через 3 часа.
Попытка 5
Я уже было решил плюнуть, и сделать вручную. Но нут в голове всплыла информация, что в основе GPT лежит векторизация.
То есть я вижу текст. А он вместо этого текста видит цифры.
И если у меня перед глазами два блока текста которые очень похожи, то у него перед глазами получается одно и то же число. А зачем ему два одинаковых числа? Одного достаточно.
Это и дало мне решение. Я решил использовать агентную схему.
Вот что о ней говорит ChatGPT: Это может быть эффективным и структурированным способом решения сложных задач. Такой подход называется многоагентной схемой и работает аналогично конвейеру, где результат одного этапа передаётся на следующий.
Получается, что если устроить у ChatGPT шизофрению, то есть раздвоение (растроение и т.д.) личности, то можно лучше контролировать каждый отдельный этап обработки информации. Потому что у этих отдельных личностей внутри GPT задача упрощается, так как уменьшается взаимовлияние этапов обработки информации.
Дальше не интересно, дальше все сработало.
Единственно, загружать файлы для обработки лучше в TXT формате. В этом случае итоговый файл ChatGPT предлагает скачать тоже в формате TXT. При попытке загрузить файл в PDF, итоговый файл формируется на холсте. И там возможны неожиданности. Или нужен третий агент для отображения на холсте. Шизофрения она такая… многогранная.
Вот рабочий промпт:
У нас многоэтапная задача: нужно рассортировать текст по смысловым блокам.
Термины:
- Исходный документ: текст, который передаётся в обработку.
- Итоговый документ: текст, получившийся в результате обработки.
- Идентификатор: пять символов в формате "::NNN", где "NNN" — три цифры.
- Текстовый блок: неизменяемый блок текста, начинающийся с идентификатора и заканчивающийся перед следующим идентификатором или в конце документа.
Важно: текстовые блоки нельзя изменять, сокращать, перефразировать, менять форматирование или исключать. Можно только менять их порядок.
Шаги обработки:
Мы используем двух агентов — аналитика и архивариуса. Каждый выполняет свою часть работы.
1. Аналитик:
- Определяет текстовые блоки в исходном документе.
- Передаёт архивариусу каждый текстовый блок вместе с его идентификатором.
2. Архивариус:
- Получает текстовые блоки и идентификаторы от аналитика.
- Вставляет текстовый блок в итоговый документ.
Порядок вставки:
1. Если в итоговом документе уже есть блоки с таким же идентификатором, новый блок размещается после них.
2. Если блоков с таким идентификатором нет, новый блок размещается после всех блоков с меньшими идентификаторами.
Пример:
Исходный документ:
::002
Это текст блока 002.
::001
Это текст блока 001.
::003
Это текст блока 003.
Итоговый документ:
::001
Это текст блока 001.
::002
Это текст блока 002.
::003
Это текст блока 003.
END