Flowise: доступ к AI без кода
Привет всем!
Сегодня хочу рассказать про 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/.
Способов установки несколько, этот простейший.
Ещё нам понадобится 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 и получаете на выходе результат в виде чата.
Conversation Chain потребует добавления ещё двух обязательных блоков: ChatModels → ChatOpenAI чтобы подключиться к OpenAI и Memory → Buffer Memory, чтобы хранить историю беседы.
Для ChatOpenA в поле Connect Credentials создайте новое подключение и добавьте сгенерированный вами ранее ключ. В имени модели можно оставить любое значение по умолчанию. Temperature — это индекс, который отображает насколько строго модель будет отвечать, по тексту (если ближе к нулю) или «с фантазией» (ближе к и больше 1), оставим значение 0.7.
В Buffer Memory можно всё оставить по умолчанию.
Если открыть Additional Parameters в Conversational Chain, то можно скорректировать поведение и личность бота.
Кейс 2 — работа с CSV.
Можно загрузить файл и сделать запрос, например: «какая информация в файле», «сделай саммари файла», «сколько уникальных значений в файле» или любой на ваш вкус.
Вытащим на канвас блок Agents → CSV-agent. Это агент, который будет отвечать на ваши вопросы, используя LLM и csv-файл, который вы приложите.
Подключим модель. Из категории LLM перетащите блок OpenAI.
В поле Connect Credentials необходимо создать новое подключение и добавить сгенерированный вами ранее ключ. В имени модели можно оставить любое значение по умолчанию.
Сгенерируйте файл *.csv и загрузите в агент. Можете воспользоваться готовым.
Не забудьте сохранить чатфлоу.
Сам чатфлоу и простых поисковых запросов:
Кейс 3 — чат-бот, который использует вашу информацию.
Например, о вашей компании.
Для теста можно сгенерировать текстовый файл, например, в формате вопрос-ответ. В этом может помочь первый созданный вами бот (для ленивых есть готовый пример).
Ещё нам понадобится векторное хранилище, в которое чат-бот поместит обработанный и упорядоченный набор векторов, которые будут построены из вашего контента.
Зарегистрируйтесь/авторизуйтесь на Pinecone и кликните Create new index
.
Потребуется заполнить несколько полей: имя индекса, поле Dimensions — впишите значение 1536, в бесплатной версии Cloud provider и Environment будут доступны в единственном экземпляре. Кликайте Create index
.
Нам также потребуется API-ключ, он найдётся на странице API-keys, которая доступна из меню.
После создания индекса, вы увидите его в списке. Значение поля environment нам далее пригодится.
Сделаем 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.
Теперь второй чатфлоу, он содержит поменьше блоков:
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.
Готово, можно пробовать спрашивать:
Кейс 4 — ассистент, который использует поисковую выдачу для ответов.
Используем Agents → OpenAI Assistant. Для этого блока нужно добавить «личность» ассистента (поле Select Assistant) — имя и инструкцию каким образом ему отвечать.
Добавим блок Tools → SERP API — с его помощью можно получить выдачу поисковых движков. Проще говоря, в чате вы получите ответы, основанные на информации из интернета. API-ключ для SERP будет доступен после регистрации, как и 100 бесплатных поисков.
Инструмент SERP API готовый, а можно написать свой, на JS. Не буду останавливаться на этом, просто будьте в курсе, что такая возможность есть.
Marketplace.
У Flowise также есть Маркетплейс с готовыми чатфлоу и инструментами, который стабильно пополняется. Открываете любой интересный, кликаете Use template и заполняете обязательные поля:
Например, готовый чатфлоу для генерации изображений.
Потребуется API-ключ для Replicate — облако, в котором можно запускать публичные модели.
На бесплатном GPT 3.5 получается не очень быстро, но работает.
Имейте в виду, Replicate через какое-то время попросит вас ввести данные карты.
Деплой Flowise в Render.
Встроить готовый чат-бот на сайт можно разными способами, они доступны с канваса.
Но сначала посмотрим как сделать чатфлоу доступным не только локально.
Создадим WebService в облаке при помощи сервиса Render. Он позволяет хостить и масштабировать сайты, микросервисы, веб-приложения в относительно простом и интуитивно понятном интерфейсе.
Сначала авторизуйтесь/зарегистрируйтесь на Github. Затем переходите в репозиторий Flowise и кликайте Fork. Таким образом мы создадим копию проекта и будем использовать эту копию для запуска веб-сервиса.
Выберите имя репозитория для своей копии, обязательно оставьте включённым бокс `Copy the main branch only` и кликайте `Create fork`.
Затем переходите в Render и авторизуйтесь/зарегистрируйтесь.
Важно! Render предлагает бесплатный тариф. Его особенность в том, что все ваши чатфлоу будут удаляться начисто каждый раз после перезагрузки сервера по любым причинам или в случае, если вы будете делать деплой. Для тестов подойдёт и бесплатное, а за быстрое, стабильное и предсказуемое придётся доплатить.
После авторизации создаём веб-сервис:
Создавать веб-сервис будем как раз из репозитория в Github, который мы сделали заранее. Кликайте Next.
Ваш аккаунт 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
.
Потребуется несколько минут на то, чтобы Render скопировал себе код из репозитория, скомпилировал и запустил веб-сервис. Когда это случится, в консоли вы увидите сообщение `Your service is live`. C этого момента Flowise доступен по прямой ссылке, которую всегда можно найти в настройках веб-сервиса.
Перенос чатфлоу на Render.
Чатфлоу, которые вы создали локально, можно перенести в ваш облачный Flowise на Render. Для этого в настройках найдите Export chatflow
, в папку с загрузками на вашей машине будет добавлен json-файл, который можно потом загрузить в облачный Flowise при помощи Load chatflow
.
Изменить внешний вид чата.
Когда вы готовы встраивать свой чат-бот на сайт, воспользуйтесь кнопкой в правом верхнем углу на канвасе. Варианты Embed и Share доступны только без авторизации, поэтому у вас в параметрах будет указано No authorization. Остальные варианты — это доступ по API, авторизация нужна.
Для простого варианта встраивания в HTML (Embed) ничего, кроме добавления в тег не требуется.
Установив бокс Show Embed Chat Config перейдём к параметрам: в них вы найдёте параметры кнопки вызова чата, самого окна в развёрнутом состоянии, сообщения пользователя и даже плейсхолдера в строке ввода. Пробуйте и меняйте. Подобрать цвета можно тут, тут и ещё много где.
В заключение.
Во многих компаниях стандартные офисные процессы уже официально включают в себя summarize, генерацию контента и прочую помощь AI. У кандидатов на собеседованиях уже спрашивают о том, как они используют возможности ChatGPT в работе и за её пределами.
Лично я пришёл к тому, что при помощи Flowise я смогу улучшить свой инструментарий, автоматизирую некоторые рутины. Возможно, Flowise и для вас окажется полезен. Он умеет гораздо больше, чем показано, и, возможно, я вернусь с кейсами посложнее.
Спасибо за внимание.