Привет всем!
Сегодня хочу рассказать про Flowise - open source инструмент для создания чат-ботов и не только.
Open source продукт создан для аудитории, которая не готова кодить, но хочет получить доступ к AI. В приятном интерфейсе драг-н-дропом из готовых блоков можно построить бекенд своего будущего приложения.
При помощи Flowise можно:
Создать чат-бот и встроить на сайт. Есть различные LLM на любой вкус, можно добавить ваши данные для анализа , выдачу поисковых систем, обращаться к сторонним API, и т.д.
Использовать Flowise как API. Тут потолок фантазий находится там, где заканчиваются комбинации блоков, но можно добавить и кастомные инструменты при помощи JS. Можно работать со звуком, изображениями и так далее.
Далее небольшой обзор возможностей инструмента и несколько практических кейсов, которые можно сделать бесплатно (и почти бесплатно):
1/ Установка Flowise локально. Всё очень просто.
2/ Кейс 1 - простейший чат-бот. Сможет отвечать на вопросы.
3/ Кейс 2 - поиск по CSV. Сможет проанализировать данные в файле.
4/ Кейс 3 - чат-бот, который сможет отвечать на вопросы на основе вашей информации (например, о компании).
5/ Кейс 4 - ассистент, который использует поисковую выдачу для ответов: может рассказать о погоде, последних новостях и т.д.
6/ Маркетплейс - готовые чатфлоу и инструменты. Пример: генерация изображений.
7/ Деплой Flowise в Render. Подготовимся к тому, чтобы встраивать чат на сайт. Не сложнее, чем сделать всё локально.
8/ Как перенести в Render созданные ранее чатфлоу.
Flowise локально.
Для Windows.
1/ Установите Node.js, скачайте, запустите msi-файл и следуйте инструкциям установщика.
2/ Запустите командную строку и выполните npm install -g flowise
. Установка займёт неcколько минут.
3/ Затем запустите flowise командой npx flowise start
. (в дальнейшем командой flowise start
из командной строки вы сможете всегда запустить сервер flowise).
Если всё установлено корректно, в ответе вы получите сообщение: Flowise server is listening at 3000
и сможете работать на http://localhost:3000/.
Способов установки несколько, этот простейший.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/29a/8b1/70e/29a8b170e33fb07d638eae2b7339b5ba.jpg)
Ещё нам понадобится LLM, чтобы построить несколько примеров. Flowise может работать c OpenAI, Google PaLM, Azure OpenAI и другими. Используем OpenAI для примера, нам потребуется API-key. Создать его можно на странице платформы после регистрации. Не забудьте скопировать значение ключа и сохранить где-либо локально.
Вернёмся во Flowise и создадим наш первый чатфлоу кликом по «Add new».
Слева под кнопкой «+» вы найдёте доступные для выбора блоки, собранные в категории.
Краткое описание категорий.
Agents — отвечают на вопросы, используя LLM или другие подключенные к ним инструменты.
Cashe — можно закешировать ответ LLM с использованием Redis, Momento, Upstash или использовать встроенный кеш.
Chains — цепочки, позволяют объединять несколько LLM и/или других запросов. В чатфлоу обязательно должна быть или цепочка, или агент.
Chat models — чат-модели, к которым вы можете подключиться.
Document loaders — загрузить данные из *.csv, *.json, Notion, Figma, Confluence и других источников.
Embeddings — разбиение текста запроса пользователя на части (вложения), LLM использует эти вложения, чтобы искать похожую информацию в своей базе данных и формировать ответ.
LLMs — сами языковые модели.
Memory — память, чтобы хранить беседы.
Moderation — проверка текста перед отправкой в LLM.
Output Parsers — ответ LLM может быть представлен в виде json или csv.
Prompts — инструкции для LLM.
Retrievers — возможность подключить дополнительные базы данных, например - с документами компании.
Text Splitters — возможность разделить предоставленные модели тексты на части по разным признакам.
Tools — возможность добавить готовый инструмент или создать свой.
Utilicies — набор простых утилит вроде калькулятора и подобных.
Vector Stores — подключение векторных баз данных.
Дальше в статье я буду строить что-то простое и объяснять на примерах.
Если вы ещё не успели разобраться в терминологии, связанной с LLM, могу рекомендовать вот этот текст.
Кейс 1 — простейший чат-бот.
Для начала разберёмся с блоками и связями.
Вытащим на канвас первый блок — Chains -> Conversation Chain (здесь и далее буду адресовать блоки «Категория -> Блок»).
Стрелками на скриншоте указаны коннекторы: подключаете к Conversation chain обязательные Chat model и Memory и получаете на выходе результат в виде чата.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/4d9/219/ef8/4d9219ef84e750455487d36c952efd7d.jpg)
Conversation Chain потребует добавления ещё двух обязательных блоков: ChatModels -> ChatOpenAI чтобы подключиться к OpenAI и Memory -> Buffer Memory, чтобы хранить историю беседы.
Для ChatOpenA в поле Connect Credentials создайте новое подключение и добавьте сгенерированный вами ранее ключ. В имени модели можно оставить любое значение по умолчанию. Temperature — это индекс, который отображает насколько строго модель будет отвечать, по тексту (если ближе к нулю) или «с фантазией» (ближе к и больше 1), оставим значение 0.7.
В Buffer Memory можно всё оставить по умолчанию.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/939/217/84d/93921784d49062944d4e729515314697.jpg)
Если открыть Additional Parameters в Conversational Chain, то можно скорректировать поведение и личность бота.
Кейс 2 — работа с CSV.
Можно загрузить файл и сделать запрос, например: «какая информация в файле», «сделай саммари файла», «сколько уникальных значений в файле» или любой на ваш вкус.
Вытащим на канвас блок Agents -> CSV-agent . Это агент, который будет отвечать на ваши вопросы, используя LLM и csv-файл, который вы приложите.
Подключим модель. Из категории LLM перетащите блок OpenAI.
В поле Connect Credentials необходимо создать новое подключение и добавить сгенерированный вами ранее ключ. В имени модели можно оставить любое значение по умолчанию.
Сгенерируйте файл *.csv и загрузите в агент. Можете воспользоваться готовым.
Не забудьте сохранить чатфлоу.
Сам чатфлоу и простых поисковых запросов:
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/926/ee0/427/926ee0427ee734d46aef5b336716a4e9.jpg)
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/9c6/7be/6e2/9c67be6e21d2f146640dd4eb9ef3c796.jpg)
Кейс 3 — чат-бот, который использует вашу информацию.
Например, о вашей компании.
Для теста можно сгенерировать текстовый файл, например, в формате вопрос-ответ. В этом может помочь первый созданный вами бот (для ленивых есть готовый пример).
Ещё нам понадобится векторное хранилище, в которое чат-бот поместит обработанный и упорядоченный набор векторов, которые будут построены из вашего контента.
Зарегистрируйтесь/авторизуйтесь на Pinecone и кликните Create new index
.
Потребуется заполнить несколько полей: имя индекса, поле Dimensions - впишите значение 1536, в бесплатной версии Cloud provider и Environment будут доступны в единственном экземпляре. Кликайте Create index
.
Нам также потребуется API-ключ, он найдётся на странице API-keys, которая доступна из меню.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/9fd/0af/fff/9fd0affff893ce2c9e295ea2997d2133.jpg)
После создания индекса, вы увидите его в списке. Значение поля environment нам далее пригодится.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/157/d30/162/157d301624ec70463323eb9faba699ac.jpg)
Сделаем 2 чатфлоу. Первый будет загружать в векторную базу данных наш контент, а во втором сделаем чат-бот, который будет общаться на основании этих данных.
Первый чатфлоу из блоков:
1/ Chains -> Retrieval QA Chain (QA — question and answer).
2/ LLMs -> OpenAI — потребует API-ключ, также укажите temperature = 0.5, этой модели не нужен слишком творческий подход.
3/ Vector Stores -> Pinecone — ваша векторная база данных, нужно добавить добытые ранее API-ключ и название индекса, который вы создали, в нижнем дропдауне также выберите Pinecone vector store
.
4/ Embeddings -> OpenAI Embeddings — потребуется API-ключ OpenAI.
5/ Document loaders -> Text file — загрузите ваш файл с вопросами-ответами.
6/ Text Splitters -> Recursive Character Text Splitter — укажите параметры Chunk size = 250 и Chunk overlap = 50, этот блок поможет разделить текст из вашего файла на части.
Обратите внимание на то, что справа вверху стала доступна новая кнопка, это принудительная загрузка данных в векторную базу данных.
Например, вы поменяли файл с текстами, и вам требуется обновить данные в Pinecone.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/45b/8f1/6b9/45b8f16b937ac8ca40e9303d50d6c970.jpg)
Теперь второй чатфлоу, он содержит поменьше блоков:
1/ Chains -> Retrieval QA Chain.
2/ Chat models -> Chat OpenAI, потребуется указать API-ключ и установить temperature = 0.7.
3/ Vector Stores -> Pinecone — добавить API-ключ и название индекса, который вы создали, в нижнем дропдауне выберите Pinecone Retriever
, этот блок будет искать по базе данных нужную информацию.
4/ Embeddings -> OpenAI Embeddings — потребуется API-ключ OpenAI.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/600/524/b75/600524b7522a519b5c2d57542ad642f4.jpg)
Готово, можно пробовать спрашивать:
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/45f/623/921/45f6239210f30caedcd2eedb82350b46.jpg)
Кейс 4 — ассистент, который использует поисковую выдачу для ответов.
Используем Agents -> OpenAI Assistant. Для этого блока нужно добавить «личность» ассистента (поле Select Assistant) — имя и инструкцию каким образом ему отвечать.
Добавим блок Tools -> SERP API — с его помощью можно получить выдачу поисковых движков. Проще говоря, в чате вы получите ответы, основанные на информации из интернета. API-ключ для SERP будет доступен после регистрации, как и 100 бесплатных поисков.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/ac1/56c/1c6/ac156c1c628ecf419f63ad89b7772d45.jpg)
Инструмент SERP API готовый, а можно написать свой, на JS. Не буду останавливаться на этом, просто будьте в курсе, что такая возможность есть.
Marketplace.
У Flowise также есть Маркетплейс с готовыми чатфлоу и инструментами, который стабильно пополняется. Открываете любой интересный, кликаете Use template и заполняете обязательные поля:
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/262/079/00e/26207900eed11fac3b3e93d11765e618.jpg)
Например, готовый чатфлоу для генерации изображений.
Потребуется API-ключ для Replicate - облако, в котором можно запускать публичные модели.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/c4f/1c4/092/c4f1c4092e31ba124af7b320eea3444a.jpg)
На бесплатном GPT 3.5 получается не очень быстро, но работает.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/350/8b2/498/3508b24989cd9576669028d9439ce8b7.jpg)
Имейте в виду, Replicate через какое-то время попросит вас ввести данные карты.
Деплой Flowise в Render.
Встроить готовый чат-бот на сайт можно разными способами, они доступны с канваса.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/7df/490/378/7df49037871385c1d25a69c2816bd8dc.jpg)
Но сначала посмотрим как сделать чатфлоу доступным не только локально.
Создадим WebService в облаке при помощи сервиса Render. Он позволяет хостить и масштабировать сайты, микросервисы, веб-приложения в относительно простом и интуитивно понятном интерфейсе.
Сначала авторизуйтесь/зарегистрируйтесь на Github. Затем переходите в репозиторий Flowise и кликайте Fork. Таким образом мы создадим копию проекта и будем использовать эту копию для запуска веб-сервиса.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/a24/9e9/1ac/a249e91ac5d8e96942259ed499552994.jpg)
Выберите имя репозитория для своей копии, обязательно оставьте включённым бокс `Copy the main branch only` и кликайте `Create fork`.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/b67/c18/19a/b67c1819a26fc65ba2f2c8309d00564a.jpg)
Затем переходите в Render и авторизуйтесь/зарегистрируйтесь.
Важно! Render предлагает бесплатный тариф. Его особенность в том, что все ваши чатфлоу будут удаляться начисто каждый раз после перезагрузки сервера по любым причинам или в случае, если вы будете делать деплой. Для тестов подойдёт и бесплатное, а за быстрое, стабильное и предсказуемое придётся доплатить.
После авторизации создаём веб-сервис:
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/e0b/d82/1f3/e0bd821f30fc47ff715b237a0acb0411.jpg)
Создавать веб-сервис будем как раз из репозитория в Github, который мы сделали заранее. Кликайте Next.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/9b7/1fb/08c/9b71fb08cb6328d180b356a2a5a0c272.jpg)
Ваш аккаунт Github необходимо подключить к Render, используйте кнопку `Configure account` и авторизуйтесь.
После авторизации на Github вы увидите список своих репозиториев, в котором необходимо найти Flowise и кликнуть Connect
. Вас попросят указать несколько параметров:
1/ введите Name, например, Flowise.
2/ Runtime: выберите значение Node
.
3/ Instance Type, для тестов лучше Free.
4/ Кликните на Add environmental variable
и добавьте две переменные для имени пользователя и пароля: FLOWISE_USERNAME и FLOWISE_PASSWORD, придумайте им значения. Ваш веб-сервис вскоре будет доступен онлайн, и вы наверняка не хотите давать всем доступ в свой Flowise-дашборд.
Все остальные поля можно оставить как есть. Кликайте Create Web Service
.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/578/a13/b72/578a13b72b8f963092d745638983b301.jpg)
Потребуется несколько минут на то, чтобы Render скопировал себе код из репозитория, скомпилировал и запустил веб-сервис. Когда это случится, в консоли вы увидите сообщение `Your service is live`. C этого момента Flowise доступен по прямой ссылке, которую всегда можно найти в настройках веб-сервиса.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/521/4ca/7db/5214ca7db46aaba258b093c5f4567792.jpg)
Перенос чатфлоу на Render.
Чатфлоу, которые вы создали локально, можно перенести в ваш облачный Flowise на Render. Для этого в настройках найдите Export chatflow
, в папку с загрузками на вашей машине будет добавлен json-файл, который можно потом загрузить в облачный Flowise при помощи Load chatflow
.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/419/f4c/a99/419f4ca99db27cb0493eaa509e330c84.jpg)
Изменить внешний вид чата.
Когда вы готовы встраивать свой чат-бот на сайт, воспользуйтесь кнопкой в правом верхнем углу на канвасе. Варианты Embed и Share доступны только без авторизации, поэтому у вас в параметрах будет указано No authorization. Остальные варианты — это доступ по API, авторизация нужна.
Для простого варианта встраивания в HTML (Embed) ничего, кроме добавления в тег не требуется.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/357/4b7/7e6/3574b77e64f283bb7f9b37f487bbdec0.jpg)
Установив бокс Show Embed Chat Config перейдём к параметрам: в них вы найдёте параметры кнопки вызова чата, самого окна в развёрнутом состоянии, сообщения пользователя и даже плейсхолдера в строке ввода. Пробуйте и меняйте. Подобрать цвета можно тут, тут и ещё много где.
![](https://webcf.waybackmachine.org/web/20240311155047/https://habrastorage.org/getpro/habr/post_images/eed/e15/fb1/eede15fb101418c08a9597e753946e70.jpg)
В заключение.
Во многих компаниях стандартные офисные процессы уже официально включают в себя summarize, генерацию контента и прочую помощь AI. У кандидатов на собеседованиях уже спрашивают о том, как они используют возможности ChatGPT в работе и за её пределами.
Лично я пришёл к тому, что при помощи Flowise я смогу улучшить свой инструментарий, автоматизирую некоторые рутины. Возможно, Flowise и для вас окажется полезен. Он умеет гораздо больше, чем показано, и, возможно, я вернусь с кейсами посложнее.
Спасибо за внимание.