# Визуальный AI-конструктор Langflow

## Обзор

[Langflow](https://github.com/langflow-ai/langflow) — это открытая платформа с низким порогом кода для создания AI-приложений с помощью визуального интерфейса перетаскивания. С более чем 55 тыс. звёзд на GitHub и быстро растущим сообществом она стала одним из основных инструментов для прототипирования и развёртывания рабочих процессов на базе больших языковых моделей без написания сложного шаблонного кода.

Langflow построен поверх LangChain и предоставляет графический редактор, где вы можете соединять компоненты — LLM, векторные хранилища, загрузчики документов, ретриверы, агентов, инструменты — рисуя линии между узлами. Полученный конвейер можно экспортировать как конечную точку API, поделиться как шаблоном или встроить в ваше приложение.

**Ключевые возможности:**

* **Визуальный конструктор RAG** — Подключайте загрузчики документов → эмбеддинги → векторные хранилища → ретриверы за считанные минуты
* **Многопроцессные (multi-agent) рабочие процессы** — Сцепляйте несколько AI-агентов с памятью, инструментами и логикой принятия решений
* **Интеграция с LangChain** — Доступ к полной экосистеме LangChain через узлы UI
* **Маркетплейс компонентов** — Компоненты, внесённые сообществом для десятков сервисов
* **API-first** — Каждый поток автоматически генерирует REST API-эндпоинт
* **Память и состояние** — Встроенная память диалогов, управление сессиями

**Почему Clore.ai для Langflow?**

Требования Langflow к вычислительным ресурсам минимальны — это Python-веб-сервер, обрабатывающий оркестрацию рабочих процессов. Тем не менее Clore.ai открывает мощные сценарии использования:

* **Самохостинг эмбеддингов** — Запускайте локальные модели эмбеддингов (nomic-embed, BGE) на GPU для быстрой бесплатной генерации векторов
* **Локальные LLM-бэкенды** — Подключайте Langflow к Ollama или vLLM, запущенным на том же сервере
* **Приватные конвейеры данных** — Обрабатывайте чувствительные документы без отправки данных внешним API
* **Оптимизация затрат** — Заменяйте дорогостоящие вызовы OpenAI для эмбеддингов на бесплатный локальный вывод
* **Постоянные рабочие процессы** — Долгоживущие потоки на выделенных серверах (в отличие от эфемерных облачных функций)

***

## Требования

Сам Langflow лёгкий и основан на CPU. GPU опционален, но даёт возможность бесплатного локального вывода LLM/эмбеддингов.

| Конфигурация                             | GPU          | VRAM  | ОЗУ   | Хранилище | Оцениваемая цена |
| ---------------------------------------- | ------------ | ----- | ----- | --------- | ---------------- |
| **Только Langflow (бекенды API)**        | Не требуется | —     | 4 ГБ  | 10 ГБ     | ≈ $0.03–0.08/ч   |
| **+ Локальные эмбеддинги (nomic-embed)** | RTX 3090     | 24 ГБ | 8 ГБ  | 20 ГБ     | ≈ $0.20/ч        |
| **+ Ollama (Llama 3.1 8B)**              | RTX 3090     | 24 ГБ | 16 ГБ | 40 ГБ     | ≈ $0.20/ч        |
| **+ Ollama (Qwen2.5 32B)**               | RTX 4090     | 24 ГБ | 32 ГБ | 60 ГБ     | ≈ $0.35/ч        |
| **+ vLLM (производственный RAG)**        | A100 80GB    | 80 ГБ | 64 ГБ | 100 ГБ    | ≈ $1.10/ч        |

> Для сравнения опций GPU на Clore.ai смотрите [Руководство по сравнению GPU](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md).

**Требования к ПО на сервере Clore.ai:**

* Docker Engine (предустановлен на всех образах Clore.ai)
* NVIDIA Container Toolkit (предустановлен на GPU-образах, требуется только для локальных LLM)
* 10+ ГБ свободного места на диске для образа Langflow и данных потоков
* Исходящий доступ в интернет (для загрузки Docker-образов и обращения к внешним API)

***

## Быстрый старт

### Шаг 1: Подключитесь к вашему серверу Clore.ai

Забронируйте сервер на [маркетплейсе Clore.ai](https://clore.ai). Для использования только Langflow подойдёт любой сервер с ≥4 ГБ RAM. Подключитесь через SSH:

```bash
ssh root@<server-ip> -p <ssh-port>
```

### Шаг 2: Запустите Langflow с помощью Docker

Самое простое развёртывание — одна команда:

```bash
docker run -d \
  --name langflow \
  --restart unless-stopped \
  -p 7860:7860 \
  langflowai/langflow:latest
```

Подождите \~30–60 секунд для запуска, затем откройте по адресу `http://<server-ip>:7860`

### Шаг 3: Откройте порт 7860 на Clore.ai

В панели Clore.ai перейдите к вашему серверу → раздел «Порты» → убедитесь, что `7860` маппируется. Если вы используете пользовательский шаблон, добавьте `7860:7860` в конфигурацию портов перед запуском сервера.

### Шаг 4: Первый запуск

При первом посещении Langflow:

1. Покажет приветственный экран и предложит создать аккаунт (или пропустить)
2. Предложит набор стартовых шаблонов (RAG, чат-бот, агент)
3. Откроет визуальный редактор канвы

Вы готовы создать свой первый поток!

***

## Конфигурация

### Постоянное хранение данных

По умолчанию Langflow хранит потоки и данные внутри контейнера. Примонтируйте том, чтобы сохранять данные при перезапусках:

```bash
mkdir -p /opt/langflow/data

docker run -d \
  --name langflow \
  --restart unless-stopped \
  -p 7860:7860 \
  -v /opt/langflow/data:/app/langflow \
  -e LANGFLOW_DATABASE_URL=sqlite:////app/langflow/langflow.db \
  langflowai/langflow:latest
```

### Справочник переменных окружения

```bash
docker run -d \
  --name langflow \
  --restart unless-stopped \
  -p 7860:7860 \
  -v /opt/langflow/data:/app/langflow \
  -e LANGFLOW_HOST=0.0.0.0 \
  -e LANGFLOW_PORT=7860 \
  -e LANGFLOW_DATABASE_URL=sqlite:////app/langflow/langflow.db \
  -e LANGFLOW_SECRET_KEY=your-secret-key-here \
  -e LANGFLOW_AUTO_LOGIN=false \
  -e LANGFLOW_SUPERUSER=admin \
  -e LANGFLOW_SUPERUSER_PASSWORD=your-password \
  -e LANGFLOW_WORKERS=2 \
  -e LANGFLOW_LOG_LEVEL=info \
  langflowai/langflow:latest
```

| Переменная                    | Описание                                  | По умолчанию    |
| ----------------------------- | ----------------------------------------- | --------------- |
| `LANGFLOW_HOST`               | Адрес привязки                            | `0.0.0.0`       |
| `LANGFLOW_PORT`               | Порт веб-сервера                          | `7860`          |
| `LANGFLOW_DATABASE_URL`       | Строка подключения к базе данных          | SQLite в памяти |
| `LANGFLOW_SECRET_KEY`         | Секрет сессии (установите для продакшена) | Случайный       |
| `LANGFLOW_AUTO_LOGIN`         | Пропустить экран входа                    | `true`          |
| `LANGFLOW_SUPERUSER`          | Имя администратора                        | `admin`         |
| `LANGFLOW_SUPERUSER_PASSWORD` | Пароль администратора                     | —               |
| `LANGFLOW_WORKERS`            | Количество API-воркеров                   | `1`             |
| `LANGFLOW_LOG_LEVEL`          | Уровень логирования                       | `critical`      |
| `OPENAI_API_KEY`              | Предварительно загрузить ключ OpenAI      | —               |

### Использование PostgreSQL (Продакшен)

Для многопользовательских или продакшен-развёртываний используйте PostgreSQL вместо SQLite:

```bash
# Запустить PostgreSQL
docker run -d \
  --name langflow-db \
  --restart unless-stopped \
  -e POSTGRES_USER=langflow \
  -e POSTGRES_PASSWORD=langflow-secret \
  -e POSTGRES_DB=langflow \
  -v langflow-pgdata:/var/lib/postgresql/data \
  postgres:16-alpine

# Запустить Langflow с бэкендом PostgreSQL
docker run -d \
  --name langflow \
  --restart unless-stopped \
  --link langflow-db:db \
  -p 7860:7860 \
  -v /opt/langflow/data:/app/langflow \
  -e LANGFLOW_DATABASE_URL=postgresql://langflow:langflow-secret@db:5432/langflow \
  -e LANGFLOW_SECRET_KEY=$(openssl rand -hex 32) \
  -e LANGFLOW_AUTO_LOGIN=false \
  -e LANGFLOW_SUPERUSER=admin \
  -e LANGFLOW_SUPERUSER_PASSWORD=changeme \
  langflowai/langflow:latest
```

### Docker Compose (полный стек)

Для полноценной настройки с PostgreSQL и обратным прокси Nginx:

```yaml
# /opt/langflow/docker-compose.yml
version: "3.9"

services:
  langflow:
    image: langflowai/langflow:latest
    restart: unless-stopped
    ports:
      - "7860:7860"
    environment:
      - LANGFLOW_DATABASE_URL=postgresql://langflow:secret@db:5432/langflow
      - LANGFLOW_SECRET_KEY=${SECRET_KEY:-changeme}
      - LANGFLOW_AUTO_LOGIN=false
      - LANGFLOW_SUPERUSER=admin
      - LANGFLOW_SUPERUSER_PASSWORD=${ADMIN_PASSWORD:-changeme}
      - LANGFLOW_WORKERS=2
    volumes:
      - langflow-data:/app/langflow
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=langflow
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=langflow
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U langflow"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  langflow-data:
  pgdata:
```

```bash
cd /opt/langflow
SECRET_KEY=$(openssl rand -hex 32) ADMIN_PASSWORD=yourpassword docker compose up -d
```

### Фиксация конкретной версии

Для воспроизводимых развёртываний зафиксируйте конкретную версию:

```bash
# Список доступных версий: https://hub.docker.com/r/langflowai/langflow/tags
docker run -d \
  --name langflow \
  -p 7860:7860 \
  langflowai/langflow:1.1.4
```

***

## Ускорение с помощью GPU (интеграция локальных моделей)

Сам Langflow работает на CPU, но подключение его к локальным сервисам с поддержкой GPU на том же сервере Clore.ai даёт бесплатный и приватный вывод.

### Подключение Langflow к Ollama

```bash
# Шаг 1: Запустить Ollama с GPU
docker run -d \
  --name ollama \
  --gpus all \
  --restart unless-stopped \
  -p 11434:11434 \
  -v ollama-models:/root/.ollama \
  ollama/ollama:latest

# Шаг 2: Загрузить модели для разных сценариев
docker exec ollama ollama pull llama3.1:8b          # Общий чат
docker exec ollama ollama pull nomic-embed-text     # Эмбеддинги для RAG
docker exec ollama ollama pull qwen2.5-coder:7b    # Генерация кода

# Шаг 3: Запустить Langflow с доступом к сети Ollama
docker run -d \
  --name langflow \
  --restart unless-stopped \
  -p 7860:7860 \
  -v /opt/langflow/data:/app/langflow \
  --add-host host.docker.internal:host-gateway \
  langflowai/langflow:latest
```

В интерфейсе Langflow используйте компонент **Ollama** с параметрами:

* Базовый URL: `http://host.docker.internal:11434`
* Модель: `llama3.1:8b`

Для эмбеддингов используйте **OllamaEmbeddings** с параметрами:

* Базовый URL: `http://host.docker.internal:11434`
* Модель: `nomic-embed-text`

> Полная конфигурация Ollama: смотрите [руководство по Ollama](/guides/guides_v2-ru/yazykovye-modeli/ollama.md)

### Подключение Langflow к vLLM (совместимому с OpenAI)

```bash
# Запустить vLLM с API, совместимым с OpenAI
docker run -d \
  --name vllm \
  --gpus all \
  --restart unless-stopped \
  -p 8000:8000 \
  --ipc=host \
  vllm/vllm-openai:latest \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --gpu-memory-utilization 0.85

# В Langflow используйте компонент OpenAI с пользовательским базовым URL:
# Базовый URL: http://host.docker.internal:8000/v1
# API Key: (любой значение, напр. "none")
# Модель: mistralai/Mistral-7B-Instruct-v0.3
```

> Полная конфигурация vLLM: смотрите [руководство по vLLM](/guides/guides_v2-ru/yazykovye-modeli/vllm.md)

### Построение локального RAG-конвейера

Пример RAG-потока, использующего только локальные модели (нулевая стоимость API):

1. **Загрузчик файлов** узел → Загрузка PDF/текстовых документов
2. **Разделитель текста** узел → Разбивать документы на фрагменты (size: 512, overlap: 50)
3. **OllamaEmbeddings** узел → Генерировать эмбеддинги (модель: `nomic-embed-text`)
4. **Chroma** или **FAISS** узел → Сохранять векторы локально
5. **OllamaEmbeddings** узел → Встраивать запрос пользователя
6. **Ретривер** узел → Находить топ-k похожих фрагментов
7. **Ollama** узел → Генерировать ответ (модель: `llama3.1:8b`)
8. **Вывод чата** узел → Возвращать ответ

Весь этот конвейер работает на вашем сервере Clore.ai без вызовов внешних API.

***

## Подсказки и лучшие практики

### 1. Экспортируйте потоки как резервные копии

Перед остановкой сервера Clore.ai экспортируйте ваши потоки:

* В интерфейсе: Flows → Выбрать все → Export → Скачать JSON
* Или через API: `curl http://localhost:7860/api/v1/flows/`

Сохраните их в постоянном томе или скачайте на локальную машину.

### 2. Используйте API для автоматизации

Каждый поток Langflow генерирует конечную точку API. Запускайте потоки программно:

```bash
# Получите ID потока из UI (показан в URL)
FLOW_ID="your-flow-id-here"

curl -X POST \
  "http://<server-ip>:7860/api/v1/run/$FLOW_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "input_value": "Суммируй последние исследования в области ИИ",
    "input_type": "chat",
    "output_type": "chat"
  }'
```

### 3. Защитите ваш инстанс

Для всего, что выходит за рамки локального тестирования:

```bash
# Всегда включайте аутентификацию
-e LANGFLOW_AUTO_LOGIN=false \
-e LANGFLOW_SUPERUSER=admin \
-e LANGFLOW_SUPERUSER_PASSWORD=$(openssl rand -base64 16)

# Используйте сильный секретный ключ
-e LANGFLOW_SECRET_KEY=$(openssl rand -hex 32)
```

### 4. Мониторьте использование памяти

Langflow может накапливать использование памяти со временем при наличии многих активных потоков:

```bash
docker stats langflow
# Если память растёт без ограничений, перезапускайте периодически:
docker restart langflow
```

### 5. Используйте стартовые шаблоны

Langflow поставляется с шаблонами, готовыми к продакшену:

* **Базовый RAG** — Вопрос-ответ по документам с векторным хранилищем
* **Чат-бот с памятью** — Разговорный агент с историей
* **Ассистент для исследований** — Веб-поиск + синтез LLM
* Доступ через: New Flow → Starter Projects

### 6. Кэширование компонентов

Включите кэширование для ускорения повторных запусков потоков:

* В настройках потока: Включите "Cache" на дорогих узлах (эмбеддинги, вызовы LLM)
* Особенно полезно для RAG-ретривала во время разработки

***

## Устранение неполадок

### Контейнер не запускается

```bash
# Проверьте логи на наличие ошибок
docker logs langflow --tail 50

# Распространённая проблема: порт уже используется
lsof -i :7860
# Завершите конфликтующий процесс или измените порт:
docker run ... -p 7861:7860 ...
```

### UI загружается, но потоки не выполняются

```bash
# Проверьте статус процессов воркеров
docker exec langflow ps aux | grep langflow

# Проверьте ошибки пакетов Python
docker logs langflow 2>&1 | grep -i error

# Перезапустите контейнер
docker restart langflow
```

### Не удаётся подключиться к Ollama

```bash
# Проверьте подключение изнутри контейнера Langflow
docker exec langflow curl http://host.docker.internal:11434/api/tags

# Если флаг --add-host отсутствует, пересоздайте контейнер с:
--add-host host.docker.internal:host-gateway

# Убедитесь, что Ollama запущена
docker ps | grep ollama
curl http://localhost:11434/api/tags
```

### Ошибки базы данных при перезапуске

```bash
# Если используется SQLite и появляются ошибки блокировок:
docker stop langflow
ls -la /opt/langflow/data/
# Проверьте наличие устаревших .lock файлов
rm -f /opt/langflow/data/langflow.db-wal
rm -f /opt/langflow/data/langflow.db-shm
docker start langflow
```

### Медленное выполнение потоков

```bash
# Увеличьте количество воркеров для параллельной обработки
-e LANGFLOW_WORKERS=4

# Для задач с интенсивным использованием эмбеддингов убедитесь, что Ollama использует GPU:
docker exec ollama nvidia-smi
# Должна отображаться загрузка GPU при эмбеддинге
```

### Сброс пароля администратора

```bash
docker exec -it langflow python -c "
from langflow.services.database.utils import initialize_db
from langflow.services.deps import get_settings_service
# Вместо этого используйте CLI Langflow:
"
# Используйте метод CLI:
docker exec -it langflow langflow superuser --username admin --password newpassword
```

***

## Дополнительное чтение

* [Репозиторий Langflow на GitHub](https://github.com/langflow-ai/langflow) — Исходный код, issues, журнал изменений
* [Документация Langflow](https://docs.langflow.org) — Официальная документация, справочник компонентов, API-документация
* [Discord Langflow](https://discord.com/invite/EqksyE2EX9) — Поддержка сообщества и обмен потоками
* [Ollama на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) — Настройка локального LLM-бэкенда для Langflow
* [vLLM на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) — Высокопропускная подача LLM для производственных потоков
* [Руководство по сравнению GPU](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md) — Выберите правильный GPU Clore.ai для вашей нагрузки
* [Документация LangChain](https://python.langchain.com/docs/) — Справочник по базовому фреймворку
* [Docker Hub: langflowai/langflow](https://hub.docker.com/r/langflowai/langflow) — Доступные теги образов и версии


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/ai-platformy-i-agenty/langflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
