Делаю тут для ULCAMP 2024 бота с памятью. По идее, он должен отвечать на любые вопросы на тему конференции, показывать пользователю его покупки (билеты, палатки, автобус), и менять заказ (отправлять сообщение о необходимости изменений в поддержку).
Решил показать, как эта самая память работает.
Хранить/вводить информацию решили через Google таблицы — как самый простой и быстрый инструмент. Процесс понятен (на изображении справа):
Взаимодействие пользователя с ботом происходит через мою универсальную библиотеку AgentBot, над которой я работаю уже более полугода. Все мои боты работают сейчас на ней. Она позволяет взаимодействовать с разными моделями и отвечает за хранение контекста для каждого пользователя.
Самое главное, что, с учетом того, что LLM модели не требуется широта знаний (ведь всю самую важную информацию мы уже ей отдаем в запросе), мы можем использовать самые дешевые модели, и они будут отлично справляться.
Можете попробовать сами: @ulcampbot (версия не финальная, но вполне рабочая, если у вас куплены билеты на Ulcamp, то обязательно свяжите личный кабинет). Название тоже не финальное. Уже неделю прошу организаторов придумать мне его. Буду рад любым баг-репортам.
Кстати, мне сделали код на скидку на билеты на ULCAMP — BIZNESBOT10.
@sergiobulaev - AI и всё такое.
Решил показать, как эта самая память работает.
Хранить/вводить информацию решили через Google таблицы — как самый простой и быстрый инструмент. Процесс понятен (на изображении справа):
1. Контент-менеджер вводит небольшие статьи в таблицу, которые состоят из заголовка и текста (но по факту все равно объединяются в один элемент контента). Решили сделать его в среднем 500-1000 символов длиной (но это не жестко).
2. Раз в 15 минут мой скрипт проходит по таблице и считывает все данные. Проверяет, чего у нас еще нет, а что изменилось. Далее все, что надо добавить/изменить, переводится в вектора — Embeddings и сохраняется в векторной базе данных Pinecone. Поскольку у OpenAI и Anthropic разные форматы векторов, то я делаю сразу обе версии, чтобы иметь возможность переключать модели.
Взаимодействие пользователя с ботом происходит через мою универсальную библиотеку AgentBot, над которой я работаю уже более полугода. Все мои боты работают сейчас на ней. Она позволяет взаимодействовать с разными моделями и отвечает за хранение контекста для каждого пользователя.
1. Пользователь отправляет запрос боту, он попадает сразу в дочерний класс AgentBot, который называется UlcampBot.
2. UlcampBot переводит запрос в Embeddings и отправляет запрос в Pinecone.
3. Pinecone подбирает несколько статей, наиболее близких по векторам (а значит наиболее релевантных по смыслу), и возвращает эти статьи боту.
4. В случае, если пользователь — участник, мы делаем запрос к информации о его покупках из личного кабинета.
5. Информация передается обратно боту.
6. Бот подмешивает в системное сообщение справочную информацию из Pinecone и личную информацию из кабинета и передает на обработку родительскому классу AgentBot.
7. AgentBot исполняет свою обычную работу, формируя контекст и используя системное сообщение, делает запрос к LLM модели.
8. LLM модель в свою очередь генерирует ответ, используя переданную информацию, и возвращает его.
9. Ответ отправляется пользователю.
Самое главное, что, с учетом того, что LLM модели не требуется широта знаний (ведь всю самую важную информацию мы уже ей отдаем в запросе), мы можем использовать самые дешевые модели, и они будут отлично справляться.
Можете попробовать сами: @ulcampbot (версия не финальная, но вполне рабочая, если у вас куплены билеты на Ulcamp, то обязательно свяжите личный кабинет). Название тоже не финальное. Уже неделю прошу организаторов придумать мне его. Буду рад любым баг-репортам.
Кстати, мне сделали код на скидку на билеты на ULCAMP — BIZNESBOT10.
@sergiobulaev - AI и всё такое.