Хороший :)
Услуги
Россия, Москва
Октябрь 2024
Как мы помогли навести порядок в задачах Bitrix24?
Клиент обратился с проблемой, которая часто встречается в больших командах: Сотрудники путаются при создании задач, описывают их неполно или не по шаблону, а иногда вовсе теряют запросы.
Чтобы устранить эти проблемы, мы предложили решение — чат-бот, который шаг за шагом помогает сотруднику оформить задачу правильно.
- Пошаговое сопровождение. Бот сам уточняет недостающую информацию и не пропускает ключевых деталей.
- Массовые проблемы под контролем. Если запрос касается общей проблемы (например, сбой системы), бот сразу распознаёт её и объясняет, что уже ведётся работа по исправлению.
- Автоматическая маршрутизация. Созданная задача автоматически направляется к нужному исполнителю, избавляя от необходимости разбираться, кому её адресовать.
Как работает наш бот в Bitrix24?
Наш бот был создан, чтобы сделать работу с задачами в Bitrix24 простой, быстрой и понятной. Разберем, что он умеет на простом примере:
- Анализ запросов пользователей. Бот анализирует текст запроса на основе предварительно настроенных шаблонов, чтобы выбрать наиболее подходящий вариант для создания задачи.
- Уточнение деталей. Если для создания задачи не хватает данных, полученных из первого сообщения, бот задаёт вопросы один за другим, чтобы не перегружать сотрудника. Это помогает точно понять все нюансы и не пропустить важную информацию для корректного создания задачи.
- Работа с файлами. Перед созданием каждой задачи, бот напоминает пользователю о возможности прикрепить любые файлы, чтобы сделать задачу максимально информативной - просто скинуть их в чат.
- Создание и диспетчеризация задач. После того как пользователь указал все необходимые данные, бот автоматически определяет исполнителей, добавляет наблюдателей, устанавливает дедлайны и отправляет задачу в нужную группу.
- Обработка массовых проблем. Чтобы избежать дублирования задач, когда массовая ошибка затрагивает несколько пользователей, бот автоматически проверяет, не является ли запрос частью более крупной проблемы. Если ошибка известна и находится в процессе решения, бот уведомляет пользователя и игнорирует повторные запросы.
- Игнорирование запросов, не относящихся к задачам. Бот настроен на работу только с заранее заданными шаблонами задач, которые наш клиент настраивает в специальной Google-таблице. Эта таблица регулярно обновляется, что позволяет добавлять новые сценарии. Если запрос пользователя не соответствует ни одному из шаблонов, бот вежливо сообщает об этом и завершает диалог. Это помогает сосредоточиться только на значимых запросах и не тратить время на нерелевантные вопросы.
Создание такого бота — это не просто про написание кода. Это про правильную архитектуру, внимание к деталям и чёткое понимание задач клиента. Расскажем, как мы это сделали.
1) Аналитика: сбор данных и подготовка
Перед началом разработки важно было понять, как именно бот должен работать, чтобы стать полезным инструментом. Основные этапы анализа:
- Сбор реальных пользовательских запросов. Мы изучили истории задач в Bitrix24 клиента и систематизировали типы обращений. Это дало чёткое понимание, какие сценарии должны быть поддержаны ботом.
- Настройка шаблонов задач. Вместе с клиентом определили категории задач, список обязательных и опциональных параметров. Вся информация была вынесена в Google-таблицу, с которой бот синхронизируется каждые 15 минут.
- Определение нерелевантных запросов. Проработали сценарии, которые бот должен игнорировать, например, вопросы вне компетенции компании или те, для которых пока нет шаблонов.
2) Декомпозиция системы
Мы провели поэтапную декомпозицию системы, разбив разработку на функциональные блоки. Это позволило нам:
- Грамотно структурировать процесс реализации.
- Демонстрировать заказчику продукт на промежуточных этапах разработки.
- Вносить изменения и улучшения в реальном времени на основе обратной связи.
Декомпозиция обеспечила прозрачность процесса и гибкость для адаптации под потребности заказчика, что стало ключевым фактором успешной реализации проекта.
3) Техническая реализация
В процессе разработки мы реализовали несколько ключевых этапов, обеспечивающих гибкость и масштабируемость системы:
- Парсер шаблонов задач из Google-таблиц. Для гибкости и динамичности работы с задачами мы создали парсер для загрузки шаблонов задач из Google-таблиц. Шаблоны содержат параметры для создания задач в Bitrix24, а также условия, при которых следует вызвать ту или иную задачу.
- API для приема сообщений из Bitrix24. Разработано API, которое получает сообщения от пользователей через Bitrix24. Эти сообщения передаются в систему, обрабатываются и возвращается ответ, который бот отправляет пользователю.
- Ядро LLM-агента с использованием LangChain. Мы построили систему на основе языковой модели, которая анализирует историю сообщений и на основе этого контекста генерирует ответы. Модель учитывает как прошлые, так и новые сообщения для более точного понимания ситуации.
- Динамическая генерация функций из шаблонов задач. На основе загруженных шаблонов задач мы динамически генерируем JSON со списком "виртуальных" функций. Каждая функция соответствует конкретному шаблону задачи и имеет тот же набор аргументов, что описан в шаблоне задачи. Каждая функция имеет описание, взятое из описания задачи, что позволяет понять языковой модели когда именно её нужно вызывать.
В языковых моделях функции представляют собой заранее определённые действия, которые модель может вызвать в процессе обработки запроса. Когда пользователь делает текстовый запрос, модель анализирует его содержание и решает, нужно ли выполнить одну из этих функций для решения задачи. Например, это может быть создание задачи (как у нас), поиск информации в базе данных или взаимодействие с внешними API (так даже можно предоставить языковой модели возможность "гуглить").
Модель получает список доступных функций вместе с их описанием и аргументами, которые необходимы для выполнения. Когда запрос пользователя совпадает с одной из этих функций, модель генерирует вызов функции с нужными параметрами. Этот вызов затем передается в нашу систему и мы уже вызываем реальную написанную нами функцию. Таким образом, функции в языковых моделях позволяют делать не только текстовые выводы, но и выполнять действия в реальном времени, расширяя возможности модели за пределы простой генерации текста.
- Системный промт и обработка исключений. Для корректной работы агент использует системный промт, который помогает ему задавать вопросы пользователю и уточнять недостающие данные. Системный промт в нашем проекте играет важную роль в управлении поведением языковой модели. Он был задан как список чётких инструкций, которые определяют правила взаимодействия с пользователем. Благодаря системному промту, агент может задавать пользователю вопросы поочередно, понимать как работать с файлами и уточнять все необходимые данные перед созданием задачи.
Сложности и их решения
При разработке системы возникли несколько неопределенностей, о которых я расскажу далее.
Выбор языковой модели: Использование библиотеки Langchain позволило нам легко тестировать различные языковые модели, меняя их с помощью одной строки кода. В результате наилучшие результаты показала модель ChatGPT 4o. Мы также проводили тестирование с российскими ИИ, например, GigaChat Pro от Сбера, но она показала себя хуже, так как не всегда правильно следовала инструкциям. Сейчас ожидаем публикацию API для недавно вышедшей GigaChat Max. Яндекс в свою очередь в октябрьском анонсе новой модели пообещал поддержку функций в YandexGPT 4, но пока не опубликовал её.
Загрузка файлов из битрикс24: Изначально было неясно, как интегрировать загрузку файлов в текстовой модели. Мы решили эту задачу следующим образом: при получении сообщений с вложениями, агент получает информацию о типе файла и его ID на диске Битрикс24. И уже при вызове нужной функции, агент передает список этих ID, которые используются при создании задачи в Битрикс24.
Решение проблемы с галлюцинациями и тестирование: В процессе тестирования мы пришли к следующим решениям, чтобы максимально избежать возможные галлюцинаций агента:
- Установлен параметр temperature = 0.5, чтобы уменьшить вероятность генерации неточных данных (Параметр temperature в языковых моделях регулирует уровень случайности и креативности в ответах)
- Каждый раз после создания задачи мы очищаем историю сообщений, чтобы исключить влияние устаревшего контекста на текущие запросы.
- Для тестирования было разработано несколько бенчмарков, которые мы использовали после изменения системного промта и других настроек, чтобы удостовериться, что модель отвечает корректно и без ошибок.
Мы обладаем богатым опытом создания чат-ботов любой сложности — от простых автоматизаций до высокоинтеллектуальных решений на базе ИИ. Наша команда подходит к каждому проекту индивидуально, погружаясь в бизнес-процессы клиента, чтобы разработать решение, которое приносит пользу.
Мы поможем вам реализовать проект с нуля или доработаем уже существующее решение. Свяжитесь с нами, чтобы обсудить ваши задачи и получить профессиональную консультацию.
Вебформат с удовольствием обсудит вашу задачу