Skip to content

Releases: Koziev/chatbot

Обновление моделей и кода чатбота

28 Nov 06:13
Compare
Choose a tag to compare

Несколько небольших изменений:

  1. Модель читчата и reasoner'а уменьшена до 355 млн. параметров, чтобы ускорить генерацию ответов при инференсе на CPU.
  2. Обновлена модель retriever'а, которая сопоставляет запрос и факты в базе знаний. Ее обучающий датасет расширен примерами для фактов про поэтов, и досыпано много негативных сэмплов, полученних при hard negative mining'е.
  3. База знаний расширена фактами о поэтах, поправлены опечатки.

Докер-образ как обычно доступен тут.

Изменения в прототипе диалоговой системы

23 Nov 07:44
Compare
Choose a tag to compare
  1. Восстановлена часть скриптовых инструментов из старой ветки чатбота. На данный момент сделана поддержка двух видов правил:
  • "greedy", которые отрабатывают ДО генеративного пайплайна. См. тестовое правило для обработки реплики "куку" и для реакции на фразу "ненавижу xxx".
  • "smalltalk", которые дополняют выдачу генеративного читчата и reasoner'а вариантами ответа. См. тестовое правило для "алё". Выдача этих правил оценивается на уместность в контексте диалога вместе с репликами, сгенерированными GPT.

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

  1. В качестве распознающей грамматики в правилах теперь используется полностью совместимый с JAICP матчер, его код лежит [тут] https://github.com/Koziev/chatbot/tree/core_v4/ruchatbot/scripting/matcher).

  2. Идея интерпретатора расширена после экспериментов: теперь эта модель будет заниматься также исправлением всяких ошибок в репликах человека.

  3. Оптимизация пайплайна, улучшение моделей.

Докер-образ с ботом как обычно залит в реестр: https://hub.docker.com/repository/docker/inkoziev/chatbot_v4

Оптимизация и рефакторинг диалоговой системы

10 Nov 11:29
Compare
Choose a tag to compare

Changelog:

  1. Для решения задачи раскрытия неполных реплик и нормализации сообщений теперь используется модель на базе rut5-tiny. По метрикам она немного уступает ранее использовавшеся модели на базе rugpt large (https://huggingface.co/inkoziev/rugpt_interpreter): примерно 0.983 против 0.992 по символьной близости восстановленной реплики. Но по скорости работы на CPU и компактности новая модель вне конкуренции. Поэтому для MVP решено использовать пока ее.

  2. Сделан рефакторинг кода фронтенда, поэтому консольный вариант запуска, rest api и телеграм-бот находятся в разных файлах. Движок бота остался в conversation_engine.py.

Докер-образ этой версии доступен тут.

Chatbot 0.0.6.1 changelog

29 Oct 06:21
Compare
Choose a tag to compare
Pre-release

Изменения в движке диалоговой системы:

  1. Для определения синонимичности двух коротких текстов (преимущественно одиночных предложений с фактами) теперь используется модель с архитектурой sentence transformer. Обертка модели тут. Модель выложена на huggingface.

  2. Несколько небольших багфиксов в пайплайне.

Докер-образ с кодом и моделями для запуска тестового телеграм-бота доступен тут.

Chatbot changelog 19.10.2022

19 Oct 11:47
Compare
Choose a tag to compare
Pre-release
  1. Персистентность хранилища фактов (базы знаний): оно теперь умеет работать с SQLite, сохранять собранные в ходе диалога с собеседником данные и загружать их при следующем запуске. Код хранилища доступен тут:. Чтобы использовалась sqlite БД, надо при запуске бота указать опцией --db путь к файлу БД, см. тут.

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

  3. Retriever: модель переделана на sentence transformer. По метрикам и визуально по диалогам это дает значительное улучшение качества подбора фактов для обогащения контекста читчата. Код обертки доступен тут. Модель можно использовать автономно, загружая с huggingface.

Докер-образ со всеми актуальными моделями доступен в хабе.

Релиз чатбота 0.5.0

09 Oct 11:35
Compare
Choose a tag to compare
Pre-release

Изменения в архитектуре диалоговой системы

  1. Модель раскрытия реплик до полных (Incomplete Utterance Restoration)
  • Датасет расширен и почищен, начато добавление новых паттернов для нормализации и нейтрализации реплик с нецензурной лексикой, арифметических задач и т.д.

  • Проведено новое исследование для подбора оптимальных гиперпараметров обучения (число эпох, learning rate).

  • Актуальная версия модели выложена для использования в любых сторонних проектах тут https://huggingface.co/inkoziev/rugpt_interpreter

  • Код обертки, используемый в чат-боте, доступен по ссылке.

  1. Модель генерации ответной реплики в диалоге (Chit-chat, Deductive and Common-sense Reasoning)
  • Тренировочный датасет расширен примерами задач по математике, на логику и здравый смысл

  • Формат взаимодействия с моделью переработан в пользу максимально естественного "диалогового" вида подачи входного контекста

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

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

  • Актуальная версия модели выложена для использования в любых сторонних проектах тут https://huggingface.co/inkoziev/rugpt_chitchat

  • Код обертки, используемый в чат-боте, доступен по ссылке.

  1. Модели подбора фактов из базы данных для обогащения контекста (Retriever)
  • Сделана отдельная модель для определения, что входная реплика содержит всю информацию, необходимую для вывода ответа. Выполнена как доп. слов поверх cointegrated/rubert-tiny. Код обертки доступен по ссылке.

  • Работу этой модели можно увидеть при вводе вопроса типа "чему равно 2 плюс 5?". Так как для ответа на него не нужна никакая дополнительная
    информация, включая контекст диалога и данные из базы фактов, рассматриваемая модель выдает соответствующий сигнал и вывод ответа идет только исходя из текста вопроса.

  • Значительно расширен датасет модели для подбора в БД фактов, релевантных заданному вопросу. Обертка для этой модели доступна тут.

  • Добавлена модель подбора записей из БД для силлогического вывода.

  1. Общий пайплайн диалоговой системы.
  • Переработан в пользу более прозрачного разделения на разные сценарии инференса ответной реплики.

  • Сделано разделение моделей читчата, раскрытия коротких реплик и выдумывания фактов на отдельные модели, для удобства переобучения в ходе создания MVP. Минус такого подхода - инференс на GPU требует не менее 8 Гб памяти.

  • Набор записей в "базе знаний" расширен, чтобы бот из коробки мог отвечать на более широкий круг вопросов.

Докер образ со всеми моделями и кодом для телеграмм-бота доступен здесь: https://hub.docker.com/repository/docker/inkoziev/chatbot_v4

Пайплайн чатбота только на генеративных моделях

19 May 10:42
Compare
Choose a tag to compare
  1. Движок чатбота полностью переработан и теперь не содержит правил и сценариев. Часть прежней функциональности правил реализуется через управление генерацией в GPT, например - ответы в случае, если в базе знаний бота нет информации для генерации ответа.

  2. Модель интерпретатора сообщений, раскрывающая реплики собеседника до полных клауз на основе текущего контекста, теперь также реализована на GPT, а не отдельной seq2seq модели.

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

Докер-образ с кодом инференса и моделями доступна тут: https://hub.docker.com/repository/docker/inkoziev/chatbot_v4

Disclaimer: на CPU данная версия работает чрезвычайно медленно. Образ собран так, чтобы его можно было запустить локально на GPU, примерно такой командой:

docker run --gpus all -ti -e PYTHONIOENCODING=utf-8 chatbot

Релиз чатбота 0.2.21

12 Jun 17:01
Compare
Choose a tag to compare
Pre-release

Изменения в диалоговой системе

  1. В менеджер сессий добавлена чистка старых сессий (таймаут пока захардкожен как 3600 секунд).

  2. Реализованы сценарии с условными графами переходов.

  3. Множество небольших изменений в пайплайне обработки реплик, чтобы улучшить естественность диалогов.

  4. Добавлена модель "конфабулятора" для генерации предпосылок для заданного вопроса для случаев, когда бот не может ответить с помощью текущего содержимого БЗ.

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

  6. Собран и выложен в общий доступ полный докер-образ бота со всеми моделями.

Пошаговая инструкция по запуску телеграм-бота с диалоговой системой

  1. Скачать докер-образ (~4 Гб)

https://drive.google.com/file/d/1NLTumG5Ufe4k2BktF3_ZDhnr1J8RrwTs/view?usp=sharing

  1. Загрузить его примерно так:
sudo docker image load -i chatbot.tar.gz
  1. Зарегистрировать своего бота в Телеграме и получить токен

  2. Запустить сервис бота на своем хосте:

docker run -it chatbot bash -c "/chatbot/scripts/tg_bot.sh"

После запуска в консоли будет запрошен токен, полученный при регистрации бота, и номер профиля бота (можно выбрать 1 или 2):

Enter Telegram token:> тут_токен_телеграм_бота
Choose profile [1, 2, 3]:> 2

Примерно 30 секунд бот будет загружать модели, затем начнет обрабатывать входящие сообщения.

  1. Теперь в Телеграме начинаем чат с ботом, зайдя по ссылке типа http://t.me/vika_chatbot. Выполняем команду "/start" для запуска сессии, и ведем диалог.

0.0.2.20-alpha

17 Jan 05:48
Compare
Choose a tag to compare
0.0.2.20-alpha Pre-release
Pre-release
  1. Доработки концепции профилей - правила и факты разделены на общие для всех профилей и частные, код скорректирован.

  2. Добавлен минимальный rest api: методы push_phrase, pop_phrase. Сделано минимальное нагрузочное тестирование с запросами к rest api с двух хостов (+добавлена синхронизация над SQLite в пакет ruword2tags).

  3. Добавлен детектор гендерной самоидентификации собеседника и соответствующая коррекция выдаваемых из бота фраз.

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

  5. Небольшие доработки в стилизаторе выводимых реплик бота, чтобы сделать их более естественными.

  6. Добавлена новая языковая модель для валидации результатов работы генеративных моделей и фильтрации некоторых видов нонсенса.

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

  8. Много доработок в базовых сценариях знакомства.

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

  10. Улучшена обработка вопросов к боту в форме 2л мн.ч (на "Вы").