Предыдущая часть: Перевод руководства Google по промпт инжинирингу. Часть 4. Техники написания промптов: Промптинг с шагом назад, Цепочка рассуждений (CoT), Самосогласованность
Следующая часть: Перевод руководства Google по промпт инжинирингу. Часть 6. Техники написания промптов: Промптинга для генерации кода
Перевод руководства Google по промпт инжинирингу (Prompt engineering). Оригинал доступен по ссылке. https://www.kaggle.com/whitepaper-prompt-engineering
Перевод сделан с применением AI.
ReAct (Размышляй и действуй)
«Размышляй и действуй» (ReAct) — это парадигма, позволяющая большим языковым моделям решать сложные задачи с помощью рассуждений на естественном языке в сочетании с внешними инструментами (поиск, интерпретатор кода и т. д.), что позволяет большой языковой модели выполнять определённые действия, например взаимодействовать с внешними API для получения информации, что является первым шагом к моделированию агентов.
ReAct имитирует то, как люди действуют в реальном мире, поскольку мы рассуждаем устно и можем предпринимать действия для получения информации. ReAct хорошо работает в сравнении с другими подходами к разработке промптов в различных областях.
ReAct промптинг работает, объединяя рассуждения и действия в цикл «мысль-действие». Сначала LLM рассуждает о проблеме и генерирует план действий. Затем она выполняет действия по плану и наблюдает за результатами. После этого LLM использует наблюдения, чтобы обновить свои рассуждения и сгенерировать новый план действий. Этот процесс продолжается до тех пор, пока LLM не найдёт решения проблемы.
Чтобы увидеть это в действии, вам нужно написать код. Во фрагменте кода 1 я использую фреймворк LangChain для Python вместе с VertexAI (google-cloud-aiplatform) и пакетами google-search-results.
Чтобы запустить этот пример, вам нужно создать (бесплатный) ключ SerpAPI на сайте https://serpapi.com/manageapi-key и задать переменную среды SERPAPI_API_KEY.
Далее давайте напишем код на Python, чтобы LLM могла понять: Сколько детей у знаменитого отца, который выступает в группе Metallica.
Фрагмент кода 2 показывает результат. Обратите внимание, что ReAct выполняет цепочку из пяти поисковых запросов. По сути, LLM анализирует результаты поиска в Google, чтобы определить названия групп. Затем он перечисляет результаты в качестве наблюдений и продолжает поиск.
Фрагмент кода 2 показывает, что в группе Metallica четыре участника. Затем он запрашивает у каждого участника группы общее количество детей и суммирует их. Наконец, он возвращает общее количество детей в качестве окончательного ответа.
> Entering new AgentExecutor chain...
Metallica has 4 members.
Action: Search
Action Input: How many kids does James Hetfield have?
Observation: three children
Thought: 1/4 Metallica band members have 3 children
Action: Search
Action Input: How many kids does Lars Ulrich have?
Observation: 3
Thought: 2/4 Metallica band members have 6 children
Action: Search
Action Input: How many kids does Kirk Hammett have?
Observation: Hammett has been married to his second wife Lani since 1998. They have two sons, Angel (b. September 29, 2006) and Vincenzo (b. June 28, 2008).
Thought: 3/4 Metallica band members have 8 children
Action: Search
Action Input: How many kids does Robert Trujillo have?
Observation: 2
Thought: 4/4 Metallica band members have 10 children
Final Answer: 10
На практике для использования ReAct необходимо понимать, что вам постоянно нужно отправлять предыдущие запросы/ответы (и удалять дополнительный сгенерированный контент), а также настраивать модель с помощью соответствующих примеров/инструкций. Ознакомьтесь с блокнотом (https://github.com/GoogleCloudPlatform/specialized-training-content/blob/010924387a61e217a2c3d2cac3b79d00ff6c5327/courses/generative_ai/app_dev_llm/cot_react.ipynb), размещенным в репозитории GoogleCloudPlatform на GitHub, в котором более подробно показаны входные и выходные данные LLM на более сложном примере.
Автоматический промпт инжиниринг
На этом этапе вы можете понять, что написание промптов может быть сложным. Не было бы здорово автоматизировать этот процесс (написать промпт для написания промптов)? Что ж, есть способ: автоматическая разработка промптов (APE). Этот метод не только снижает потребность в участии человека, но и повышает эффективность модели при выполнении различных задач.
Вы будете предлагать модели генерировать больше промптов. Оценивайте их, возможно, изменяйте хорошие. И повторяйте.
Например, вы можете использовать автоматическую разработку промптов, которая поможет обучить чат-бота для интернет-магазина футболок. Мы хотим выяснить, как клиенты могут сформулировать свой заказ на покупку футболки с логотипом группы.
1. Напишите промпт, который будет генерировать варианты вывода. В этом примере я использую gemini-pro для создания 10 инструкций. См. таблицу 15:
2. Оцените всех кандидатов на обучение, оценив кандидатов на основе выбранного показателя, который, например, вы можете использовать. BLEU (Двуязычный оценочный дублер) или ROUGE (ориентированный на запоминание дублер для предварительной оценки).
3. Выберите инструкцию-кандидата, набравшую наибольшее количество баллов. Этот кандидат будет последним промптом, который вы сможете использовать в своем программном приложении или чат-боте. Вы также можете настроить промпт выбора и оценить его повторно.
Все части перевода руководства Google по промпт инжинирингу
Перевод руководства Google по промпт инжинирингу. Часть 1. Конфигурация вывода LLM
Перевод руководства Google по промпт инжинирингу. Часть 7. Лучшие практики для написания промптов, 1
Перевод руководства Google по промпт инжинирингу. Часть 8. Лучшие практики для написания промптов, 2
Перевод руководства Google по промпт инжинирингу. Часть 9. Лучшие практики для написания промптов, 3
Перевод руководства Google по промпт инжинирингу. Часть 10. Резюме и полезные ссылки