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

Предыдущий раздел представил базовый пример того, как использовать промпты с LLM.

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

  • Сжатие текста

  • Извлечение информации

  • Вопросно-ответные системы (QA)

  • Классификация текста

  • Диалог

  • Генерация кода

  • Рассуждение

Сжатие текста


Одной из стандартных задач в области генерации естественного языка является задача сжатия текста. Сжатие текста может иметь много разнообразных вариантов и применений. Фактически, одним из наиболее перспективных направлений использования языковых моделей является возможность сжатия статей и концепций в краткие и легко читаемые резюме. Давайте рассмотрим базовый пример задачи сжатия текста с помощью промптов.

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

Промпт:

Объясни, что такое антибиотики A:

Результат:

В разделе "A:" мы предоставляем промпт для ответа, который используется в вопросно-ответной форме (QA). В данном примере это было сделано для указания модели на ожидаемое продолжение. Возможно, данная конструкция пока не слишком полезна, но мы вернемся к этому в дальнейшем. Предположим, что данное объяснение слишком длинное, и вы хотите сжать его еще сильнее. На самом деле, можно попросить модель сжать это в одно предложение, например:

Промпт:

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

Результат:

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

Извлечение информации


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

NLP (Natural Language Processing - Обработка естественного языка) - это область компьютерных наук и искусственного интеллекта, занимающаяся разработкой методов и моделей для взаимодействия компьютеров с естественными языками, такими как речь и текст.

Вот пример промпта, извлекающего информацию из заданного параграфа.

Промпт:

Утверждения о вкладе авторов и благодарности в научных статьях должны ясно и точно указывать, использовали ли авторы технологии искусственного интеллекта, такие как ChatGPT, при подготовке своей рукописи и анализе, и в какой степени. Также следует указать, какие модели больших языковых моделей (LLMs) были задействованы. Это поможет редакторам и рецензентам более детально анализировать рукописи на наличие потенциальных предвзятостей, неточностей и неправильной атрибуции источников. Точно так же научные журналы должны обеспечивать прозрачность в отношении использования LLMs, например, при отборе представленных рукописей. Укажи продукт на основе большой языковой модели, упомянутый в вышеприведенном абзаце:

Результат:

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

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

Источник параграфа: ChatGPT: five priorities for research

Вопросно-ответные системы (Q&A)


QA (англ. Question and Answer) переводится на русский как "Вопрос и ответ".

Вопросно-ответные системы (QA) - это методология, которая позволяет пользователю задавать вопросы на естественном языке, а затем получать соответствующие ответы от компьютерной программы или искусственного интеллекта. Этот подход широко используется для автоматизации поиска информации и обмена знаний с помощью компьютерных систем.

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

Промпт:

Ответьте на вопрос на основе указанного контекста. Дайте краткий и лаконичный ответ. Ответьте "Не уверен(а) в ответе", если не уверены в ответе. Контекст: Происхождение теплизумаба связано с фармацевтической компанией Ortho Pharmaceutical из Нью-Джерси. Там ученые создали раннюю версию антитела под названием OKT3. Изначально полученное из мышей, это молекула могла связываться с поверхностью Т-клеток и ограничивать их потенциал уничтожения клеток. В 1986 году оно было одобрено для помощи в предотвращении отторжения органов после трансплантации почек, став первым терапевтическим антителом, разрешенным для использования у человека. Вопрос: Изначально откуда был получен OKT3? Ответ:

Результат:

Контекст получен из Nature.

Классификация текста


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

Давайте попробуем продемонстрировать это на примере классификации текста.

Промпт:

Классифицируй текст как нейтральный, отрицательный или положительный. Текст: Я думаю, еда была нормальной. Отзыв:

Результат:

Вы предложили модель классифицировать текст и она ответила "Нейтральный", что является правильным ответом. Это хорошо, но предположим, что вам важно, чтобы модель отвечала в точном формате, как вы ей задали команду, то есть вместо "Нейтральный" вы хотите, чтобы она ответила "нейтральный" с маленькой буквы. Как этого добиться? Существует несколько способов. Важно быть конкретным, поэтому чем больше информации вы предоставите в промпте, тем лучше будут результаты. Вы можете использовать примеры, чтобы показать правильное поведение. Давайте попробуем снова:

Промпт:

Классифицировать текст как нейтральный, отрицательный или положительный. Текст: Я думаю, что отпуск - это нормально. Настроение: нейтральный Настроение:

Результат:

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

Чтобы показать, почему иногда важна конкретность, посмотрите на следующий пример и найдите проблему:

Промпт:

Классифицировать текст как нейтральный, отрицательный или положительный. Текст: Я думаю, что отпуск - это нормально. Настроение:

Результат:

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

Диалог


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

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

Промпт:

Ниже представлен диалог с искусственным интеллектом, который играет роль научного ассистента. Тон ассистента технический и научный. Человек: Здравствуйте, кто вы? ИИ: Приветствую! Я искусственный интеллект, и моя роль – научный помощник. Как я могу вам помочь сегодня? Человек: Можете рассказать мне о создании черных дыр? ИИ:

Результат:

Наши исследовательский помощник звучит слишком технически, верно? Хорошо, давайте изменить это поведение и обучим систему предоставлять более понятные ответы.

Промпт:

Ниже представлен диалог с искусственным интеллектом-исследователем. Ответы помощника должны быть понятны даже ученикам начальной школы. Человек: Привет, кто ты? ИИ: Приветствую! Я искусственный интеллект-исследователь. Как я могу помочь вам сегодня? Человек: Можешь рассказать мне о создании черных дыр? ИИ:

Результат:

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

Генерация кода


Один из эффективных способов применения LLM (Большой Языковой Модели) - это создание программного кода. Copilot - превосходный пример такого применения. С помощью внимательно разработанных подсказок можно успешно выполнить множество задач по написанию кода. Давайте рассмотрим несколько примеров далее.

Copilot - это инновационный инструмент для генерации программного кода, разработанный компанией GitHub, которая в настоящее время принадлежит Microsoft. Этот инструмент использует современные языковые модели, включая технологии искусственного интеллекта, чтобы помогать разработчикам писать код более быстро и эффективно.

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

Промпт:

/* Ask the user for their name and say "Hello" */

Результат:

Обратите внимание, что вам даже не нужно указывать язык программирования.

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

Промпт:

""" Table departments, columns = [DepartmentId, DepartmentName] Table students, columns = [DepartmentId, StudentId, StudentName] Create a MySQL query for all students in the Computer Science Department """

Результат:

Это очень впечатляюще. В этом примере вы предоставили данные о схеме базы данных и попросили его сгенерировать корректный запрос MySQL.

MySQL - это система управления реляционными базами данных (СУБД), которая предоставляет мощные инструменты для хранения, организации и манипулирования данными. Она позволяет пользователям создавать и управлять базами данных, таблицами, индексами и запросами, обеспечивая эффективное хранение и извлечение информации.

Рассуждение


Возможно, одной из наиболее сложных задач для больших языковых моделей (LLM) на сегодняшний день является способность к рассуждению. Рассуждение представляет собой одну из наиболее интересных областей из-за типов сложных сценариев, которые могут возникнуть из таких моделей.

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

Промпт:

Чему равно умножение 9 000 на 9 000?

Результат:

Давайте рассмотрим более сложную задачу.

Промпт:

Нечетные числа в этой группе дают в сумме четное число: 15, 32, 5, 13, 82, 7, 1. A:

Результат:

Ответ неправильный! Попробуем улучшить промпт.

Промпт:

Нечетные числа в этой группе дают в сумме четное число: 15, 32, 5, 13, 82, 7, 1. Реши задачу, разбив ее на этапы. Сначала определи нечетные числа, сложи их и укажи, какой результат получился - четный или нечетный.

Результат:

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

В следующем разделе мы рассмотрим более сложные концепции и методы промпт-инженерии для повышения результатов при решении данных и более сложных задач.

Last updated