Перейти к основному содержимому

Как работать с большими языковыми моделями

Как работают большие языковые модели

Большие языковые модели — это функции, которые отображают текст в текст. Получая на вход строку текста, большая языковая модель предсказывает, какой текст должен идти далее.

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

  • как правильно писать
  • как работает грамматика
  • как перефразировать
  • как отвечать на вопросы
  • как вести диалог
  • как писать на многих языках
  • как программировать
  • и так далее.

Они делают это, «читая» большое количество существующего текста и изучая, как слова обычно появляются в контексте других слов, используя полученные знания для предсказания следующего наиболее вероятного слова, которое может появиться в ответ на запрос пользователя, и каждого следующего слова после него.

GPT-3 и GPT-4 лежат в основе множества программных продуктов, включая приложения для повышения продуктивности, образовательные приложения, игры и многое другое.

Как управлять большой языковой моделью

Из всех входных данных для большой языковой модели самым влиятельным по-прежнему является текстовый запрос (промпт).

Большие языковые модели можно направлять на создание вывода несколькими способами:

  • Инструкция: Скажите модели, чего вы хотите
  • Дополнение: Побудите модель дополнить начало того, что вы хотите
  • Сценарий: Задайте модели ситуацию для разыгрывания
  • Демонстрация: Покажите модели, чего вы хотите, с помощью:
    • Нескольких примеров в промпте
    • Сотен или тысяч примеров в обучающем наборе для тонкой настройки

Пример каждого способа показан ниже.

Инструкционные промпты

Пишите инструкцию в начале промпта (или в конце, или и там, и там), и модель сделает всё возможное, чтобы следовать инструкции и затем остановиться. Инструкции могут быть детальными, так что не бойтесь писать абзац с явным описанием желаемого вывода, просто учитывайте, сколько токенов модель может обработать.

Пример инструкционного промпта:

<<<FENCE_0>>>

Вывод:

<<<FENCE_1>>>

Пример промпта дополнения

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

Пример промпта дополнения:

<<<FENCE_2>>>

Вывод:

<<<FENCE_3>>>

Пример промпта сценария

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

Пример промпта сценария:

<<<FENCE_4>>>

Вывод:

<<<FENCE_5>>>

Пример демонстрационного промпта (обучение с несколькими примерами)

Похожий на промпты дополнения, демонстрации показывают модели, чего вы хотите от неё. Этот подход иногда называют обучением с несколькими примерами (few-shot learning), так как модель учится на нескольких примерах, приведённых в самом промпте.

Пример демонстрационного промпта:

<<<FENCE_6>>>

Вывод:

<<<FENCE_7>>>

Пример промпта с тонкой настройкой

При достаточном количестве обучающих примеров вы можете тонко настроить собственную модель. В этом случае инструкции становятся ненужными, так как модель учится выполнять задачу на основе предоставленных данных. Однако полезно использовать разделяющие последовательности (например, ->, ### или любую строку, которая редко встречается в ваших данных), чтобы показать модели, где заканчивается промпт и начинается ответ. Без таких разделителей модель может продолжать развивать входной текст, а не начать желаемый ответ.

Пример промпта с тонкой настройкой (для модели, обученной на похожих парах промпт-ответ):

<<<FENCE_8>>>

Вывод:

<<<FENCE_9>>>

Возможности работы с кодом

Большие языковые модели хороши не только с текстом — они отлично справляются и с кодом. Модель GPT-4 от OpenAI — отличный пример.

GPT-4 лежит в основе множества инновационных продуктов, включая:

  • GitHub Copilot (автодополнение кода в Visual Studio и других IDE)
  • Replit (может дописывать, объяснять, редактировать и генерировать код)
  • Cursor (позволяет быстрее создавать программное обеспечение с редактором, созданным для совместного программирования с ИИ)

GPT-4 более продвинут по сравнению с предыдущими моделями, такими как gpt-3.5-turbo-instruct. Но чтобы максимально эффективно использовать GPT-4 для задач программирования, по-прежнему важно давать чёткие и конкретные инструкции. Поэтому разработка хороших промптов требует внимания.

Дополнительные советы по промптам

Для большего количества примеров промптов посетите OpenAI Examples.

В целом входной промпт — лучший рычаг для улучшения вывода модели. Вы можете попробовать такие приёмы, как:

  • Будьте точнее Например, если вы хотите, чтобы вывод был списком, разделённым запятыми, скажите, что хотите получить именно такой список. Если хотите, чтобы модель говорила «Я не знаю», когда у неё нет ответа, скажите: «Говори «Я не знаю», если не знаешь ответа». Чем точнее ваши инструкции, тем лучше модель ответит.
  • Предоставляйте контекст Помогите модели понять общий смысл вашего запроса. Это может быть фон, примеры того, что вы хотите, или объяснение цели задачи.
  • Попросите модель отвечать как эксперт. Явное указание модели выдавать высокий уровень качества или отвечать так, как если бы ответ подготовил эксперт, может подтолкнуть её к более качественным ответам. Фразы вроде «Объясни подробно» или «Опиши пошагово» часто работают хорошо.
  • Попросите модель записывать шаги с объяснением рассуждений. Если важно понять «почему» в ответе, попросите модель включить своё обоснование. Это можно сделать, просто добавив строчку вроде «Давайте думать шаг за шагом» перед каждым ответом.