Примеры промптов
Предыдущий раздел представил базовый пример того, как использовать промпты с LLM.
В этом разделе мы предоставим больше примеров того, как использовать промпты для решения различных задач и представим ключевые концепции на конкретных примерах. Часто лучший способ освоить концепции - это пройти через примеры. Несколько примеров ниже наглядно покажут, как вы можете использовать хорошо разработанные промпты для решения разнообразных задач. Темы:
Сжатие текста
Извлечение информации
Вопросно-ответные системы (QA)
Классификация текста
Диалог
Генерация кода
Рассуждение
Сжатие текста
Одной из стандартных задач в области генерации естественного языка является задача сжатия текста. Сжатие текста может иметь много разнообразных вариантов и применений. Фактически, одним из наиболее перспективных направлений использования языковых моделей является возможность сжатия статей и концепций в краткие и легко читаемые резюме. Давайте рассмотрим базовый пример задачи сжатия текста с помощью промптов.
Предположим, вы хотите получить информацию об антибиотиках, и вы можете воспользоваться следующим промптом:
Промпт:
Результат:
Антибиотики – это тип лекарств, применяемых для лечения бактериальных инфекций. Они действуют путем уничтожения бактерий или предотвращения их размножения, что позволяет иммунной системе организма справиться с инфекцией. Антибиотики обычно принимаются внутрь в виде таблеток, капсул или жидких растворов, иногда их также вводят внутривенно. Они не действуют против вирусных инфекций, и неправильное использование может привести к развитию устойчивости к антибиотикам.
В разделе "A:" мы предоставляем промпт для ответа, который используется в вопросно-ответной форме (QA). В данном примере это было сделано для указания модели на ожидаемое продолжение. Возможно, данная конструкция пока не слишком полезна, но мы вернемся к этому в дальнейшем. Предположим, что данное объяснение слишком длинное, и вы хотите сжать его еще сильнее. На самом деле, можно попросить модель сжать это в одно предложение, например:
Промпт:
Результат:
Антибиотики — это лекарства, используемые для лечения бактериальных инфекций путем уничтожения бактерий или остановки их размножения, но они не эффективны против вирусов, и чрезмерное использование может привести к устойчивости к антибиотикам.
Не придавая чрезмерного значения точности вывода выше, о которой мы обсудим позже, модель попыталась сжать данный параграф в одно предложение. Для улучшения результатов рекомендуется провести эксперименты с формулировкой инструкций.
Извлечение информации
Несмотря на то что языковые модели обучаются генерации естественного языка и связанным задачам, они также способны выполнять классификацию и другие задачи обработки естественного языка (NLP).
NLP (Natural Language Processing - Обработка естественного языка) - это область компьютерных наук и искусственного интеллекта, занимающаяся разработкой методов и моделей для взаимодействия компьютеров с естественными языками, такими как речь и текст.
Вот пример промпта, извлекающего информацию из заданного параграфа.
Промпт:
Результат:
Упомянутый в вышеуказанном абзаце продукт на основе большой языковой модели (LLM) - это ChatGPT.
Существует множество способов улучшить вышеуказанные результаты, но это уже является весьма полезным.
В настоящее время очевидно, что можно попросить модель выполнять разнообразные задачи, просто предоставив ей команды и инструкции. Эта мощная возможность уже активно используется разработчиками продуктов и искусственного интеллекта для экспериментов и создания полезных приложений.
Источник параграфа: ChatGPT: five priorities for research
Вопросно-ответные системы (Q&A)
QA (англ. Question and Answer) переводится на русский как "Вопрос и ответ".
Вопросно-ответные системы (QA) - это методология, которая позволяет пользователю задавать вопросы на естественном языке, а затем получать соответствующие ответы от компьютерной программы или искусственного интеллекта. Этот подход широко используется для автоматизации поиска информации и обмена знаний с помощью компьютерных систем.
Для получения более точных ответов от модели, следует улучшить формат промпта. Как уже рассмотрено выше, промпт может объединять инструкции, контекст, входные данные и индикаторы вывода, что позволяет достичь более высоких результатов. Хотя использование всех этих компонентов не обязательно, это хорошая практика, поскольку более конкретные инструкции способствуют более точным ответам. В примере ниже показано, как это может быть реализовано с помощью более структурированного промпта.
Промпт:
Результат:
Из мышей.
Контекст получен из Nature.
Классификация текста
До сих пор вы использовали простые инструкции для выполнения задачи. Вашей задачей как промпт-инженера является совершенствование способа предоставления более точных инструкций. Однако этого может быть недостаточно для более сложных случаев. В таких ситуациях важно также учитывать контекст и использовать разные элементы в промпте. Другие элементы, которые вы можете предоставить, это входные данные
или примеры
.
Давайте попробуем продемонстрировать это на примере классификации текста.
Промпт:
Результат:
Нейтральный
Вы предложили модель классифицировать текст и она ответила "Нейтральный", что является правильным ответом. Это хорошо, но предположим, что вам важно, чтобы модель отвечала в точном формате, как вы ей задали команду, то есть вместо "Нейтральный" вы хотите, чтобы она ответила "нейтральный" с маленькой буквы. Как этого добиться? Существует несколько способов. Важно быть конкретным, поэтому чем больше информации вы предоставите в промпте, тем лучше будут результаты. Вы можете использовать примеры, чтобы показать правильное поведение. Давайте попробуем снова:
Промпт:
Результат:
нейтральный
Отлично! На этот раз модель ответила "нейтральный", что является точной формулировкой, которую мы задали. Кажется, что пример, предоставленный в промпте, помог модели быть более конкретной в ответе.
Чтобы показать, почему иногда важна конкретность, посмотрите на следующий пример и найдите проблему:
Промпт:
Результат:
Нейтральный
В чем проблема? В данной ситуации проблема заключается в том, что модель игнорирует ключевое слово "нейтральный" из промпта и вместо этого выводит ответ "Нейтральный" с заглавной буквы. То есть, модель не распознает желаемое ключевое слово или настроение, которое указано в промпте, и возвращает вариант ответа, который отличается от ожидаемого формата. Как исправить это? Возможно, вы можете попробовать добавить описания или добавить больше примеров в промпт? Если вы не уверены, мы обсудим несколько идей в следующих разделах.
Диалог
Одним из наиболее увлекательных применений промпт-инжиниринга является указание LLM-системе того, как себя вести, какой должна быть её цель и какой характер ей следует иметь. Это особенно полезно в ситуациях, когда вы создаёте системы для диалога, например, чат-ботов для обслуживания клиентов.
Допустим, давайте разработаем систему диалога, способную формулировать более технические и научные ответы на вопросы. Заметьте, как вы конкретно описываете желаемое поведение системы через инструкции. Это иногда называется ролевым промптингом.
Промпт:
Результат:
Конечно! Черные дыры представляют собой участки пространство-времени, в которых гравитационная сила настолько сильна, что ничто, даже свет, не может избежать её. Они образуются, когда очень массивная звезда умирает, и её ядро коллапсирует, образуя сингулярность бесконечной плотности. Интенсивная гравитация сингулярности притягивает всю материю и излучение вокруг себя, создавая черную дыру.
Наши исследовательский помощник звучит слишком технически, верно? Хорошо, давайте изменить это поведение и обучим систему предоставлять более понятные ответы.
Промпт:
Результат:
Конечно! Черные дыры появляются, когда очень большая звезда исчерпывает свои запасы топлива и начинает сжиматься. Гравитация этой звезды настолько сильна, что ничто, даже свет, не может выбраться из её объятий. Это создаёт особую точку в пространстве и времени с огромной гравитационной силой, которую называют черной дырой.
Вы добились определенного прогресса. Продолжайте работать над улучшением. Добавив больше примеров, вы сможете достичь еще более впечатляющих результатов.
Генерация кода
Один из эффективных способов применения LLM (Большой Языковой Модели) - это создание программного кода. Copilot - превосходный пример такого применения. С помощью внимательно разработанных подсказок можно успешно выполнить множество задач по написанию кода. Давайте рассмотрим несколько примеров далее.
Copilot - это инновационный инструмент для генерации программного кода, разработанный компанией GitHub, которая в настоящее время принадлежит Microsoft. Этот инструмент использует современные языковые модели, включая технологии искусственного интеллекта, чтобы помогать разработчикам писать код более быстро и эффективно.
Давайте сначала напишем простую программу, которая будет приветствовать пользователя.
Промпт:
Результат:
let name = prompt("What is your name?");
console.log(Hello, ${name}!
);
Обратите внимание, что вам даже не нужно указывать язык программирования.
Давайте немного повысим уровень. Приведенный ниже пример показывает, насколько мощными могут быть LLMs с небольшими усилиями в разработке промптов.
Промпт:
Результат:
SELECT StudentId, StudentName FROM students WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = 'Computer Science');
Это очень впечатляюще. В этом примере вы предоставили данные о схеме базы данных и попросили его сгенерировать корректный запрос MySQL.
MySQL - это система управления реляционными базами данных (СУБД), которая предоставляет мощные инструменты для хранения, организации и манипулирования данными. Она позволяет пользователям создавать и управлять базами данных, таблицами, индексами и запросами, обеспечивая эффективное хранение и извлечение информации.
Рассуждение
Возможно, одной из наиболее сложных задач для больших языковых моделей (LLM) на сегодняшний день является способность к рассуждению. Рассуждение представляет собой одну из наиболее интересных областей из-за типов сложных сценариев, которые могут возникнуть из таких моделей.
Были достигнуты определенные успехи в задачах, требующих математических навыков. Тем не менее, стоит отметить, что современные большие языковые модели все еще испытывают затруднения с выполнением задач рассуждения, поэтому для этого требуются еще более совершенные техники промпт-инженерии. Мы рассмотрим эти продвинутые методы позже. А пока давайте рассмотрим несколько простых примеров, чтобы продемонстрировать математические возможности.
Промпт:
Результат:
Умножение 9 000 на 9 000 равно 81 000 000 (восемьдесят один миллион).
Давайте рассмотрим более сложную задачу.
Промпт:
Результат:
Нет, нечетные числа в этой группе дают в сумме нечетное число: 119.
Ответ неправильный! Попробуем улучшить промпт.
Промпт:
Результат:
Нечетные числа: 15, 5, 13, 7, 1 Сумма: 41 41 - нечетное число.
Гораздо лучше, не так ли? Кстати, я пробовал это несколько раз, и система иногда ошибается. Если вы предоставите более точные инструкции вместе с примерами, это может помочь получить лучшие результаты.
В следующем разделе мы рассмотрим более сложные концепции и методы промпт-инженерии для повышения результатов при решении данных и более сложных задач.
Last updated