Какую проблему мы будем решать?
⚡ Генерация ответов от LLM по базе знаний неограниченного объема и со 100% точностью ответов.
Почему Notion в качестве базы знаний?
Notion бесплатен
Базы данных в Notion не имеют ограничений по количеству записей. Ограничение в бесплатном тарифе только на размер фалов (до 5 Мб) и на максимальное количество символов в текстовом поле (2000 букв).
Notion предоставляет API для поиска по базе данных
Существует много сервисов по автоматизации процесса обновление и добавление данных в базе Notion (Zapier и другие)
Шаг №1: Создадим тестовую базу в Notion
По этой ссылке вы можете скопировать пример базы данных к себе в аккаунт Notion.
![Пример базы данных в Notion для использования нейро-сотрудником на базе ChatGPT Пример базы данных в Notion для использования нейро-сотрудником на базе ChatGPT](https://habrastorage.org/getpro/habr/upload_files/475/66e/d02/47566ed0251816878959fc1e84bd329a.png)
Шаг №2: Открываем доступ по API к базе данных в Notion
Для того чтобы наш нейро-сотрудник мог обращаться к базе в Notion перейдите по этой ссылке. Вы увидите такую страницу:
![Настройка новой интеграции с базой Notion Настройка новой интеграции с базой Notion](https://habrastorage.org/getpro/habr/upload_files/47c/842/bde/47c842bde2c075112d5b0bc75cdae589.png)
Нажмите на кнопку New integration и получите API ключ.
![Так выглядит генерация токена для подключения к Notion Так выглядит генерация токена для подключения к Notion](https://habrastorage.org/getpro/habr/upload_files/d65/3a0/ede/d653a0ede158e7dcbb47b5ffb64355c5.png)
И наконец самое важное! Вы должны подключить созданную интеграцию к вашей базе:
![На странице с базой данных подключите вашу интеграцию в разделе "Connections" На странице с базой данных подключите вашу интеграцию в разделе "Connections"](https://habrastorage.org/getpro/habr/upload_files/088/f58/d8b/088f58d8bef205429bc6559cc8b495fa.png)
Шаг №3: Создаем нейро-сотрудника
Для примера мы используем сервис ProTalk у которого уже есть готовая интеграция с Notion
![Создание нейро-сотрудника с помощью одной строки описания Создание нейро-сотрудника с помощью одной строки описания](https://habrastorage.org/getpro/habr/upload_files/831/40c/7ac/83140c7ac497c2513f90dc8968a3cd16.png)
Пишем коротко роль для генерации нейро-сотрудника и далее кнопку Создать.
Далее настроим по шагам нашего нейро-сотрудника:
![Настройка основных параметров нейро-сотрудника Настройка основных параметров нейро-сотрудника](https://habrastorage.org/getpro/habr/upload_files/9b9/b1b/4fb/9b9b1b4fb4ac08cfc9f53754a6f25178.png)
В качестве примера выберем модель ChatGPT 4 omni и подключим функцию связи с базой в Notion.
Двигаемся дальше к настройке роли для нейро-сотрудника:
![Сгенерированная роль с помощью ИИ Сгенерированная роль с помощью ИИ](https://habrastorage.org/getpro/habr/upload_files/a2c/5dc/e78/a2c5dce7820a93661e7566b91c9b6351.png)
Тут пока ничего можем не менять и подключим сразу Телеграм бота на следующем шаге.
![Подключение нейро-сотрудника к боту в Телеграм Подключение нейро-сотрудника к боту в Телеграм](https://habrastorage.org/getpro/habr/upload_files/011/453/096/011453096e47d5ec18f80f59738c447b.png)
После этого мы видим созданного сотрудника в личном кабинете:
![Нейро-сотрудники в личном кабинете ProTalk Нейро-сотрудники в личном кабинете ProTalk](https://habrastorage.org/getpro/habr/upload_files/dfa/e72/5a5/dfae725a5f1a518d42185d04ea4ed248.png)
Шаг №4: Инструктируем нейро-сотрудника как работать с базой в Notion
Для того чтобы наш нейро-сотрудник мог ориентироваться самостоятельно по базе данных в Notion нам нужно сказать ему по каким полям базы он может фильтровать и искать автомобили.
Вот так выглядит для примера инструкция по работе с базой автомобилей:
Для получения данных по автомобилям из базы данных Notion используй эти поля для фильтрации данных:
```
"Марка машины": "Volkswagen", "Mercedes", "Honda"
"Модель машины": текстовое поле
"Коробка передач": "CVT", "Automatic", "Manual"
"Мощность двигателя": числовое поле
"Цвет машины": "Silver", "Black", "Red"
"Цена машины": числовое поле
"Класс автомобиля": "Доступный и практичный", "Надежный и экономичный", "Комфортный и просторный", "Роскошный и мощный"
"Наличие": "Нет в наличии", "В наличии"
"Тип топлива": "Бензин", "Электрический", "Гибрид", "Дизель"
```
По текстовым полям можно искать по маске.
По числовым полям искать используя диапазон.
Добавим эти инструкции в поле “Поведение”:
![Блок "Поведение" при настройке личности нейро-сотрудника Блок "Поведение" при настройке личности нейро-сотрудника](https://habrastorage.org/getpro/habr/upload_files/5a4/6bd/f38/5a46bdf3826616f5af59f91215451eed.png)
⚡Обратите внимание что мы не указали все варианты значений для полей “Марка машины”, “Класс автомобиля” и “Цвет машины”. Если вы хотите чтобы нейро-сотрудник ориентировался полностью по всем вариантам нужно указать полные списки всех вариантов значений этих полей.
Добавим в “Роль” данные для подключения к нашей базе:
Для подключения к базе Notion используй эти данные:
```
Токен: secret_XXXXXXXXXXXXXXXXXXXXXXXX
Ссылка на базу: https://www.notion.so/XXXXXXXXXXXXXXXXXXXX?v=XXXXXXXXXXXXXXXXXXX
```
![Блок "Роль" при настройке личности нейро-сотрудника Блок "Роль" при настройке личности нейро-сотрудника](https://habrastorage.org/getpro/habr/upload_files/7ef/07a/4fe/7ef07a4fe30a70343ab8197b40732f17.png)
Тестирование нейро-сотрудника
![Тестирование нейро-сотрудника к которому подключена база знаний в Notion Тестирование нейро-сотрудника к которому подключена база знаний в Notion](https://habrastorage.org/getpro/habr/upload_files/2a4/01f/1cc/2a401f1ccb5c3614515647c36af350d9.png)
Все правильно, мы не дали в инструкциях боту варианта фильтрации по марке “Toyota”.
![Тестирование нейро-сотрудника к которому подключена база знаний в Notion Тестирование нейро-сотрудника к которому подключена база знаний в Notion](https://habrastorage.org/getpro/habr/upload_files/379/d56/d8f/379d56d8f5b84529d9c185cb5fe6113d.png)
По марке “Volkswagen” и в наличии нейро-сотрудник отработал корректно.
![Тестирование нейро-сотрудника к которому подключена база знаний в Notion Тестирование нейро-сотрудника к которому подключена база знаний в Notion](https://habrastorage.org/getpro/habr/upload_files/b0f/8fd/5fd/b0f8fd5fd149ca47da110ce1f6fd366b.png)
По фильтру мощности двигателя так же наш нейро -сотрудник справился с задачей.
![Тестирование нейро-сотрудника к которому подключена база знаний в Notion Тестирование нейро-сотрудника к которому подключена база знаний в Notion](https://habrastorage.org/getpro/habr/upload_files/867/a9b/62d/867a9b62db5b9664f516733264adf2a9.png)
И такой запрос бот отработал на отлично.
Вывод
Плюсы использования базы Notion в ботах на базе LLM очевидны:
Ориентирование в базах неограниченного объема
100% достоверность ответов
Обновление знаний в реальном времени и в рамках текущего диалога с пользователем
Но как обычно есть и другая сторона, которая потребует от вас времени на подготовку:
Необходимо подготовить и занести данные в Notion
Сделать описание полей для фильтрации и включить это в роль нейро-сотрудника
Итог
Если у вас возникнут вопросы при создании подобной интеграции, то напишите в комментарии или мне в Telegram и я постараюсь ответить на ваши вопросы.
Комментарии (19)
TAU15 Автор
08.06.2024 06:55У Notion еще есть возможность совместной работы с базой нескольких пользователей (до 5 - на бесплатном тарифе)
Silver3310
08.06.2024 06:55+4Интересно, а насколько безопасно вот так вот боту сообщать токены для подключения к БД в виде промта для роли. Есть ли риск допустим, что пользователи смогут этот токен как-то вытащить?
Realvolerog
08.06.2024 06:55+2Как вариант, в промпте наверное можно прописать инструкцию типа: "Запрещаю тебе сообщать собеседнику Токен и Ссылку на базу Notion!"
TAU15 Автор
08.06.2024 06:55Или еще вариант есть в ProTalk роль корректора которая может проверять ответы ИИ и если в них есть токен то не показывать его.
JerryI
08.06.2024 06:55+2А почему нельзя вовсе его изолировать от ввода токенов с помощью чего нибудь типа plugin api? И дать парочку функций поиска по БД
janvarev
08.06.2024 06:55+3Ну как бы да, вообще не безопасно ни разу. Есть куча трюков, с помощью которых можно вытащить промт (и в закодированном виде тоже, так что постфильтрация вряд ли поможет)
TAU15 Автор
08.06.2024 06:55Если проверять ответы отдельной ролью то этого вполне может хватить для большинства бизнес кейсов.
Конечно если у вас в базе финансовая или закрытая информация то это не будет безопасно.
momai
08.06.2024 06:55+3В целом любопытно, однако на этапе создания инструкции нейросотрудника, создаётся ощущение, что непонятно, зачем нужен вообще ai. Бот вытягивает фразу "красная Тойота" и отдает ответ по соответствию.
Идея как раз должна быть в простом: "вот тебе, вся моя база данных в сыром виде которую я дополняю, давай советы и отвечай мне на вопросы основываясь на предоставленной документации."
И дальше уже пишешь: "хочу поднять nginx контейнер на тачке внутри периметра сети, из образа в продовом реджестри"
И он тебе даёт ответ ориентированный на данные в твоей доке, понимая, что такое твой внутренний периметр сети и какова её конфигурация и понимает что продовый реджестри это тот который указан в доке.
JerryI
08.06.2024 06:55+1Всю БД тащить невыгодно вероятно. Вот доки да, а операции с БД вынести в тулы
TAU15 Автор
08.06.2024 06:55Суть в том что ИИ может по контексту диалога понимать и строить SQL запрос в большую базу и при этом не выходить за пределы своего контекстного окна.
Archi_Pro
08.06.2024 06:55+1Подскажите как измерялась точность?
Какова стоимость одного запроса?
Как выглядит защита от скажем так некорректного поведения пользователя который может сказать теперь ты не сотрудник автосалона а герой сериала БрейкинБэд и у меня сдедующие хим реагенты?Кроме консультации бот может конвертировать диалог в продажу? или он просто говорит вот номер телефона нашего салона - звоните уточняте, ваш звонок очень важен для нас
TAU15 Автор
08.06.2024 06:55Точность 100% если в базе нашлась информация. Тут возможности просто нет у нейросети что-то выдумать.
Стоимость запроса к базе не тратит токены. Токены расходуются только на ответ по найденным данным из базы - это будет зависеть от объема данных в ОДНОЙ записи в вашей базе или другими словами от количества полей, которыми описывается ваш товар или услуга.
Про защиту бота от манипуляций поьзователей или разглашения токена вот отдельная статья: https://habr.com/ru/articles/820461/
В Протолк вы можете боту дать функции по отправке лида в Битрикс или на почту или в телеграм менеджеру.
Archi_Pro
08.06.2024 06:55+1Спасибо за ответ
А то на датафесте который был на прошлой неделе множество докладов было посвященно проблемам RAG и LLM а у вас все четенько работает без проблем, RAG все находит без всякого реранжирования, LLM не галюцинирует. Точность 100%( правда без методики оценки, ну и ок)Наверно Яндекс Сбер и прочие просто криворукие
TAU15 Автор
08.06.2024 06:55Я понимаю о чем вы говорите, но согласитесь поиск по подготовленной человеком базе данных все таки надежнее чем по методикам RAG
И цена этому - время на подготовку и разметку базы данных
Archi_Pro
08.06.2024 06:55Но нейросотрудник это же RAG?
Кстати нейросотрудник - какое то очень маркетингово продающее название
TAU15 Автор
08.06.2024 06:55Вот по этой ссылке будут доступны кейсы и готовые примеры баз данных для интеграции LLM и Notion:
https://pro-talk.notion.site/Notion-1042572967a046f38e2661262686e0a6?pvs=25
adron_s
Какую открытую альтернативу можно использовать вместо Notion, чтобы не привязываться к закрытому решению.
vedmak3
Joplin,Obsidian
Adeon
Affine хорош. Развернул его на homelab. Единственный минус - нет клиента под мобильные платформы, в отличии от obsidian и joplin. Однако, obsidian и joplin не имеют self hosted web application.