Не просто умные — интеллектуальные. Перевели колонки Sber под управление GigaChat 2.0

от автора

Cалют, Хабр!

На связи сразу две команды: GigaChat Prod Data и платформы ассистента. В этом году мы объединили наши силы, чтобы вывести интеллект умных колонок Sber на новый уровень благодаря полному переходу на GigaChat 2.0. 

Это означает, что базовые возможности умных колонок, такие, как коммуникация с пользователем и вызовы навыков (музыка, погода и другие), теперь под контролем искусственного интеллекта. Общение с колонками стало больше похоже на разговор с человеком. Они удерживают контекст диалога до десяти раз больше, чем ранее; значительно лучше понимают естественный язык; способны распознать в одном обращении несколько команд и выполнить их. Это открывает дверь для более сложного диалога с устройствами. Например, он может выглядеть так:

— Салют, какой самый популярный альбом Black Sabbath? 

— Paranoid.

— Включи этот альбом и сделай погромче. 

— Включаю Black Sabbath — Paranoid.

Умные колонки с GigaChat 2.0 дают пользователю все возможности генеративных моделей, позволяя адаптировать общение под свои нужды. Например, можно спросить: «Салют, объясни теорию относительности семилетнему ребёнку». Можно попросить дать информацию кратко или в развёрнутом формате. Кроме того, с интеграцией GigaChat появилась возможность кастомизировать общение с колонкой: выбрать не только её голос, но и общение на «ты» или «вы», стиль общения — деловой, неформальный, официальный.

Как ранее работали устройства

В колонках применялся следующий базовый набор технологий: 

— Automatic Speech Recognition (ASR) и Text-To-Speech (TTS) — если предполагалось использовать голосовой ввод и озвучивать текст для пользователя. 

—  NLP-платформа, в которую входят различные сервисы для распознавания намерения пользователя (intent recognition) и предобработки текста. 

— Сервисы оркестрации запросов и работы с контекстом и профилем клиента, единый сервис регистрации возможных навыков колонки. 

—  Различные бэкенд-системы, которые реализовали сценарную и бизнес-логику конкретного навыка — например, музыки, погоды, будильника, таймера, общения с умным устройством как с собеседником. У каждого навыка, то есть умения колонки, своя NLP-логика: дополнительная обработка запроса, выполнение сценария, создание ответа пользователю.

Упрощённо предыдущий пайплайн обработки запроса в колонке выглядел так:

Пользователь делал запрос, например:

— Cалют, включи Black Sabbath.

«Салют» здесь — это споттер. Когда он срабатывал, звуковая дорожка с запросом сразу же начинала стримиться с устройства в ASR. Как только ASR выслушал пользователя и распознал текст, запрос передавался в NLP-платформу. Там выполнялся ряд операций с контекстом запроса, определялась цель пользователя и решалось, какая бэкенд-система релевантнее для ответа. В нашем примере это музыка. 

Навык музыки с помощью поиска по базе hi-fi стриминга Звук формировал итоговый ответ: строку, которую услышит пользователь, и ID трека для включения на устройстве. Далее реплика колонки передавалась в TTS, где превращалась в звуковую дорожку, и затем на устройство для озвучивания. Отдельно устройство запрашивало трек для воспроизведения музыки.

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

Как работают умные колонки с GigaChat 2.0

Чтобы дать пользователям новые возможности, мы построили LLM-центричную систему. Так, у нас появилась системная инструкция (system prompt), которая описывает поведение колонок и их базовые возможности.

От навыков мы перешли к функциям. Теперь бэкенды, которые ранее выполняли всю NLP-логику, работают как API: они выполняют только нужную ветку сценария с заданными параметрами. С технической точки зрения каждый навык стал рассматриваться как JSON-схема (далее «функция»), которая содержит детальную инструкцию: когда запускать навык, какие параметры передавать, как формировать ответ для пользователя и как комбинировать несколько функций.

Для перевода умных колонок на GigaChat 2.0 ключевой задачей стало создание универсальной системы-оркестратора. Она не только поддерживает естественное общение, но и самостоятельно управляет навыками. В GigaChat реализован нативный механизм вызова функций. Он анализирует запрос пользователя с учётом всего контекста диалога: промпта, вызовов функций, предыдущих пар запрос-ответ. На базе этой информации GigaChat решает, ответит ли на вопрос самостоятельно или вызовет функцию для получения дополнительного контекста. Точнее, заполняет аргументы функций на основе их описаний и сигнатур, а затем формирует итоговый ответ с учётом данных от бэкенд-системы.

Единой точкой ответа пользователю также стал GigaChat. Именно это позволило легко реализовать кастомизацию общения: смену стиля ответа, голоса, обращения на «ты» или «вы».

Обновлённые умные колонки на GigaChat 2.0 включают в себя три основных компонента. Это навыки — возможность использовать внешнюю функциональность для решения задач человека; болталка — умение интересно и проактивно поддерживать диалог с пользователем; безопасность — предотвращение использования устройства для создания вредоносного или дискредитирующего контента. Каждая из них реализует свою бизнес-логику, но вместе они составляют единый инструктивный датасет для дообучения LLM.

В общей сложности мы перевели на GigaChat 2.0 более 25 навыков, включая самые популярные — музыку, управление плеером, прогноз погоды. Переход на функции значительно улучшил систему по трём причинам:

1. Разрозненные навыки с их внутренней логикой превратились в единую систему, работающую в общем контексте. Это позволяет избежать типичных для колонок ситуаций, когда они внезапно «забывают» предыдущий запрос. Меняется и коммуникация пользователя с устройством — оно становится полноценным собеседником, способным выполнять более сложные и разнообразные задачи.

2. Механизм мультивызовов позволяет одновременно использовать несколько функций. Это значительно повышает эффективность обработки запросов, делая взаимодействие с колонкой более простым и удобным.

3. Интеграцию новых сценариев удалось значительно упростить благодаря общему интерфейсу для разработки и использованию подхода zero-shot. Добавляя более сложные сценарии с опцией переспроса, работой в контексте и множественными вызовами, мы не только улучшаем качество базовой модели GigaChat, но и снижаем затраты на дальнейшую разработку. Это становится возможным благодаря тому, что всё больше сценариев начинают работать «из коробки» без аналогичных примеров в обучающей выборке модели.

Как обучить LLM использовать новую функцию

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

Основное преимущество этого подхода — относительно быстрая реализация, поскольку данные для обучения собирать не нужно. Однако этот подход лучше использовать на больших моделях, таких как GigaChat Max; в общем случае zero-shot подход характеризуется ограниченной точностью из-за возможных ошибок модели в интерпретации функций, особенно если их описание недостаточно чёткое.

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

Поскольку для умного устройства важную роль играет скорость получения ответа (latency), необходимо было использовать относительно небольшую и быструю модель-оркестратор. Подходящим выбором для этого стала квантизованная версия GigaChat 2 Pro. Улучшение качества сценариев происходило исключительно через дообучение, без zero-shot подхода. Кстати, такие данные дополнительно повысили общее качество GigaChat при работе с функциями.

Как GigaChat работает с функциями

В процессе интеграции навыков в GigaChat мы выработали процесс, который проходим для добавления новой функции:

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

2. Создание описания функции. На этом этапе формируется итоговый JSON с описанием, который будет передан в контекст LLM. Мы с учётом всех продуктовых требований создаём полную, но лаконичную инструкцию для GigaChat. Для проверки качества финальной инструкции проводится тестирование в режиме zero-shot.

3. Сбор обучающих диалогов. С помощью нескольких разработанных пайплайнов для предразметки на GigaChat Max мы получаем диалоги всех необходимых типов:

  • Примеры вызова функции, где она используется корректно и по назначению.

  • Ситуации, когда запрос пользователя недостаточно понятен, требуется переспросить.

  • Диалоги, где функция доступна, но её использование не требуется.

  • Примеры, в которых функция нужна, но в данный момент недоступна.

  • Обработка ошибок, возвращённых системой бэкенда.

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

Мы дополнительно собираем диалоги со сложным контекстным взаимодействием пользователя с колонкой. Для этого используем интерактивные проекты создания диалогов на платформе разметки TagMe. На подобных проектах разметчики ведут полноценный диалог с моделью, каждый раз выбирая лучший ответ из нескольких возможных. Кроме того, мы раздали тестовые колонки с GigaChat 2.0 нашим AI-тренерам. Они воспроизводят сложные сценарии взаимодействия, выявляют ошибки и составляют отчёты, то есть фактически проводят ручное тестирование каждой новой версии.

4. Валидация обучающей выборки. На этом шаге мы проверяем все созданные диалоги с помощью команды наших AI-тренеров в разрезе каждого из трёх компонентов — навыков, болталки и безопасности.

5. Обучение и тестирование качества. Полученные данные используются для обучения модели, которая затем тестируется. О метриках расскажем чуть ниже.

Чтобы вместе с GigaChat заработали все нужные функции, нам потребовался отдельный сервис. По замыслу он упрощает модели выбор, возвращая только функции, соответствующие запросу пользователя. 

Для этого мы обучили отдельную модель-ранжировщик; она на основе контекста диалога оценивает, насколько каждая из функций релевантна запросу, и возвращает несколько самых подходящих. Помимо реплик пользователя и колонки, контекст содержит данные о текущем состоянии устройства — настройках будильника, состоянии плеера, таймера, напоминаний… Благодаря этому модель способна не только определить нужную функцию, но и уточнить, что именно хочет пользователь. Например, когда человек просит колонку удалить будильник, GigaChat не должен сразу вызывать соответствующую функцию. В контексте модель видит доступный навык будильника и с опорой на продуктовую инструкцию, заложенную в описании функции, может переспросить, какой именно будильник удалить.

Как умные колонки стали более персонализированными

При переходе на GigaChat 2.0 мы хотели добавить в общение с колонками больше разнообразия и сделать пользовательский опыт по-настоящему уникальным. 

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

Для обучения колонок мы применяли методику supervised fine-tuning — в разном объёме для разных стилей. Потребовалось выделить продуктовые требования к ответам и затем по разным источникам — ключевые сценарии в диалогах с ассистентом. Мы сформировали конфигурацию, которая позволяла получить 5–6 разнообразных ответов. Одна группа AI-тренеров по сценарию формировала различные диалоги, выбирая лучшие ответы на каждом шаге; другая валидировала и классифицировала диалоги на корректность и покрытие определённых сценариев. Если ответы плохо себя показывали по распределению комбинации сценария и стиля ответа, они вновь отправлялись к первой группе на генерацию.

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

Кроме того, переход на GigaChat 2.0 позволил сделать колонку более эмпатичной.  Модель «из коробки» умеет распознавать эмоции по тексту запроса, его сути и контексту диалога, а благодаря дообучению она способна сформулировать ответ с учётом настроения пользователя.

Генерация ответов нейросетью позволила уйти от универсальных предзаписанных фраз и древовидных сценариев, работающих по принципу «если X, то Y». Лексика колонок стала богаче, у них появились эмоции (там, где это действительно нужно). А если они ошибутся, то признают ошибку — и это тоже очень по-человечески.

Как проверить, насколько с колонками комфортнее общаться

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

Метрики болталки

Эту метрику мы замеряем вручную: AI-тренеры по методологии ALAP (assistant LLM answer properties) размечают диалог и оценивают ответы по различным критериям. Например:

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

Контекстность. Модель понимает, о чём идёт речь в диалоге, не переспрашивает зря и не повторяет длинные ответы и конкретные формулировки, которые уже озвучивала. Всего два варианта оценки: «хорошо» и «плохо».

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

Результаты умных колонок с GigaChat 2.0 сравнительно с предыдущим вариантом

Результаты умных колонок с GigaChat 2.0 сравнительно с предыдущим вариантом

Метрики навыков

Чтобы тестировать использование навыков в обновлённых интеллектуальных колонках, мы используем несколько собственных бенчмарков, собранных в том числе из обезличенных логов. На них мы замеряем классификационные метрики использования навыков. Ниже приведены значения на двух основных корзинах:

  • Recall – на них мы проверяем, что модель корректно вызывает нужную функцию при условии нескольких схожих доступных;

  • FPR (сложные реплики, где использование навыка не требуется) – на них убеждаемся, что модель не использует навык тогда, когда он не нужен.

gpt4o

GigaChat 2 Pro fp8

GigaChat 2 MAX

Recall-корзина

0,86

0,98

0,99

FPR-корзина

0,89

0,98

0,98

За счёт большой обучающей выборки мы смогли достичь сравнимого качества на Pro и Max моделях в большинстве простых кейсов. Однако в сложных контекстных взаимодействиях модель с большим количеством параметров всё же опережает более легковесную версию.

Метрика Goal Completion Rate (GCR)

Чтобы полноценно оценить качество работы умных колонок в реальных условиях, требуется комплексная end-to-end метрика. В нашем случае это GCR, Goal Completion Rate (метрика выполнения целей). Мы замеряем её применительно к нашим трём основным компонентам — навыки, болталка и безопасность — с помощью специально подготовленных сценариев. 

GCR мы тоже замеряем вручную: AI-тренеры проверяют успешность каждого шага в рамках сценария, учитывая качество ответов колонок и корректность работы бэкенда. Это позволяет объективно оценить качество работы устройств в условиях, максимально приближенных к реальному использованию. Если любой из компонентов в сценарии не отработал, кейс получает 0 баллов. Далее мы считаем долю успешных кейсов в сценарии.

Измерения показали, что качество ответов обновлённых колонок на сложные контекстные связки запросов выросло более чем в два раза. Сейчас этот показатель составляет более 80%. С учётом сложности сценариев это очень хороший показатель. Но, разумеется, мы не планируем на этом останавливаться.

Чтобы перевести умные колонки на GigaChat 2.0, наши команды улучшали как сам GigaChat, так и инфраструктуру умных колонок. Именно этот комплексный подход позволил превратить умные устройства в интеллектуальные: научить их естественно общаться, поддерживать долгие и содержательные беседы, креативить, объяснять. Словом, помогать своим владельцам каждый день.


ссылка на оригинал статьи https://habr.com/ru/articles/900694/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *