Немного про Chain-of-Thoughts (Цепочку размышлений)

Главные проблемы БЯМ (Больших языковых моделей):

  • Решение сложных логических проблем (Поиск неявно заданной информации)

  • Безопасность (Противодействие взломам и этичность поведения)

  • Галлюцинации (Генерация новой информации, которая не соответствует действительности)

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

Введение

По первым проблемам OpenAI недавно нанесла удар с помощью новой модели. Новая модель использует технику Цепочку Размышлений Chain-of-Thoughts для решения задач.

Так выглядит диалог с ChatGPT o1-preview. Запрос пользователя запускает целую цепочку действий, в которой синтезируются данные моделью. Неизвестно все ли данные отображаются. В конце все размышления прячутся, а пользователь получает скомпонованный ответ.

Так выглядит диалог с ChatGPT o1-preview. Запрос пользователя запускает целую цепочку действий, в которой синтезируются данные моделью. Неизвестно все ли данные отображаются. В конце все размышления прячутся, а пользователь получает скомпонованный ответ.

При этом компания продолжает придерживаться принципа минималистичного интерфейса:

  • Пользователь вводит промпт

  • Модель внутри производит с ним ступенчатые действия

  • Пользователь получает суммированный ответ, что значительно снижает трудозатраты пользователя Все это сопровождается прикольной анимацией, в которой показаны этапы «размышлений» модели: это делает все более интуитивно понятным. На основе нескольких заявлений можно сделать определенные выводы:

  • Внутренний диалог будет скрыт от пользователя в дальнейшем

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

  • Модель не хочет быть полиглотом, возможно для оптимизации использования токенов или специализации датасета. Однако с русским языком она работает вполне прилично.

  • Модель пожирает огромное количество токенов в сравнении с существующими, да и цена кусается, не говоря уж об ограничении доступа по апи к ней

  • Модель лучше работает с прямыми и четкими инструкциями

Иногда время, которое может потребоваться для решения, может быть... долгим.

Иногда время, которое может потребоваться для решения, может быть… долгим.

Абстрактно выражаясь, модель содержит цикл, в котором прогоняются входные данные. На каждом этапе цикла они обогащаются синтетической информацией. Причем в двух этапах: на первом генерируется «некая» инструкция, на втором получается ответ модели. В модели существует некий механизм выхода из цикла. Вся или какая-то часть информации проводится через суммаризацию. Как именно, реализована это модель мне неизвестно, но логика процесса достаточно очевидна:

  1. Цикл может быть реализован как внутри модели, так и как внешний инструмент

  2. Инструкция может быть фиксированной, выбираемой или генерируемой моделью

  3. Ответ модели может генерироваться внутренней моделью или внешней

  4. Цикл может управляться как моделью, так и неким внешним инструментом

  5. Суммаризация может управляться как внутренней моделью, так и внешней

  6. Пять пунктов выше это неизвестные переменные, которые будут влиять на качество итогового ответа. Возникает вопрос: должны ли все пять пунктов будут синтезироваться моделью или нет? Если нет, то сколько лучше отдать на синтез? Должна ли на каком-то этапе добавляться несинтетическая информация или нет? Должен ли пользователь видеть процесс мышления или нет, или частично не должен?

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

Что такое Цепочка Размышлений?

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

Каким образом?

Давайте разберемся подробнее, что имеется ввиду.

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

Цепочка вопросов для создания цепочки размышления

Цепочка вопросов для создания цепочки размышления

Слева (A) представлена нумерация позиций сравнения к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. В первом случае, также был получен ответ. Однако цепочка позволяет получить более размеченный ответ.

Слева (A) представлена нумерация позиций сравнения к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. В первом случае, также был получен ответ. Однако цепочка позволяет получить более размеченный ответ.


От значительного куска информации отправленного одновременно, это отличается следующими пунктами:

  • Структурированностью: возникает структура вместо единого ответа.

  • Поэтапностью: появляются этапы взаимодействия, детализируя взаимодействие с БЯМ.

  • Интерактивностью: каждый этап может быть независимо изменен. То есть тем, что это тот самый диалог, который ведет пользователь, с любым чатом.

Пример цепочки сообщений:

  • Вот у меня есть такая проблема. Как ее решить?

  • Ответ 1

  • Напиши мне недостатки решения

  • Ответ 2

  • Придумай как победить недостатки

  • Ответ 3

  • Дай мне конечное решение

  • Ответ 4

Пример цепочки размышлений

Пример цепочки размышлений

Слева (A) представлена генерация паттернов с помощью одного запроса к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. Очевидно, что справа ответ больше насыщен примерами и более конкретен.

Слева (A) представлена генерация паттернов с помощью одного запроса к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. Очевидно, что справа ответ больше насыщен примерами и более конкретен.

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

В модель цепочка размышлений отправляется по нарастающей: сначала первый вопрос, потом первая пара вопрос-ответ и второй вопрос и т.д. Диалог усложняется и обрастает данными на каждом этапе. Технически Цепочка Размышлений гораздо более прожорлива на токены, чем единая простыня: это дороже и медленнее (из-за количества токенов на отправку). Также она плохо работает с пост-отправкой, потому что для отправки следующего сообщение необходимо дождаться получения ответа на предыдущие. Поэтому я практически не использовал gpt-4, до появления gpt-4o-mini.

Цепочка Размышлений может помочь понять модель лучше:

  • Вот у меня есть такая проблема. Как ее решить? На втором этапе, будет отправлено не просто второе сообщение, а первое сообщение, ответ на него и второе сообщение:

  • Вот у меня есть такая проблема. Как ее решить?

  • Ответ модели 1

  • Указание добавить синтетические данные модели. Данные, которые помогут понять «как думает модель»

  • Ответ модели 2

  • Запрос итогового решения

Цепочка вопросов для генерации синтетической информации

Цепочка вопросов для генерации синтетической информации

Слева (A) представлена генерация паттернов с помощью одного запроса к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. В обоих случаях отмечена проблема в порядке вывода. Однако ответ слева значительно насыщен деталями.

Слева (A) представлена генерация паттернов с помощью одного запроса к GPT-4o-mini. Справа (B) через диалог/цепочку размышлений. В обоих случаях отмечена проблема в порядке вывода. Однако ответ слева значительно насыщен деталями.

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

В данном случае, длительность цикла и момент окончания цикла будут фиксированы: они будут зависеть от количества вопрос, которые вы задаете. Дополнительно, вы можете самостоятельно контролировать работу модели на каждом этапе диалога. Инструкции могут быть как фиксированными, так и созданными при участии БЯМ.

К Цепочке Размышления следует относиться как к методу разбиения информации, которая предоставляется модели. Любая ваша проблема, с которой вы обращаетесь к модели, имеет определенные нюансы важные конкретно для вас. Эти нюансы необходимо предоставить модели, чтобы она подготовила максимально качественный ответ.

Эта информация состоит из следующих частей:

  • Ваши инструкции в Цепочке Размышления могут варьироваться от простых запросов до сложных, многоуровневых задач. Они могут включать в себя просьбы о создании текста, анализа данных, формулирования аргументов и т.д. Главное здесь — ясность и точность ваших инструкций, чтобы модель могла корректно понять ваши требования.

  • Ваши примеры играют важную роль в Цепочке Размышления. Они помогают модели понять, какого рода ответы вы ожидаете. Это могут быть как «хорошие» примеры, которые показывают желаемый результат, так и «плохие», которые помогают избегать нежелательных ответов.

Фактически, для создания Цепочки Размышления можно использовать любую модель, если позволяет размер контекста. Это интересный и многогранный инструмент для управления моделью. Для успешного использования Цепочки Размышления важно учитывать контекст. Это может включать в себя предыдущие запросы, информацию о пользователе, текущие обстоятельства и т.д. Наконец, Цепочка Размышления является динамическим процессом. Вы можете добавлять новые инструкции и примеры по мере необходимости, корректируя ответы модели и улучшая результаты.

© Habrahabr.ru