Работа с завершением текста в Azure OpenAI
Модели GPT-35-Turbo и GPT-4 — это языковые модели, оптимизированные для диалоговых интерфейсов. Модели ведут себя не так, как старые модели GPT-3. Предыдущие модели были текстовыми и текстовыми, что означает, что они приняли строку запроса и вернули завершение для добавления в запрос, как вы только что узнали.
Однако модели GPT-35-Turbo и GPT-4 являются беседами и сообщениями. Модели ожидают входных данных в определенном формате расшифровки чата и возвращают завершение, представляющее сообщение, написанное моделью в чате.
GPT-35-Turbo и GPT-4 по-прежнему могут принимать и генерировать завершения текста, но где они светятся с чатом.
В Azure OpenAI есть два различных варианта взаимодействия с этими типами моделей:
- API завершения чата.
- API завершения с помощью языка разметки чата (ChatML).
API завершения чата — это новый выделенный API для взаимодействия с моделями GPT-35-Turbo и GPT-4, и мы будем использовать его, как мы идем здесь.
Общие сведения о ролях API завершения чата
OpenAI обучил модели GPT-35-Turbo и GPT-4 для принятия входных данных в виде беседы. Все входные или запросы, отправленные в модель, и каждый ответ, возвращенный моделью, добавляется в общую беседу в API завершения чата.
API завершения чата ссылается на входящие запросы и исходящие ответы в виде сообщений.
Модель принимает массив объектов сообщений с беседой, упорядоченной ролями. Существует три типа ролей: Система, пользователь и помощник.
Роль системы
Системная роль также называется системным сообщением в начале массива. Это сообщение содержит начальные инструкции для модели. Вы можете предоставить различные сведения в системной роли, в том числе:
- Краткое описание помощник
- Черты личности помощник
- Инструкции или правила, которые вы хотите выполнить помощник
- Данные или сведения, необходимые для модели, например соответствующие вопросы из часто задаваемых вопросов
Вы можете настроить системную роль для вашего варианта использования или просто включить основные инструкции. Системная роль или сообщение является необязательным, но рекомендуется по крайней мере включить базовый, чтобы получить лучшие результаты.
Роли пользователя и помощник
Беседа происходит между пользователем и помощник. Пользователь вводит запросы и взаимодействует с моделью. Ответы модели представлены системной ролью.
Сообщение, которое пользователь отправляет в модель, следует следовать рекомендациям по проектированию запросов, чтобы получить наиболее качественные ответы.
Примеры запроса сообщения
Ниже приведены несколько примеров различных стилей запросов, которые можно использовать с моделями GPT-35-Turbo и GPT-4. Примеры — это всего лишь отправная точка, и вы можете экспериментировать с различными запросами на настройку поведения.
Простой пример
Если модель GPT-35-Turbo будет вести себя аналогично chat.openai.com, можно использовать базовое системное сообщение, например "Помощник является большой языковой моделью, обученной OpenAI".
Теперь мы узнаем, как использовать пакет SDK для .NET API завершения чата в следующем уроке. Теперь мы будем придерживаться имен переменных в качестве примера.
string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";
Пример с инструкциями
Для некоторых сценариев может потребоваться предоставить дополнительные инструкции модели, чтобы определить охранники для того, что модель может сделать.
string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
""";
string userMessage = "When are my taxes due?";
Управление беседами
Модель не имеет памяти, поэтому она нуждается в обновленной расшифровки с каждым новым вопросом со всеми вопросами и ответами в противном случае она потеряет контекст.
Это означает, что вам потребуется отправить весь, обновленный диалог модели при каждом взаимодействии с ней, а затем ограничение маркера для каждой модели может быть легко достигнуто.
Ограничение gpt-35-turbo
маркера равно 4096 маркерам, а ограничения gpt-4
gpt-4-32k
маркера — 8192 и 32768 соответственно. В противном случае вы получите сообщение об ошибке.
Вы можете отслеживать количество маркеров и удалять самые старые сообщения из массива, отправленные в модель. Рекомендуется всегда сохранять системное сообщение и удалять только помощник или пользовательские сообщения. Однако с течением времени этот метод управления беседой может привести к снижению качества беседы, так как контекст предыдущих частей беседы теряется.
Кроме того, после достижения предела маркера можно предложить пользователю начать новую беседу.