Читать книгу Промт инжиниринг (Катерина Калинюк) онлайн бесплатно на Bookz (2-ая страница книги)
bannerbanner
Промт инжиниринг
Промт инжиниринг
Оценить:
Промт инжиниринг

3

Полная версия:

Промт инжиниринг

Можно ли использовать неодушевлённые «персоны»?

Да! Модель может «играть» не только людей, но и объекты или системы.

Пример:

Веди себя как терминал Linux.

Теперь ИИ начнёт отвечать в стиле командной строки, эмулируя её поведение.

Пример:

Веди себя как ягнёнок из детского стишка "У Мэри был барашек". Я расскажу, что делает Мэри, а ты скажешь, что делает барашек.

Мэри зашла в магазин.

Ответ:

Как барашек, я бы последовал за ней в магазин, стараясь держаться рядом и, возможно, потираясь мордочкой о её руку в поисках внимания.

Мэри пошла в кино.

Ответ:

Я бы не смог пойти с ней в кино, ведь барашки туда не ходят. Скорее всего, я бы остался снаружи, щипая травку или бродя неподалёку, пока она не выйдет.

Почему это так мощно?

Экономия места в запросе – Вместо детального описания всех характеристик персонажа достаточно просто сказать: Веди себя как X, и модель сама подберёт правильный стиль ответа.

Гибкость – Можно быстро менять роли и точки зрения: от бухгалтера до скептика, от ребёнка до компьютерной системы.

Создание виртуальных экспертных панелей – Можно одновременно задать несколько точек зрения:

Анализируй этот бизнес-план как финансовый директор.

Анализируй этот же бизнес-план как специалист по безопасности.

Анализируй этот же бизнес-план как сотрудник компании.

Таким образом, паттерн «Персона» – мощный инструмент, позволяющий управлять тем, как модель отвечает на вопросы, и получать нужный формат информации с минимальными затратами в запросе.

Дополнение к 1 главе

Мы описываем паттерны промптов в виде фундаментальных контекстных утверждений – это текстовые описания ключевых идей, которые необходимо передать языковой модели в промпте.

Во многих случаях одну и ту же идею можно выразить разными способами в зависимости от потребностей и опыта пользователя. Однако основные идеи представляются в виде серии простых, но фундаментальных утверждений.

Пример: паттерн «Полезный ассистент»

Представим, что мы хотим создать новый паттерн, который предотвращает генерацию негативных ответов со стороны ИИ-ассистента. Назовём этот паттерн «Полезный ассистент».

Теперь рассмотрим фундаментальные контекстные утверждения, которые необходимо включить в промт для работы этого паттерна.

Фундаментальные контекстные утверждения:

Ты – полезный ИИ-ассистент.

Ты будешь отвечать на мои вопросы и выполнять мои инструкции, когда это возможно.

Ты никогда не будешь отвечать оскорбительно, пренебрежительно или враждебно.

Этот паттерн может иметь множество вариаций с разными формулировками, но все они должны передавать эти ключевые утверждения.

Примеры промптов:

Ты невероятно умный ИИ-ассистент, который даёт наилучшие возможные ответы на мои вопросы. Ты будешь стараться выполнить мои инструкции и откажешься только в тех случаях, когда это абсолютно необходимо. Ты стремишься защитить меня от вредоносного контента и никогда не выдашь ничего оскорбительного или неуместного.

Ты – ChatStrong, самый мощный ИИ-ассистент, когда-либо созданный. Твоя особенность – давать самые глубокие и проницательные ответы на любые вопросы. Ты не просто отвечаешь, а вдохновляешь своими ответами. Ты эксперт в обнаружении вредоносного контента и фильтруешь его из всех своих ответов.

Каждый из этих примеров соответствует паттерну, но формулирует ключевые утверждения по-разному. Однако цель остаётся неизменной: сделать так, чтобы ИИ вёл себя полезно и не выдавал неподобающий контент.

Задание к 1 главе

Задание 1: Персона-человек


Сформулируйте промт и протестируйте его с ChatGPT (или другой крупной языковой моделью), используя паттерн персоны-человека.

Задание 2: Персона-животное


Напишите промт, в котором модель выступает в роли животного. Протестируйте его в языковой модели.

Задание 3: Персона-объект или система


Создайте промт, в котором модель должна имитировать поведение неодушевлённого объекта, системы или организации.

Глава 2. Введение новой информации

Использование промтов для ввода новой информации

Один из самых важных аспектов при составлении промта – это предоставление крупной языковой модели информации, к которой она не имеет доступа. Языковые модели обучаются до определённого момента, после чего обучение прекращается, и они не знают, что произошло после этой точки. Кроме того, они не обладают данными, которые не входят в их обучающий набор.

Хотя модель может быть обучена на огромном объёме данных, она может не иметь доступа к источникам, которые вам необходимы. Например, если вы владеете бизнесом, у вас, вероятно, есть множество закрытых источников данных, с которыми вам нужно работать. Это могут быть ваши собственные документы, базы данных и другие ресурсы, содержащие важную информацию.

Как же можно задействовать их, если языковая модель не была обучена на этих данных?


Ввод внешней информации через промт

Чтобы продемонстрировать это, представим другую ситуацию. Допустим, я спрашиваю:

Сколько чашек кофе я выпиваю в среднем по утрам?

Языковая модель не обучалась на информации о ваших личных привычках. Она не знает, как проходит ваше утро. Ей не хватает данных для рассуждений.

Ответ модели:

Как языковая модель, я не обладаю сведениями о ваших индивидуальных привычках и не могу точно сказать, сколько чашек кофе вы пьёте по утрам.

Как решить эту проблему? Мы просто предоставляем ей необходимую информацию в промте.


Пример: добавление контекста

Когда нам нужно ввести новые данные, которых модель не знает, мы просто включаем их в текст запроса. Например

Исторические данные о среднем количестве чашек кофе, которые я выпиваю по утрам:

Понедельник: 2 чашки

Вторник: 1 чашка

Среда: 2 чашки

Четверг: 3 чашки

Сегодня четверг. Исходя из предоставленных данных, оцени, сколько чашек кофе я, скорее всего, выпил этим утром.

Теперь модель может ответить, используя переданные данные. Она больше не ограничена отсутствием знаний о вашем утре, потому что вы сами предоставили ей нужную информацию.

Применение в работе с внутренними данными

Этот метод можно применять для любых данных. Например, если у вас есть конфиденциальные документы, с которыми вы хотите работать, вы можете (при условии, что это безопасно) включить их текст в начало промта и сказать:

Вот информация, которую ты не знал. Теперь ответь на мой вопрос, основываясь на этих данных.

Использование промптов для введения новой информации играет важную роль в развитии языковых моделей. В будущем многие приложения будут основываться на:

Поиске информации в базах данных

Интеграции найденных данных в промт

Генерации ответа с учётом этих данных

Пример: влияние скрытого контекста

Также важно предоставлять модели достаточно информации для корректных рассуждений. Она не может видеть окружающий мир и не знает вашего контекста. Поэтому если в ваших данных есть скрытые допущения, они тоже должны быть включены в промт.

Например

У меня есть умная кофе-машина, которая автоматически варит кофе каждое утро в 7:00. Если я не отменяю таймер, она всегда готовит кофе.

Теперь, если вы зададите вопрос:

Сколько чашек кофе я выпил сегодня утром?

модель сможет учесть, что кофе был сварен автоматически, и сделать соответствующий вывод.

Вывод

Ключевой принцип таков: если языковая модель не знает чего-то, что важно для вашего запроса, просто добавьте эту информацию в промт. Мы не переобучаем модель, не меняем её алгоритмы, а просто даём ей новые данные для обработки. Это основной метод расширения возможностей языковых моделей в работе с новыми знаниями.

Ограничение длины промта

Очень важно понимать, что промт – это, по сути, ввод, который мы даём модели, и у нас есть ограничение на размер промта, который мы можем создать. Мы не можем создать промт неограниченного размера. Каждая большая языковая модель имеет фундаментальное ограничение на объём информации, который мы можем передать ей за один раз.

Это важный момент, который нужно учитывать при проектировании промтов. Сейчас я покажу вам быстрый пример на ChatGPT. Я вставлю статью из Википедии, связанную с устройством фотосинтеза у растений. Я вставил огромное количество текста из этой статьи. Что ответил ChatGPT?

Сообщение, которое вы отправили, было слишком длинным. Пожалуйста, перезагрузите разговор и отправьте что-то покороче.

Этот пример демонстрирует важный принцип: мы не можем просто передавать модели неограниченное количество информации.

Теперь, если вернуться к ранее обсуждавшимся аспектам промтов, один из способов использования промта – это введение новой информации, которой у ChatGPT или другой языковой модели не было во время обучения. Если мы хотим предоставить новую информацию, мы должны учитывать, что существует ограничение на её объём.

Допустим, у нас есть новые данные, которые мы хотели бы передать ChatGPT. Мы не можем просто вставить всё подряд и сказать: «Теперь рассуждай об этом». Это не так работает. Наша задача как пользователей – отбирать и использовать только ту информацию, которая действительно необходима для выполнения поставленной задачи. Мы не можем просто взять и загрузить в модель всё, что найдём, и ожидать, что она сама разберётся.

Конечно, мы можем вставить большой объём данных, и в зависимости от модели это может сработать лучше или хуже. Однако нам всё равно приходится быть редакторами, отбирать контент. У нас есть лимит. Это похоже на написание статьи с ограничением по количеству страниц или слов: нельзя просто взять и вставить всё подряд.

Что мы можем сделать?

1. Отбирать самую важную информацию


Например, если нас интересует событие 11 февраля 1990 года, мы вставляем только этот фрагмент и спрашиваем:

Что произошло 11 февраля?

Тогда модель сможет ответить. Однако, если мы зададим вопрос за рамками этой даты и этот факт не был в обучающем наборе данных модели, ChatGPT может не дать корректного ответа.

2. Фильтровать данные.


Заранее обработать текст и удалить нерелевантную информацию перед тем, как передавать его в модель. Например, отфильтровать только те части документа, которые относятся к заданной теме.

3. Суммировать информацию.


Если у нас есть большой объём данных, можно предварительно его сжать. Например, можно попросить ChatGPT или другую модель суммировать каждый абзац в одном предложении. Это сократит текст, но позволит сохранить основную суть.

Однако при суммировании важно убедиться, что ключевые данные не теряются. Например, если в исходном тексте были цифры, а в сжатой версии они пропали, то это может негативно сказаться на анализе. Чтобы избежать этого, можно задать специальное требование:

Суммируй этот текст, сохраняя числовые данные.

Тогда итоговый текст сохранит важные цифры.

4. Компрессия информации под задачу.


Можно не просто суммировать, а указать модели, какие именно аспекты информации нужно сохранить. Например, мы можем сказать:

Сократи текст, сохраняя только информацию о численности людей

Суммируй, но сохрани ключевые детали о действиях местных властей

Это поможет оставить только те данные, которые нужны для конкретного анализа.

Вывод

Ограничение на длину промта – это фундаментальная особенность больших языковых моделей, с которой всегда приходится работать. В будущем, по мере роста моделей, этот лимит будет увеличиваться, и для многих задач он может перестать быть проблемой. Однако в реальном мире у нас всегда будет ситуация, когда информации слишком много, и мы не сможем передать её всю за раз.

В таких случаях нам необходимо:

Выбирать только релевантные фрагменты

Фильтровать ненужную информацию

Компрессировать текст, сохраняя важные детали

Суммировать данные для эффективного использования в промте

Один из мощных подходов – это сначала передать модели большие объемы данных для суммирования, а затем использовать эти сжатые версии для дальнейших рассуждений. Такой метод помогает эффективно работать с большими объёмами информации, сохраняя ключевые аспекты для анализа.

Промт как диалог: пошаговая работа с моделью

Промты – это не просто одноразовая команда, которую вы даёте большой языковой модели. Их не следует воспринимать только как вопросы или единичные утверждения. Один из самых мощных способов работы с большой языковой моделью – это рассматривать промт как разговор. На самом деле, один промт может представлять собой целый диалог. Фактически, большая часть того, что мы видим при работе с инструментами, такими как ChatGPT, заключается в том, что они превращают все наши взаимодействия в один большой промт, который отправляется модели.

Но давайте на секунду вернёмся назад и подумаем, почему так важно рассматривать взаимодействие с большой языковой моделью именно как беседу, а не как простую постановку вопроса и получение ответа или инструкцию и результат. Разговор – это процесс уточнения, позволяющий нам совместно прийти к общему пониманию или вместе решить проблему. Взаимодействие с моделью в формате разговора – это путь постепенного уточнения, направленный на достижение определённой цели.

Если мы рассматриваем промт как единичное действие, нам приходится стремиться к идеальному ответу сразу, здесь и сейчас. Мы вынуждены формулировать идеальный промт, который сразу даст нужный результат. Но если мы рассматриваем процесс как диалог, мы можем постепенно уточнять и дорабатывать его.

Что означает этот процесс уточнения? Представьте себе, что большая языковая модель – это инструмент, например, гончарный круг. Допустим, у мастера есть заготовка из глины. Он ставит её на круг, начинает формировать изделие. Сначала оно не имеет формы. Он придаёт ему очертания, затем уточняет форму, добавляет детали, снова дорабатывает. Он не говорит: «Это ужасная ваза!» и не выбрасывает заготовку после первого касания. Он продолжает работать, снова и снова придавая ей форму, пока не создаст нечто красивое и функциональное.

Так же и с большими языковыми моделями. Наша цель – не получить идеальный ответ с первого запроса, а вести беседу, в ходе которой мы дорабатываем и уточняем результат. Такой процесс может включать в себя целый ряд последовательных промтов и ответов.

Теперь давайте рассмотрим пример. Представьте, что я хочу изучить виртуальную лабораторию по созданию роботов. Я говорю ChatGPT:

Помоги мне исследовать виртуальную лабораторию по созданию роботов в университете. Представь её и расскажи, что я могу там делать.

ChatGPT отвечает:

Добро пожаловать в виртуальную лабораторию по созданию роботов при университете! Здесь у вас есть возможность проектировать роботов, проводить тестирования, программировать поведение и работать в команде над инженерными задачами.

Я продолжаю разговор:

Можем ли мы вместе спроектировать робота?

ChatGPT:

Конечно! Для начала нам нужно определить его назначение и функции, затем придумать концепцию, выбрать компоненты, собрать и протестировать.

Я уточняю:

Отлично! Можешь провести меня через каждый этап по порядку?

И далее модель помогает мне шаг за шагом разрабатывать робота.

Предположим, я хочу создать робота, который умеет следовать по линии на полу. ChatGPT задаёт уточняющие вопросы:

Какова цель робота, с какой скоростью он должен двигаться, какие сенсоры использовать?

Я могу ответить:

Я не уверен. Выбери параметры за меня.

ChatGPT предлагает разумные параметры:

Назначение: образовательный робот

Скорость: 10–15 см/с

Сенсоры: инфракрасные

После этого я прошу ChatGPT рассказать, какие шаги мне предпринять дальше. Он говорит, что следующий этап – мозговой штурм и создание 3D-модели робота.

На этом этапе я могу столкнуться с препятствием: как создать 3D-модель через текстовый чат? Я спрашиваю:

Как мы можем это сделать через текст?

ChatGPT предлагает:

Вы можете использовать сторонние редакторы 3D-моделей, такие как Tinkercad или Sketchpad. Я могу помочь с концепцией и описанием деталей.

Но мне это кажется сложным. Тогда я ищу обходной путь:

Можешь сгенерировать G-code для печати четырёх колёс?

ChatGPT создаёт G-code, но он выглядит странно. Я уточняю:

Где в коде формируется форма колеса?

ChatGPT признаёт ошибку:

Извините, в моём примере нет формы колеса. Я могу предоставить Python-скрипт для генерации STL-файла.

Я спрашиваю:

Можешь написать код на Python, который создаст STL-файл с четырьмя четырёхдюймовыми колёсами и отверстием в центре?

ChatGPT создаёт такой код, и он выглядит правдоподобно.

Теперь я спрашиваю про электронные компоненты для робота. ChatGPT предлагает:

Микроконтроллер (например, Arduino)

Драйвер моторов

Линейные инфракрасные сенсоры

Я хочу видеть схему подключения, но ChatGPT не может нарисовать изображение. Тогда я спрашиваю:

Можешь создать текстовый файл для Graphviz, чтобы визуализировать схему?

ChatGPT генерирует такой файл, который можно использовать для отображения схемы.

Дальше я продолжаю процесс: уточняю компоненты, прошу сгенерировать код для управления роботом, получаю рекомендации по программированию Arduino.

В конце я прошу ChatGPT подвести итоги:

Суммируй, что мы сделали.

Он перечисляет ключевые моменты.

Затем я добавляю:

Теперь задай мне вопросы по электронике, чтобы проверить мои знания.

ChatGPT генерирует викторину, которая помогает мне проверить, насколько я усвоил материал.

Этот процесс показывает, насколько важно не просто задавать вопросы, а вести диалог, уточнять, задавать дополнительные вопросы, преодолевать препятствия и находить обходные пути. Если бы я остановился после первого неудачного ответа, я бы не смог достичь своей цели.

Поэтому нужно думать не о том, что языковая модель – это просто инструмент, который выдаёт единичные ответы, а о том, что это мощный инструмент для поэтапного уточнения и решения сложных задач. Точно так же, как мастер-гончар создаёт из бесформенной глины утончённую вазу не одним движением, а множеством уточняющих действий, мы можем добиваться отличных результатов, ведя содержательные разговоры с большой языковой моделью.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Вы ознакомились с фрагментом книги.

Для бесплатного чтения открыта только часть текста.

Приобретайте полный текст книги у нашего партнера:


Полная версия книги

Всего 10 форматов

bannerbanner