llm
June 24, 2023

LLMs Prompting

Оглавление

Ограничения

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

Принцип 1 - писать четкий и специфичный промпт

Тактики

1. Использовать разделители при указании на то, что требуется обработать, дабы нейронка четко понимала, куда смотреть - ```, """, < >, <tag> </tag>, etc.:

2. Просить дать вывод в определенном формате/виде:

3. Просить модель проверить ввод, дав какие-то условия четкие, что выводить в каком случае:

4. Дать пример выполненной задачи, чтобы ИИ понял, какой результат от него ждут

Принцип 2 - дай модели время подумать

Если задача комплексная, то полезно использовать данные тактики:

1. Укажи четкие шаги по выполнению задачи

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

2. Попроси модель сначала саму выполнить задачу до момента, пока она не сделала какое-то заключение, если ты хочешь проверить чье-то решение, а потом сравнить данное с решением модели

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

Итеративное написание промпта

  1. Опробуй какой-то промпт
  2. Проанализируй, где результат дает тебе не то, что требуется
  3. Сделай промпт более точным, дай модели время подумать
  4. Добавь несколько примеров результата

Например: дать вывод в 50 слов, или сделать таблицу на основе каких-то данных.

Суммаризация (резюмирование)

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

1. Можно указать специфичные детали - сфокусируйся на таком-то аспекте текста

2. Можно указывать от лица кого проходит резюмирование - резюмируй текст от лица какого-то человека

3. Можно попросить вычленить ключевые детали текста - extract relevant information from text.

Создание вывода

Общее настроение

Можно запросить общее отношение в тексте к чему-то. Например, спросить, какое общее чувство в тексте - негативное или позитивное.

Определить тип эмоций

Спросить про эмоции, которые присутствуют в тексте или спросить присутствует ли конкретная эмоция, например, недовольство.

Вычленить из текста какие-то данные

Попросить вытащить из текста какие-то данные, например, из ревью лампы взять модель и производителя, и выдать их в формате JSON.

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

Определение тем в тексте

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

Определение, присутствуют ли в тексте темы из списка

Задать изначальный список тем, на наличие которых мы хотим проверить текст, вывести его в формате, например, {тема}: 0 | 1.

Трансформации

Перевод

Из одного языка в другой.

Определение языка.

Перевод в несколько языков сразу.

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

Трансформация тона сообщения

Преобразование из неформального тона в формальный и наоборот.

Трансформация из одного формата в другой

Например, преобразование JSON в HTML и наоборот.

Проверка граматики, правописания и исправление стилистики текста

Модель может проверить текст на грамматические и синтаксические ошибки и исправить их.

Также можно попросить переписать текст в соответствии с какой-нибудь стилистикой или гайдлайном.

Расширение/создание текста

Например, написать ответное сообщение коллеге.

Написать историю на основе пары предложений.

Брейншторм идей на основе чего-либо другого.

API

Это раздел уже относится к использованию API OpenAI.

Использование температуры

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

Чат

Позволяет создавать диалог с моделью отдавая в контекст все предыдущие сообщения обозначая роли user/assistant/system.

Напоследок

Вот еще небольшая серия промптов, которые позволят свести к минимуму потенциальные ошибки и получить от GPT3.5, GPT4 (и возможно Bard) самые лучшие ответы.

🍌 Сообщение 1 🍌

Опишите проблему для ChatGPT, а в конце нее добавьте:

Let's work this out in a step by step way to be sure we have the right answer.

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

🍌 Сообщение 2 🍌

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

You are a researcher tasked with investigating the % response options provided. List the flaws and faulty logic of each answer option. Let's work this out in a step by step way to be sure we have all the errors:

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

🍌 Сообщение 3 🍌

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

You are a resolver tasked with 1) finding which of the % answer options the researcher thought was best 2) improving that answer, and 3) Printing the improved answer in full. Let's work this out in a step by step way to be sure we have the right answer:

Поздравляю, вы промпт-инженер!