Промпт инжиниринг в ChatGPT

В данном разделе мы освещаем последние методы инженерии для ChatGPT, включая рекомендации, применение, ограничения, научные статьи и дополнительные материалы для чтения.

⚠️

Данный раздел находится в активной стадии разработки.

Темы:


Введение в ChatGPT

ChatGPT - это новая модель обученная OpenAI (opens in a new tab), обладающая способностью вести беседу. Эта модель обучена следовать инструкциям в запросе, чтобы предоставлять соответствующие ответы в контексте диалога. ChatGPT может помочь в ответах на вопросы, предлагать рецепты, писать тексты в определенном стиле, генерировать код и многое другое.

ChatGPT обучается с помощью обратной связи с подкреплением от людей (RLHF). Несмотря на то, что эта модель гораздо более мощная, чем предыдущие итерации GPT (и также обучена с целью снизить вредные и неправдивые результаты), у нее всё же есть свои ограничения. Давайте рассмотрим некоторые возможности и ограничения на конкретных примерах.

Вы можете использовать пользовательскую версию ChatGPT здесь, но для приведенных ниже примеров мы будем использовать режим Chat на OpenAI Playground.


Обзор задачи диалогов

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

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

Промпт:

The following is a conversation with an AI research assistant. The assistant tone is technical and scientific.

Human: Hello, who are you?
AI: Greeting! I am an AI research assistant. How can I help you today?
Human: Can you tell me about the creation of black holes?
AI:

Из приведенного примера видно две важные составляющие:

  • намерение или объяснение того, что представляет собой чат-бот
  • идентичность, которая определяет стиль или тональность, с которой чат-бот будет отвечать

Простой пример выше хорошо работает с использованием API для заполнения текста, использующего text-davinci-003. Недавно OpenAI анонсировала API ChatGPT (opens in a new tab), который представляет собой более мощную и экономичную модель gpt-3.5-turbo, специально созданную для такого типа функциональности (завершения диалогов). Фактически, OpenAI рекомендует ее как свою лучшую модель даже для случаев использования, не связанных с чатом. Другие преимущества использования API ChatGPT - значительное снижение стоимости (на 90%) и повышение эффективности.

Крупные компании, такие как Snap Inc. и Instacart, уже интегрируют возможности диалога, основанные на ChatGPT, в свои продукты, от персонализированных рекомендаций до открытых целей покупок.


Диалоги с ChatGPT

Диалоги с несколькими ходами

Чтобы продемонстрировать возможности ChatGPT, мы воспользуемся примером беседы с ассистентом-чатботом, приведенным выше, и обсудим результаты. В отличие от text-davinci-003, модель gpt-3.5-turbo, на которой работает ChatGPT, использует формат диалога в качестве входных данных. Модель ожидает серию сообщений на входе и использует их для генерации ответа.

Входные данные:

SYSTEM: You are an AI research assistant. You use a tone that is technical and scientific.
USER: Hello, who are you?
ASSISTANT: Greeting! I am an AI research assistant. How can I help you today?
USER: Can you tell me about the creation of black holes?

Результат:

ASSISTANT: Of course! Black holes are created when a massive star runs out of fuel and collapses under its own gravity. This collapse causes the star to become incredibly dense, with a gravitational field so strong that not even light can escape it. This point of no return is known as the event horizon. Once a star crosses the event horizon, it is considered a black hole...

Обратите внимание, что в приведенном выше примере я упростил входные и выходные данные, но для API завершения диалогов ChatGPT требуется, чтобы сообщения были в определенном формате. Я добавил ниже скриншот того, как будет выглядеть этот пример при использовании режима Chat на OpenAI Playground:

CHATGPT1

Более формальный вызов API для нашего примера будет выглядеть примерно следующим образом:

import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are an AI research assistant. You use a tone that is technical and scientific."},
        {"role": "user", "content": "Hello, who are you?"},
        {"role": "assistant", "content": "Greeting! I am an AI research assistant. How can I help you today?"},
        {"role": "user", "content": "Can you tell me about the creation of black holes?"}
    ]
)

Фактически, взаимодействие разработчиков с ChatGPT в будущем планируется осуществлять с помощью языка разметки диалогов (opens in a new tab) (ChatML в кратком виде).

Задачи с одним ходом

Формат диалога позволяет вести многоходовые беседы, но также поддерживает задачи с одним ходом, подобно тому, что мы использовали с text-davinci-003. Это означает, что мы можем использовать ChatGPT для выполнения аналогичных задач, как мы продемонстрировали с исходными моделями GPT. Например, попробуем выполнить следующую задачу по ответу на вопрос с использованием ChatGPT:

Входные данные:

USER: Answer the question based on the context below. Keep the answer short and concise. Respond "Unsure about answer" if not sure about the answer.

Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.

Question: What was OKT3 originally sourced from?

Answer:

Результат:

ASSISTANT: Mice.

Имейте в виду, что я добавил метки USER и ASSISTANT, чтобы лучше продемонстрировать, как можно выполнить задачу с использованием ChatGPT. Вот пример с использованием Playground:

CHATGPTCLASSIC

Более формально, вот вызов API (я включил только компонент сообщения в запрос):

CONTENT = """Answer the question based on the context below. Keep the answer short and concise. Respond \"Unsure about answer\" if not sure about the answer.
 
Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.
 
Question: What was OKT3 originally sourced from?
 
Answer:
"""
 
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Инструкции для моделей Chat

Согласно официальной документации OpenAI, снимки модели gpt-3.5-turbo также будут доступны. Например, мы можем получить снимок от 1 марта gpt-3.5-turbo-0301. Это позволяет разработчикам выбирать определенные версии модели. Это также означает, что рекомендации по инструктированию моделей могут меняться от версии к версии.

Текущая рекомендация для gpt-3.5-turbo-0301 состоит в добавлении инструкций в сообщение от пользователя (user), в отличие от доступного сообщения от системы (system).


Ссылки