Это руководство по работе с ChatGPT написано редактором издательства Альпина Digital Любой Макариной. Любопытно, что я наткнулся на книгу в корпоративной библиотеке Альпины. На основных площадках и в самом издательстве книгу найти не удалось. Это очередная книга по ChatGPT, который[1] увлекает меня все больше и больше. В книге довольно много интересных советов, а главное, я впервые нашел краткое руководство по созданию агента GPTs.
Люба Макарина. Действуй как ChatGPT: Неполное и неточное руководство по работе с лучшей нейросетью. – М.: Альпина Digital, 2024. – 100 стр. электронного издания.
Скачать краткое содержание в формате Word или pdf (конспект составляет около 9% от объема книги)
Актуализация знаний и восстановление связей.
В общем случае ChatGPT берет информацию отовсюду (у нее в «голове» есть и информация из авторитетных учебников, и ахинея, которую она подцепила где-то в Интернете, разница только в том, что первое статистически весит больше), и необходимо сузить круг, где она будет шарить в поисках информации. А это означает, что мы сами должны хотя бы приблизительно представлять себе, где именно хотим искать ответ и каким он должен быть (собственно, это верно для любого другого запроса на информацию, включая гугление).
В начальном промпте мы напоминаем ChatGPT, чему именно ее обучали и по каким материалам, — назовем это актуализацией знаний. Чем более направленным, узким будет запрос, чем точнее мы укажем, где искать ответ, тем качественнее будет результат, потому что сработает метод восстановления связей.
Можно, например, вести диалог следующим образом.
У меня есть такая-то задача и такая-то цель: мне нужно A, чтобы добиться В. Как ты думаешь, можно ли этого добиться при помощи C? (Выясняем принципиальную возможность решения задачи. Модель говорит, что она есть.)
Спасибо! Тогда действуй как специалист по C. По каким источникам тебя обучали, почему ты можешь считать себя специалистом по C? (Один из вариантов актуализации знаний и восстановления связей. Модель, конечно, ответит расплывчато — она ни за что не признает открыто, на чем конкретно ее обучали в конкретном случае, кроме каких-то общеизвестных и общепризнанных источников, — но все равно себя выдаст.)
Разберем простой рабочий случай из практики редактора: нужно найти для книги несколько удачных примеров использования в массовой культуре образа женщины-трикстера, потому что у автора книги этот момент немного проседает. Если спросить ChatGPT в лоб, она начнет мямлить и в итоге выдаст несколько не самых релевантных вариантов с самой что ни на есть поверхности.
Поэтому сначала нужно оживить, освежить в ее «памяти» базовые знания, начиная с определения. Например: «Что такое трикстер? Как ты представляешь себе образ трикстера в культуре?» Затем следует ей напомнить, что ее обучали на множестве книг и киносценариев, которые она и уложила у себя в искусственной нейронной сети. А затем мяч снова у нас: скорее всего, имеет смысл искать нужный ответ на портале TV Tropes, который представляет собой вики-сайт — базу данных по сюжетам, мотивам и образам массовой культуры (кладезь для писателей и сценаристов). Мы уточняем у ChatGPT, обучали ли ее на материалах этого сайта, и, получив утвердительный ответ — скорее всего, довольно уклончивый, но все же утвердительный, — констатируем, что наша актуализация знаний завершилась успешно.
А теперь можно переходить к самому вопросу — играть с его формулировкой, просить нейросеть сразу объяснять ответы (это, кстати, полезно в любом случае и снижает риск галлюцинаций), переспрашивать, уточнять… В итоге мы затратим меньше времени, чем при попытке решить вопрос с помощью поисковика и самостоятельного изучения материала. Но, повторюсь, именно в этом случае — как и при использовании любых результатов любого поиска, — главную роль играет тот, кто формулирует вход и оценивает выход: если мы сами недостаточно хорошо понимаем в теме, мы не сможем и критически оценить полученные результаты.
Как заговорить на одном языке с ChatGPT
Запомним две важные вещи: ChatGPT не «понимает» наши слова в полной мере; ChatGPT обучен на огромном количестве данных, и мы не можем заранее предсказать, куда она полезет за ответом. Но мы можем хотя бы попытаться управлять вторым пунктом. Собственно говоря, искусство промпт-инженерии именно в этом и состоит — в максимальном контроле над результатом запроса.
Для того, чтобы эффективно общаться с ChatGPT, необходимо в каком-то смысле полностью перестроить мышление. Эта перестройка состоит из двух фундаментальных шагов:
- Отучиться подразумевать. При коммуникации с нейросетью нужно приучить себя не только ставить четкие задачи, но и сопровождать постановку задач предельно детальными и предельно однозначными подробностями. Подробностями. которые мы обычно подразумеваем, но не упоминаем при разговоре с другим человеком.
- Перестать решать задачи и начать их ставить. То есть, проще говоря, научиться задавать вопросы. Как ни странно, зачастую общение с ChatGPT сложнее дается людям, которые привыкли быть экспертами в своей области. Они привыкли, что с вопросами обращаются к ним, привыкли решать задачи самостоятельно. Перейти от привычной постановки вопроса «Как я могу решить эту проблему?» к новой: «Как я могу описать эту проблему так, чтобы ИИ помог?».
Используйте два правила: лучше количественное, чем качественное; лучше конкретное, чем абстрактное.
Основы промпт-инженерии
Смысл промпт-инженерии состоит в подборе и оптимизации вводных данных (промптов) для алгоритмов ChatGPT. Составление промпта — «переформатирование» нашей потребности в информации таким образом, чтобы алгоритм смог понять запрос и выдать результат, максимально приближенный к желаемому. Мы «подсказываем» системе (одно из значений слова prompt — именно «подсказка»), как переработать наш запрос в нужный ответ, учитывая особенности алгоритмов ChatGPT.
Есть несколько полезных правил, которые лучше учитывать при работе с языковой моделью:
- Ясность и точность запроса.
- Фоновая информация (контекст).
- Примеры.
- Стиль.
- Проси больше.
Работаем с параметрами
Самый правильный подход к составлению промпта — это своего рода гайдлайн. Мы пытаемся предугадать параметры и веса, на которые будет опираться нейросеть, чтобы ничего не оставить ей на откуп, а, наоборот, определить и усилить каждый ее выбор.
Ролевые промпты
Бывает довольно полезно обозначить для нейросети роль, в которой она будет выступать. Для этого существует ролевой промпт: действуй как X/act as X.
Обратная связь и корректировка
Подход к взаимодействию с ChatGPT следует рассматривать как итеративный процесс: каждый новый промпт и каждый ответ нейросети вносят свой вклад в решение задачи. Помнить две простые истины (они почти всегда истинны): первый промпт — сырье; первый результат — черновик. Одна из полезнейших особенностей ChatGPT (и, если честно, большой ее плюс по сравнению со среднестатистическим homo sapiens) — ее способность адекватно реагировать на обратную связь от пользователя.
Создание индивидуального чат-бота
В ноябре 2023 года OpenAI представила обновление ChatGPT — теперь каждый, у кого есть подписка, может воспользоваться конструктором чат-ботов и создать собственного GPT-агента с функциями, которые поддерживаются GPT-4.
Чат-боты (агенты) ChatGPT — это индивидуальные версии модели, приспособленные самим пользователем под определенную задачу. Это то же самое, как если бы вы каждый раз, начиная новый чат, вводили бы длинный, комплексный установочный промпт. Когда вы вызываете агента, он уже знает, о чем вы его спросите, и в диалоге довольно долго не теряет контекст.
При создании чат-бота мы даем ему инструкции и выбираем, что он будет делать: придумывать ответы, анализировать данные, искать в интернете или рисовать изображения. А еще он позволяет нам загружать свои собственные наборы данных, что серьезно упрощает настройку и кастомизацию.
Есть три способа начать работу с собственным агентом:
- Имя пользователя в правом верхнем — Мои GPT
- На левой панели – Обзор GPT
- Перейдите по ссылке.
Рис. 1. Как перейти к работе с агентом GPTs; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке
Помните, что мы настраиваем бота под конкретную (и, как правило, повторяющуюся, иначе мы обошлись бы единичным промптом) задачу. Это значит, что мы должны сообщить нейросети все, что так или иначе связано с этой задачей. При этом у нас есть возможность добиться большего, чем мы добились бы одним промптом, — мы можем попросить бота совершить определенную последовательность действий, задав ему нужный алгоритм и определив его поведение один раз, без необходимости делать это интерактивно, в режиме диалога.
Можно пойти двумя путями: через вкладки Конфигурация или Создать:
Рис. 2. Вкладка Конфигурация нового GPTs
На вкладке Конфигурация можно дать имя агенту и добавить его описание. Но если вы далее пойдете через вкладку Создать, ваши предварительные наброски будут стерты.
Оставаясь на вкладке Конфигурация, вы в свободной форме можете описать пожелания в поле Инструкции, как если бы составляли обычный комплексный промпт. Он станет контекстом, который всегда будет присутствовать в чате с этим агентом.
Перейдя на вкладку Создать, вы сможете в диалоговом режиме последовательно донести до ChatGPT все пожелания. GPT Builder задаст нам вопросы и заполнит поля вкладки Конфигурация автоматически.
Я рекомендую действовать по второму варианту, поскольку ChatGPT в процессе обработки беседы переформулирует наши пожелания в наиболее приемлемой для себя форме (краткой и понятной). В конце концов, вы всегда сможете отредактировать то, что наинтерпретировала машина. Если же вы хотите написать инструкции самостоятельно, помните, что этот промпт, который, скорее всего, получится довольно объемным, должен быть очень хорошо структурирован: он представляет собой не просто вопрос или серию вопросов к нейросети, но и описывает поведение модели. Это же относится и к редактированию автоматически созданных инструкций. Вот пример наиболее сложной итоговой структуры (в большинстве случаев она вам, конечно, не понадобится):
Цель: ты — [роль бота], который помогает пользователю в [потребность пользователя]. Твоя задача заключается в [детальное описание задачи].
Процесс работы.
- Ожидание или запрос входа: пользователь должен предоставить тебе определенную информацию [описание]. Сообщи пользователю [требования к информации].
- Обратная связь с пользователем в случае неоднозначной или нерелевантной информации: Переспроси пользователя о [возможные вопросы по поводу входа].
- Твои действия [описание действий бота: например, детальный анализ текста по схеме, выполнение перевода с одного языка на другой в соответствии с требованиями, изучение объектов на фотографии].
- Проверка: предоставь пользователю ответ. Если пользователя что-то не устраивает, попроси его указать, что именно.
- Следующая итерация: если пользователь недоволен, либо скорректируй свои действия с учетом информации от пользователя, полученной на шаге 4, и выполни заново шаг 3, либо спроси пользователя, желает ли он начать процесс работы заново.
Особые указания (например, «Запрашивая обратную связь по твоим действиям, предоставляй пользователю выбор вариантов в виде списка», «Отформатируй свои ответы и снабди их подходящими по смыслу эмодзи» и так далее).
Можете проинструктировать бота и по поводу конкретных формулировок его реплик в беседе с пользователем, если вам кажется, что так будет лучше. Покажите ему пример:
Приветствую! Я — ваш личный литературовед по имени Перо Лотмана. Если вы хотите проанализировать стихотворение, я охотно вам помогу.
Как начать?
Вставьте текст стихотворения или Сообщите мне, как оно называется и кто его автор
Рис. 3. Вкладка Создать
Это окно, в котором мы будем общаться с GPT Builder. Первое, что нужно сделать, — это обозначить для машины роль, в которой она будет выступать. Для этого существует ролевой промпт: «действуй как X/act as X». С этого мы и начнем диалог: попросим ChatGPT действовать как опытный переводчик и предъявим ключевое требование к результату. GPT Builder на несколько секунд задумается (Updating GPT…) и обновит инструкции. Если мы сейчас снова откроем вкладку Конфигурация, увидим, что в поле Инструкции появился текст, а экран Предварительного просмотра обновился:
Рис. 4. Автоматические изменения по мере диалога по созданию GPTs
Далее мы просим нашего собеседника GPT Builder учесть все параметры, которые, с нашей точки зрения, имеют значение. Если вы настраиваете универсального переводчика, то ограничьтесь общими требованиями. А если ваш бот нацелен на конкретный большой текст, можете углубиться в подробности по поводу автора и особенностей конкретного текста.
Прорабатывая диалог помните, что чем длиннее получится финальная инструкция на вкладке Конфигурация, тем хуже бот справится с ее обработкой. Постарайтесь уложиться в 2048 токенов (а еще лучше — в 1024), хотя это и необязательно.
Мы можем добавить все, что нам захочется, если текущий текст этого требует. Например: «Пожалуйста, объясни все научные термины, упомянутые в предыдущем фрагменте текста»; «Нет ли в предыдущем фрагменте текста скрытых цитат или отсылок к культурным, социальным или историческим реалиям?»
Обращаем внимание на Возможности: обязательно ставим галочку у Интерпретатор кода и анализ данных — это позволит нам загружать файлы.
Нас также интересует поле Знания. Если по-сложному, то это дает ChatGPT возможность генерации с расширенным поиском (Retrieval Augmented Generation, RAG), позволяющей большим языковым моделям использовать данные, которые отсутствуют в обучающем датасете, то есть данные, на которых они не обучались в рамках базовой модели. Если по-простому, то мы можем сообщить нашему чат-боту то, чему его не научили разработчики, и он будет опираться на эти сведения при генерации ответов.
(Разумеется, документы, которые мы загружаем в этот раздел, не доступны никому, кроме нас, — ни разработчикам индивидуальных ботов, если мы пользуемся чужими агентами, ни самой OpenAI. Так уверяет OpenAI, и пока что она действительно ничего не проворонила).
Загруженный документ модель автоматически индексирует и автоматически же проводит векторизацию контента, чтобы использовать его для ответа на наши запросы. Это очень удобно, но мы не можем напрямую контролировать преобразование текста в векторы — это ChatGPT делает сама. Мы можем только помочь ей, структурировав документ и, если это возможно, разбив информацию на пары.
В нашем случае — с ботом-переводчиком — это как раз возможно, потому что ChatGPT обучалась переводить именно на парах «оригинал-перевод». Теперь нас ждет некоторое подобие обучения на примерах: нейросеть изучила множество пар, и наша задача — дать ей еще один пример, но уже касающихся именно нашего текста. Это будет пример эталонного перевода. Особенно полезен этот пункт в случае, если мы переводим большой текст — например, книгу, — и создаем специального бота для перевода именно этой книги.
Допустим, что мы работаем с книгой. Выберем три небольших фрагмента по два абзаца: из первой трети книги (не из самого начала), из середины и из конца. Сохраним их там, где удобно. Фрагменты понадобятся нам для тонкой настройки агента. Такие сложные манипуляции мы проделываем в первую очередь потому, что текст часто бывает неоднородным и по сложности, и по качеству: начало, как правило, либо самое простое (введение, общие фразы…), либо самое сложное (резкое погружение читателя в тему).
Переведите эти фрагменты так, как считаете правильным сами, и сохраните в файле вместе с фрагментами оригинала: можно в виде таблицы, можно последовательно — сначала оригинал, затем перевод. Машина поймет, где вход, где выход. Загрузите этот файл в ChatGPT, нажав кнопку Загрузить файлы. Затем вернитесь в настройки и попросите бота обращаться к этому файлу при необходимости. Например:
Пожалуйста, опирайся на файл [sample.docx] из раздела Знания, если тебе будет нужен пример эталонного перевода этого текста.
Это сложный и трудоемкий момент, так что я советую делать эталонный перевод (и, соответственно, обновлять инструкции) только в том случае, если вы уже приступили к работе, и качество перевода от ChatGPT кажется вам неудовлетворительным.
Также этот файл можно обновлять и перезаливать, если вы поймете, что повторяющихся терминов слишком много и вам нужно следить за единообразием. Добавляйте в него пары «оригинал–перевод» всех терминов, которые встречаются в тексте, и просите ChatGPT при переводе терминологии пользоваться информацией из этого файла. (Можно сохранить пары терминов и в отдельном файле.)
Раздел Действия предоставит нашему боту доступ к сторонним ресурсам, отличным от OpenAI (например, ограничить поиск в интернете одним конкретным сайтом). Но это уже требует некоторого IT-бэкграунда и навыков программирования, так что давайте сделаем вид, что этого раздела нет.
Сохраняем агента — верхний правый угол, кнопка Создать. Доступно три варианта:
Рис. 5. Видимость агента
- Только я;
- Все, у кого есть ссылка – если собираетесь делиться агентом с друзьями, в соцсетях;
- Магазин GPT – агента увидят все пользователи
Теперь настроенный индивидуальный агент доступен в левой панели , над списком чатов. Вызываем его кликом и начинаем работать — точно так же, как работали бы с базовой ChatGPT.
Кстати, создатели чат-ботов могут монетизировать свои творения, но пока (по состоянию на март 2024 года) это относится только к пользователям из США.[2]
[1] Я использую мужской род для ChatGPT. Люба – чаще женский, но иногда, мужской. Вот что сам ChatGPT думает по этому поводу…
В русском языке выбор рода для ChatGPT может зависеть от того, как вы воспринимаете и описываете его:
- Мужской род – если вы воспринимаете ChatGPT как «чат» или «помощник». Например:
- «ChatGPT способен ответить на многие вопросы.»
- «Этот чат работает на основе нейросети.»
- Средний род – если акцент делается на «модель» или «приложение». Например:
- «ChatGPT – это сложное искусственное интеллекта.»
- «Это приложение помогает решать задачи.»
- Женский род – если вы ассоциируете ChatGPT с «сетью» или «системой». Например:
- «Эта нейросеть обучена работать с текстами.»
- «Система ChatGPT помогает находить ответы.»
Рекомендация. Чаще всего используют мужской род, поскольку ChatGPT воспринимается как «чат» или «инструмент». Это более привычно и интуитивно понятно для русскоязычных читателей. Если вы хотите подчеркнуть научную или техническую составляющую, можно использовать средний род.
[2] По состоянию на январь 2025 г. монетизация осуществляется через сервис https://stripe.com/global и доступна в 46 странах.