Obsidian + AI + Telegram Bot: пошаговый гайд по созданию Телеграм-бота на базе личных заметок в Obsidian

Obsidian + AI + Telegram Bot: пошаговый гайд по созданию Телеграм-бота на базе личных заметок в Obsidian

Айдимиров Айдимир Эльдарович

Телеграм: https://t.me/bim_koordinator

Телеграм Бот на Базе Obsidian Заметок

Идея «обучить» Telegram-бота разговаривать на основе наших корпоративных заметок родилась случайно — в переписке под постом Евгения Мишараева в Telegram-канале. Пост назывался «Почему лично мне не хватает Autodesk», и в комментариях развернулась дружелюбная дискуссия о том, как инженерам и BIM-специалистам в России живётся без привычного CAD-стека.

В какой-то момент Евгений задал мне два вопроса, которые и стали точкой отсчёта всего проекта:

1. «Не сталкивались ли вы с RAG-системами? Что-то вроде чатов, которые отвечают прямо из корпоративной базы знаний?»
2. «Хочу скормить ИИ Markdown-страницы (HTML / Obsidian), но не знаю, что лучше. Представляю себе локальную LLM через LM Studio, а вот как подтянуть туда базу — не понимаю 🙂».

Я сказал что сталкивался и сначала собрал прототип прямо в Obsidian, подключив плагин Smart Connections, который:

  1. Создаёт эмбеддинги заметок;
  2. Хранит их локально (Faiss под капотом);
  3. Запускает OpenAI или локальную модель через LM Studio.
Интерфейс Smart Connections в Obsidian: слева — заметки, справа — чат-окно для диалога с ИИ по содержимому Vault.

Такой «встроенный чат» работал, но только внутри Obsidian. Удобно ли это? Нам же хотелось, чтобы любой сотрудник мог спросить что-то с мобильного — в дороге, на объекте, на совещании — и быстро получить ответ из корпоративной «вики».

Как сделать Telegram бота который соединен с базой Obsidian?

Дальше в статье я подробно, шаг за шагом, покажу, как из идеи «давайте-ка спросим нашу Obsidian-базу через Telegram» вырастает настоящий рабочий сервис. Мы пройдём весь цикл:

Выбор стека и архитектуры — объясняем, почему именно:

- Flowise — визуальный конструктор RAG-цепочек,

- Obsidian Vault — база / источник знаний,

- OpenAI / локальная LLM — движок генерации ответов,

- python-telegram-bot — коммуникационный слой, Телеграм.

По дороге я честно опишу все затыки, через которые прошёл: несовместимые версии Node / npm, «пропавшие» порты Prompt в узлах ChatOpenAI, «Expecting value: line 1 column 1» от Telegram-бота и др. Для каждой проблемы приведу конкретное решение, а не «погуглите».

Следуйте шагам ниже, чтобы повторить этот проект.

Шаг 1: Выбор инструментов

Прежде чем писать код, определимся с целью бота и подходящими инструментами:

  • Идея: Бот в Telegram, который будет выполнять роль “второго мозга” – отвечать на вопросы, используя ваши собственные знания, сохраненные в виде заметок Obsidian. Вы пишете ему сообщение с вопросом, а он ищет ответ в ваших Markdown-записках и возвращает осмысленный ответ с помощью модели ИИ.
  • FlowiseAI: визуальная платформа для создания AI-агентов и цепочек LLM. В ней мы настроим обработку наших данных (загрузку файлов, разбивку текста, векторное хранилище и т.д.) и получим API-эндпоинт для обращения к созданному агенту . Flowise избавляет от необходимости писать код для логики RAG (Retrieval-Augmented Generation).
  • Obsidian: приложение для хранения и связи заметок (наш “второй мозг”). Наша база знаний – это папка с Markdown-файлами (Vault Obsidian). Flowise позволит подключить эту папку как источник данных.
  • Модель LLM: нужна для генерации ответов. Flowise поддерживает как локальные модели (например, через LM-Studio или Ollama ), так и API OpenAI. В этом туториале для простоты используем OpenAI GPT-3.5: это требует доступного ключа API OpenAI.
  • Python и Telegram Bot API: используем python-telegram-bot – популярную библиотеку для написания ботов. Она упростит прослушивание сообщений и отправку ответов. Бот будет на Python 3.
  • Poetry: инструмент для управления зависимостями и виртуальным окружением. Мы создадим проект с помощью Poetry, чтобы легко установить библиотеки и управлять переменными окружения . Также убедитесь, что установлен Python 3 (рекомендуется не ниже 3.10).
Установить Python 3+ можно перейдя по ссылке: https://www.python.org/downloads/

Подготовьте API-ключи: Заранее получите необходимые ключи:

  • Создайте бота через BotFather и получите токен Telegram (например, 123456:ABC-...).
  • Получите OpenAI API Key из своего кабинета OpenAI (можно использовать любую ЛЛМку - DeepSeek, Claude, Grok или вообще локальную - нужен только ключ и название модели.
  • Cгенерируйте API-ключ Flowise, после установки, запуска и регистрации Flowise у вас появится портал API Keys в меню Flowise. Но сначала установим и запустим Flowise.

Шаг 2: Установка и запуск Flowise

Начнем с установки Flowise – это Node.js приложение. Требуется Node.js и npm. Если у вас они не установлены, скачайте с официального сайта Node.js (https://nodejs.org/).

Node.js поставляется вместе с менеджером пакетов npm (Node Package Manager), поэтому достаточно установить сам Node.js — npm появится автоматически.

Проверка установки

После установки выполните проверку:

node -v   # должен вывести версию Node.js, например v22.16.0
npm  -v   # должен вывести версию npm, например 10.8.2

Если обе версии отображаются без ошибок — установка прошла успешно, можно переходить к следующему шагу: установке и запуску Flowise.

Установка Flowise

1. Быстрый старт через npm (локально)

Перейдите к установке в контейнере докер если через npm не сработает.

# Устанавливаем Flowise глобально
npm install -g flowise  

# Запускаем приложение
npx flowise start

После запуска в терминале появится сообщение, что Flowise слушает порт 3000.

Откройте браузер и перейдите по адресу http://localhost:3000 — должна открыться панель управления Flowise.

2. Установка в контейнере Docker (рекомендуется)

2.1 Docker Compose

  1. Установите Docker Desktop: https://www.docker.com/products/docker-desktop
  2. Клонируйте репозиторий Flowise:
gh repo clone FlowiseAI/Flowise
  1. Перейдите в каталог docker в корне проекта.
  2. Скопируйте файл .env.example, переименуйте копию в .env и при необходимости отредактируйте переменные.
  3. Запустите:
docker compose up -d

2.2 Чистый Docker Image

# Cобираем образ
docker build --no-cache -t flowise .

# Запускаем контейнер
docker run -d --name flowise -p 3000:3000 flowise

# Останавливаем контейнер
docker stop flowise

3. Проверка работы

Откройте http://localhost:3000. Если видите приветственный экран Flowise — установка прошла успешно и API доступно.

При ошибках убедитесь, что:

  • установлен Node.js (для локального запуска);
  • порт 3000 свободен;
  • контейнер/процесс действительно запущен.

4. Полезно

Посмотрите раздел «❗️Частые ошибки при установке Flowise и их решения» в конце статьи — там разобраны самые типовые проблемы.

Шаг 3. Создание чат-агента в Flowise на основе базы знаний Obsidian

Retrieval-Augmented Generation (RAG) — это связка «поиск релевантных фрагментов ➜ генерация ответа с их учётом». В Flowise она собирается в виде «чатфлоу» (chatflow) — визуальной схемы из узлов.

1. Подготовьте базу знаний

  • Соберите заметки Obsidian в одну папку-хранилище (Vault). Подойдут любые файлы .md; вложенные каталоги Flowise проиндексирует сам. Если вы уже пользуетесь Obsidian не нужно ничего менять, нужно только скопировать путь к этой папке.
  • В примере путь к моему Vault — /Users/aydimir95/Desktop/Test. Замените на свой.

2. Создайте новый chatflow

  1. Откройте веб-интерфейс Flowise, пройдите локальную регистрацию — все введённые данные остаются только на вашем компьютере и никуда не отправляются — затем нажмите New Chatflow.
  2. Дайте потоку понятное имя, например ChatOpenAI.
  3. На появившемся пустом холсте будем добавлять узлы, формируя RAG-цепочку.

Формирование RAG-цепочки узлами ChatFlow:

3. Узел загрузки документов

  1. На боковой панели Nodes перейдите в категорию LangChain → Document Loader и нажмите “+”.
  2. Перетащите узел Folder with Files на холст.

В настройках узла: 

  1. Recursive — поставьте галочку, чтобы обходить вложенные каталоги.
  2. Path — укажите путь к вашему Obsidian Vault. Flowise автоматически соберёт все *.md-файлы.
  3. Output — выберите Document.
Загрузка Markdown-файлов из папки Vault с рекурсивным обходом вложенных каталогов.

После этого узел будет загружать и передавать в чатфлоу все Markdown-заметки из указанной папки.

4. Разбивка текста на фрагменты

Чтобы поиск работал точнее, длинные заметки стоит разрезать на небольшие, частично перекрывающиеся куски.
  1. На панели Nodes найдите Markdown Text Splitter и перетащите его на холст.
  2. В параметрах укажите: 
  3. Chunk size — 300 (максимальная длина фрагмента в символах);
  4. Overlap — 20 (насколько следующие куски «заходят» на предыдущий). 
  5. Это даст блоки ≈ 300 символов, при этом важные абзацы не разорвутся.
  6. Соедините узлы: вытяните стрелку из выхода Markdown Text Splitter в вход Folder with Files.
Разделение текста из Markdown-файлов на фрагменты: задаются размер чанка и перекрытие между ними.

Теперь каждая загруженная Markdown-заметка сначала попадёт в сплиттер, а затем уже в следующие этапы пайплайна.

5. Эмбеддинги и векторное хранилище

Дальше нужно научить Flowise «понимать» текст: превратить каждый чанк в вектор и сложить эти векторы в быстрый поиск — Faiss. Для этого добавим два узла.


5.1 OpenAI Embeddings

  1. Перетащите узел OpenAI Embeddings на холст.
  2. В его настройках: 
  3. Model — выберите, например, text-embedding-3-large (любая подходящая модель OpenAI).
  4. Connect Credential → Create New: 
  5. Credential Name — произвольное, например Flowise.
  6. API Key — вставьте свой ключ с https://platform.openai.com/api-keys.
  7. (Опционально) Если хотите использовать локальный эмбеддер через LM Studio, выберите узел Nomic или другой локальный вариант и укажите Base Path до модели. В этом примере остаёмся на OpenAI, потому что ключ уже есть.

5.2 Faiss (Vector Store)

  1. Перетащите узел Faiss.
  2. Соедините стрелками: 
  3. Folder with Files → Faiss (документы).
  4. OpenAI Embeddings → Faiss (векторы).
  5. В настройках Faiss в поле Base Path to Load введите следующую директорию:
./flowise_data/faiss_index
Создание эмбеддингов с помощью модели OpenAI для преобразования текста во векторное представление.

После сохранения и запуска Upsert узел Faiss создаст индекс и сохранит его по указанному пути. Теперь Semantic Search готов: Retriever будет искать близкие векторы, а LLM — формировать ответы.

6. Conversational Retrieval QA — «сердце» чат-агента

Этот узел объединяет retriever (поиск нужных фрагментов в Faiss-индексе) и LLM (генерацию ответа). Он находится в разделе LangChain → Chains.

6.1 Добавьте на холст узел 

Conversational Retrieval QA Chain

  1. Retriever: сразу соедините выход Faiss c входом Retriever — так Chain будет знать, где искать документы.
  2. Chat Model: нужен отдельный узел ChatOpenAI. Перетащите его на холст и настро́йте: 
  3. Connect Credential → выберите ранее созданный ключ (например Flowise).
  4. Model Name — gpt-3.5-turbo или, если доступен, gpt-4o.
  5. Temperature — 0.9 (больше креативности; 0 – точные ответы).
  6. Allow Image Upload / Image Resolution — включайте по необходимости.
  7. Additional Parameters → Reasoning Effort: High, чтобы модель тщательнее обдумывала ответы.
  8. Соедините выход ChatOpenAI с соответствующим входом Conversational Retrieval QA.

6.2 (Опция) Память диалога

Если нужно, чтобы агент «помнил» предыдущие сообщения, добавьте узел InMemory Cache и подключите его во вход Cache узла ChatOpenAI.

6.3 (Опция) Собственные промпты

В настройках Conversational Retrieval QA доступны поля Rephrase Prompt и Response Prompt. Здесь можно:

  • заставить ИИ отвечать только на основе найденных заметок;
  • задать тон ответа (например, обращаться к себе как «Second Brain»);
  • запретить «выдумывать» факты при отсутствии контекста.

Стандартные значения работают из-коробки, но кастомные инструкции дают больше контроля.

После этих шагов цепочка выглядит так же, как мы описывали ранее; мы лишь добавили завершающий слой «поиск → ответ». Теперь можно нажать Save, открыть тестовую панель справа и задать вопрос: Flowise найдёт фрагменты в Obsidian-Vault и сгенерирует осмысленный ответ, учитывая историю вашего диалога.

7. Сохраните поток: 

Проверьте связи между узлами. Конечная схема должна последовательно соединять, как на скриншоте:

Схема чатфлоу в Flowise: полная RAG-цепочка от загрузки Markdown-файлов до генерации ответа через GPT, с сохранением памяти и возможностью API-запросов.

Сохраните изменения:

Теперь нажмите кнопку Сохранить (в правом верхнем углу Flowise -> Save Chatflow). Это развернет ваш чатфлоу для использования.

8. Индексация данных (Upsert)

Перед тем как бот сможет отвечать, нужно «заправить» векторную базу: преобразовать все загруженные фрагменты в эмбеддинги и записать их в Faiss.

  1. На верхней панели чатфлоу нажмите Upsert Vector Database (иконка с коробкой и стрелкой вверх, расположена рядом с кнопкой запуска чата).
  2. Flowise выполнит цепочку целиком: 
  3. Folder with Files читает Markdown-файлы.
  4. Markdown Text Splitter режет их на чанки.
  5. OpenAI Embeddings превращает чанки в векторы.
  6. Faiss сохраняет векторы в индекс.
  7. Следите за логами внизу экрана: там видно прогресс и сообщение “Finished upserting” после завершения. 
  8. Время зависит от объёма Vault — пара секунд для десятков заметок и до нескольких минут для больших баз._
  9. Добавили новые файлы или изменили существующие? Просто нажмите Upsert ещё раз — Flowise обновит индекс.

Теперь агент готов. Нажмите значок чата (правый верхний угол холста), задайте вопрос, ответ на который есть в ваших заметках, и убедитесь, что бот цитирует именно вашу базу знаний.

Шаг 4: Настройка окружения для Телеграм Бота

Важный этап, чтобы впоследствии удобно запускать и отлаживать код.

0. Установка Poetry

Poetry — менеджер, который одновременно:

  • создаёт виртуальное окружение (аналог venv);
  • ведёт файл зависимостей (pyproject.toml);
  • фиксирует версии в poetry.lock, чтобы «у меня работает» превратилось в «у всех работает».

Для начала нужно установить Poetry — менеджер зависимостей и виртуальных окружений для Python.

На macOS или Linux выполните в терминале следующую команду:

curl -sSL https://install.python-poetry.org | python3 -

Windows (PowerShell)

Скопируйте ту же команду, предварительно убедившись, что python доступен в PATH:

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

После установки проверьте версию Poetry командой:

poetry --version

Увидели что-то вроде Poetry version 1.8.3 — значит всё прошло успешно. Если команда не найдена, перезапустите терминал или добавьте в переменную PATH:

macOS / Linux

$HOME/.local/bin (Linux/macOS)  

Windows (PowerShell)

%APPDATA%\Python\Scripts (Windows) 

Что дальше?

  1. В корне проекта выполните poetry init (или poetry new bot, если хотите сразу каркас).
  2. Добавьте зависимости:
poetry add python-telegram-bot requests
  1. Активируйте окружение:
poetry shell

1. Создание нового Python-проекта c Poetry — пошагово

Шаг 1. Откройте IDE или редактор

  • Используйте удобную среду — Visual Studio Code, PyCharm или любой другой редактор.
  • В VS Code откройте папку проекта: встроенный терминал пригодится для всех команд.

Шаг 2. Перейдите в каталог, где будет храниться бот

cd /путь/к/папке            # пример: cd ~/Flowise

Если каталога ещё нет — создайте его командой mkdir, затем зайдите внутрь через "cd":

mkdir Flowise               # создать папку: Flowise
cd Flowise                  # зайти в папку: cd ~/Flowise

Шаг 3. Сгенерируйте каркас проекта через Poetry

poetry new flowise_bot

Poetry создаст папку flowise_bot со стандартной структурой:

flowise_bot/
├── flowise_bot/      # ваш исходный код
├── tests/            # тесты
├── pyproject.toml    # конфигурация проекта и зависимостей
├── README.rst
└── .gitignore

Перейдите в только что созданный каталог:

cd flowise_bot

pyproject.toml уже готов — в нём хранится всё, что нужно Poetry для установки пакетов и управления виртуальным окружением.

2. Устанавливаем зависимости

Нам понадобятся четыре основных пакета:

  • python-telegram-bot — взаимодействие с Telegram-API;
  • requests — синхронные HTTP-запросы к Flowise (если предпочитаете асинхронный стиль, можно заменить на aiohttp);
  • python-dotenv — загрузка переменных окружения из файла .env;
  • (необязательно) flowise SDK — собственный клиент от Flowise, но в этом руководстве мы будем отправлять запросы напрямую, чтобы видеть «под капотом», что происходит.

Установите всё одной командой:

poetry add python-telegram-bot python-dotenv requests
  • На заметку: версии python-telegram-bot 20 и выше требуют Python ≥ 3.10.
  • Если нужно зафиксировать минимальную версию интерпретатора, добавьте в pyproject.toml строку
  • python = "^3.10".

Poetry скачает пакеты и автоматически создаст для проекта виртуальное окружение.

3. Настраиваем переменные окружения

Создайте в корне проекта файл .env и добавьте туда конфиденциальные данные:

TELEGRAM_TOKEN=<токен бота от BotFather>
FLOWISE_HOST=http://localhost:3000
FLOWISE_CHATFLOW_ID=UUID вашего chatflow
FLOWISE_API_KEY=API-ключ Flowise
  • TELEGRAM_TOKEN — обязателен всегда.
  • FLOWISE_HOST — адрес сервера Flowise; по умолчанию http://localhost:3000.
  • FLOWISE_CHATFLOW_ID — UUID вашего Chatflow (виден в URL или во вкладке Settings).
  • FLOWISE_API_KEY — нужен только в Flowise ≥ 1.0, если включена авторизация (Settings → API Keys).

Почему именно .env? Так токены не попадают в исходники, их легко менять под разные окружения и безопасно хранить локально.

Чтобы избежать случайной загрузки секретов в репозиторий, добавьте файл .env в .gitignore.

Это можно сделать прямо из терминала вашей IDE командой:
echo ".env" > .gitignore

На этом этапе зависимости установлены, окружение сконфигурировано — можно переходить к написанию кода бота.

Шаг 5: Написание кода Telegram-бота

Перейдем непосредственно к коду.

Начало кода:

  1. Создаем файл под названием "bot.py" в вашем Visual Studio или другом IDE

Полный код бот-скрипта (bot.py):

# flowise_telegram/bot.py

import os
import logging
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters
import httpx

# 1) Загрузка переменных окружения из файла .env
load_dotenv()
TELEGRAM_TOKEN  = os.getenv("TELEGRAM_TOKEN")
FLOWISE_URL     = os.getenv("FLOWISE_URL", "").rstrip("/")   # например "http://localhost:3000"
FLOWISE_API_KEY = os.getenv("FLOWISE_API_KEY")
CHATFLOW_ID     = os.getenv("CHATFLOW_ID")

# 2) Базовая настройка логирования
logging.basicConfig(
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    level=logging.INFO
)
logger = logging.getLogger(__name__)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """
    Обработчик команды /start: приветствует пользователя.
    """
    user = update.effective_user
    await update.message.reply_html(
        rf"Привет {user.mention_html()}! Отправь мне любой вопрос, и я обращусь к твоим заметкам Obsidian через Flowise. 🙂"
    )

async def chat_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """
    Обработчик текстовых сообщений: пересылает вопрос пользователя в Flowise и отвечает.
    """
    question = update.message.text.strip()
    if not question:
        return

    # Собираем URL для запроса к Flowise Prediction API
    endpoint = f"{FLOWISE_URL}/api/v1/prediction/{CHATFLOW_ID}"
    payload = {"question": question}
    headers = {
        "Content-Type": "application/json",
        "x-api-key": FLOWISE_API_KEY or ""
    }

    try:
        async with httpx.AsyncClient() as client:
            resp = await client.post(endpoint, json=payload, headers=headers, timeout=30.0)
            resp.raise_for_status()
            data = resp.json()
        # Пытаемся извлечь ответ из возможных форматов JSON
        nested = data.get("data") or {}
        answer = (
            nested.get("text")
            or nested.get("answer")
            or data.get("text")
            or data.get("answer")
            or data.get("response")
        )
        if not answer:
            answer = "❌ Flowise вернул пустой ответ."
    except httpx.HTTPStatusError as hx:
        status = hx.response.status_code
        body = hx.response.text
        logger.error(f"Flowise вернул HTTP {status}: {body}")
        if status == 401:
            answer = "🚨 Ошибка авторизации: проверьте FLOWISE_API_KEY и CHATFLOW_ID."
        else:
            answer = f"🚨 Ошибка Flowise {status}: {body}"
    except Exception as e:
        logger.error(f"Ошибка при обращении к Flowise: {e}")
        answer = "🚨 Не удалось связаться с Flowise. Попробуйте позже."

    # Отправляем ответ пользователю
    await update.message.reply_text(answer)

def main():
    """
    Инициализация и запуск Telegram-бота.
    """
    if not TELEGRAM_TOKEN or not FLOWISE_URL or not CHATFLOW_ID:
        logger.error("Отсутствуют обязательные переменные окружения. Проверьте файл .env.")
        return

    application = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
    application.add_handler(CommandHandler("start", start))
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chat_handler))

    logger.info("Бот запущен. Ожидание сообщений...")
    application.run_polling()

if __name__ == "__main__":
    main()

Код довольно компактный.

Этот бот написан в асинхронном стиле, то есть бот не «застревает» в ожидании ответа от сервера, а умеет выполнять несколько дел параллельно и быть более отзывчивым.

Шаг 6: Запуск и тестирование бота

Настало время запустить бота и посмотреть, как он отвечает.

1. Запуск бота: 

Убедитесь, что Flowise все еще запущен и доступен на том хосте/порту, который вы указали. Активируйте виртуальное окружение Poetry, если оно не активно:

source $(poetry env info --path)/bin/activate

и выполните:

python bot.py

В консоли появится сообщение "Бот запущен. Ожидание сообщений...". Бот подключился к Telegram. Теперь откройте приложение Telegram, найдите своего бота (через его юзернейм, указанным при создании) и отправьте любое сообщение.

2. Тест диалога: 

Напишите боту запрос, ответ на который точно содержится в ваших Obsidian заметках. Например: “Какие проекты у меня запланированы?” – если у вас есть заметка с планами. Бот должен некоторое время “думать” (появится статус “typing…”) и затем ответить текстом, извлекая факты из заметок.

Ответ бота в Telegram: запрос к базе Obsidian заметок через Flowise, с генерацией ответа и ссылкой на релевантные записи в Obsidian.

Если ответ пришел – поздравляю, у вас работает AI-собеседник на базе ваших данных! Он будет отвечать на любые ваши вопросы, отправляя их через Flowise агенту, настроенному на работу с вашей базой знаний или "Вторым Мозгом".

3. Как остановить сервисы

  • Бот — нажмите Ctrl + C в терминале, где он запущен.
  • Flowise — то же самое: Ctrl + C в его окне или закройте вкладку/процесс. 
  • если работает в Docker — введите docker stop flowise или остановите контейнер через интерфейс Docker Desktop.

Все зависимости изолированы в poetry-окружении, так что после остановки ничего лишнего в системе не остаётся.

Шаг 7. Куда развивать проект дальше

  • Наведи порядок в коде.
  • Перенеси логику работы c Flowise в flowise_client.py, настройки ‒ в config.py, обработчики сообщений ‒ в bot.py. Чем крупнее проект, тем важнее делить его на модули.
  • Храни секреты безопасно.
  • В разработке удобно использовать .env, а в продакшене — переменные окружения или секрет-хранилища (Docker Secrets, Vault, etc.). Никогда не коммить токены.
  • Проще запускать через Poetry.
  • В pyproject.toml добавь:
[tool.poetry.scripts]
run-bot = "bot:main"

Теперь бот стартует командой poetry run run-bot.

  • Больше логов — меньше боли.
  • Логируй входные вопросы, ответы AI и ошибки в файл. Оберни вызов ask_flowise в try/except, чтобы бот не падал из-за одной неудачи.
  • Добавь память диалога.
  • Сохраняй sessionId (или history) для каждого пользователя Telegram и передавай его в Flowise — бот будет помнить контекст.
  • Используй возможности Telegram.
  • Отправляй форматированный Markdown, кликабельные ссылки и картинки, если они есть в ответе Flowise.
  • Разверни бот и Flowise на сервере.
  • Самый простой путь — Docker-контейнеры и docker compose. Запусти их как сервисы или под Supervisor / systemd.
  • Веди код под Git.
  • Репозиторий помогает откатываться, обсуждать изменения и делиться проектом.

Экспериментируй с настройками Flowise, улучшай промпты и расширяй функциональность — твой бот станет полезнее и умнее.

❗️Частые ошибки при установке Flowise и их решения

🖥 macOS

  1. Puppeteer пытается скачать Chromium и установка рвётся
  2. Причина: зависимость Puppeteer по умолчанию грузит браузер, который на сервере не нужен.
  3. Исправление: перед установкой запретите скачивание и повторите команду.
export PUPPETEER_SKIP_DOWNLOAD=1
npm install -g flowise
  1. EACCES / EPERM: нет прав на /usr/local/...
  2. Причина: npm пытается писать в каталоги, которые принадлежат root.
  3. Исправление: один раз смените владельца, затем ставьте пакеты обычным пользователем.
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib/node_modules
npm install -g flowise

🖥 Windows

node-gyp ругается на отсутствие Visual C++ Build Tools

  1. Причина: некоторые зависимости требуют компиляции C/C++.
  2. Исправление: 
  3. Поставьте Build Tools for Visual Studio 2022 (или саму VS 2022 Community).
  4. В установщике Visual Studio отметьте нагрузку Desktop development with C++.
  5. Перезапустите терминал и повторите:
npm install -g flowise.

Сообщение «OMG CMake is not installed»

  1. Причина: пакет couchbase не находит cmake в PATH.
  2. Исправление (быстрый способ через Chocolatey, админ-PowerShell):
choco install cmake --installargs '"ADD_CMAKE_TO_PATH=System"' -y

Flowise установлен, но flowise --version падает с MODULE_NOT_FOUND

  1. Причина: предыдущая установка прервалась, остались «обломки».
  2. Исправление: 
  3. Удалите остатки пакета и ярлыков:
rm "$env:APPDATA\npm\node_modules\flowise" -Recurse -Force
del "$env:APPDATA\npm\flowise*" -Force -ErrorAction SilentlyContinue

2. Очистите кэш npm:

npm cache clean --force

3. Переустановите с «безопасными» флагами:

npm install -g flowise --unsafe-perm --legacy-peer-deps


Финальная проверка

flowise start   # или npx flowise start

В терминале должна появиться строка:

[INFO]: ⚡️ [server]: Flowise Server is listening at :3000

Если по адресу http://localhost:3000 открывается интерфейс Flowise, установка прошла успешно.


Удачи 🙌


Автор:

Айдимиров Айдимир Эльдарович 

Генеральный директор 

ООО “Координатор"

Телеграм: https://t.me/bim_koordinator




Report Page