LLMs Prompting
Оглавление
Ограничения
Галицинирование - модель придумывает какой-то вывод на основе не существующих вещей. Чтобы это уменьшить, можно попросить модель сначала вспомнить релевантную информацию по теме, а потом только давать ответ, учитывая эту информацию.
Принцип 1 - писать четкий и специфичный промпт
1. Использовать разделители при указании на то, что требуется обработать, дабы нейронка четко понимала, куда смотреть - ```, """, < >, <tag> </tag>, etc.:
2. Просить дать вывод в определенном формате/виде:
3. Просить модель проверить ввод, дав какие-то условия четкие, что выводить в каком случае:
4. Дать пример выполненной задачи, чтобы ИИ понял, какой результат от него ждут
Принцип 2 - дай модели время подумать
Если задача комплексная, то полезно использовать данные тактики:
1. Укажи четкие шаги по выполнению задачи
- укажи, что надо сделать
- укажи, возможно, как это сделать надо
- дай пример выполненной задачи
- укажи формат вывода
2. Попроси модель сначала саму выполнить задачу до момента, пока она не сделала какое-то заключение, если ты хочешь проверить чье-то решение, а потом сравнить данное с решением модели
Пример немного хреновый, но так можно комплексные задачи вполне успешно решать на разные расчеты.
Итеративное написание промпта
- Опробуй какой-то промпт
- Проанализируй, где результат дает тебе не то, что требуется
- Сделай промпт более точным, дай модели время подумать
- Добавь несколько примеров результата
Например: дать вывод в 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) самые лучшие ответы.
Опишите проблему для ChatGPT, а в конце нее добавьте:
Let's work this out in a step by step way to be sure we have the right answer.
Этот промпт сам по себе уже можно применять к чему угодно – он все ответы делает лучше, но если вы обсуждаете с ChatGPT какие-то сложные темы (или где есть вычисления), то чтобы выявить ошибки в ее ответах используйте следующий шаг (продолжая чат с ней, не создавая новый).
Модель дала вам ответы, и теперь хочется не самому сидеть гуглить насколько они верные. Для этого используйте следующий промпт, но вместо % укажите что именно вы получили на прошлом шаге – список, формулы, анекдоты и тп.
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. Получается анализ, как правило, намного глубже чем если я просто попросил бы найти ошибки в ответе.
Полученную критику нужно как-то применить, это еще один "внутренний персонаж нейронки" который закроет задачу и применит правки полученные на прошлом шаге, но их нужно указать вместо % – это могут быть формулы, вычисления, списки и тп.
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: