> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/ai-platformy-i-agenty/dify.md).

# Платформа Dify.ai Workflow

## Обзор

[Dify.ai](https://github.com/langgenius/dify) является платформой с открытым исходным кодом для разработки приложений на основе LLM с **114K+ звёзд на GitHub**. Она объединяет визуальный конструктор рабочих процессов, конвейер RAG (retrieval-augmented generation), оркестрацию агентов, управление моделями и слой развертывания API в один стек, который можно разместить на собственном хостинге.

На **Clore.ai** вы можете запустить полный стек Dify — включая его базу данных Postgres, кеш Redis, векторное хранилище Weaviate, обратный прокси Nginx, API-воркеры и веб-фронтенд — на арендованном GPU-сервере всего за **$0.20–$0.35/ч** (RTX 3090/4090). GPU не обязателен для самого Dify, но становится необходимым, когда вы интегрируете локальный вывод модели через бэкенды Ollama или vLLM.

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

* 🔄 **Визуальный конструктор рабочих процессов** — drag-and-drop конвейеры LLM с ветвлением, циклами и условной логикой
* 📚 **RAG-конвейер** — загружайте PDF, URL-адреса, страницы Notion; разбиение на чанки + встраивание + извлечение — всё управляется в UI
* 🤖 **Режим агента** — агенты ReAct и с вызовом функций с использованием инструментов (веб-поиск, интерпретатор кода, пользовательские API)
* 🚀 **API-first** — каждое приложение мгновенно генерирует REST-эндпойнт и фрагменты SDK
* 🔌 **Более 100 интеграций моделей** — OpenAI, Anthropic, Mistral, Cohere, плюс локальные модели через Ollama/vLLM
* 🏢 **Мультиарендность** — команды, рабочие пространства, RBAC, квоты использования

***

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

Dify запускается как многоконтейнерный стек Docker Compose. Минимальный жизнеспособный сервер для разработки — это инстанс только с CPU; для продакшена с локальным выводом моделей вам понадобится узел с GPU.

| Конфигурация                       | GPU              | VRAM  | ОЗУ системы | Диск   | Clore.ai Цена   |
| ---------------------------------- | ---------------- | ----- | ----------- | ------ | --------------- |
| **Минимальная** (только ключи API) | Нет / только CPU | —     | 8 ГБ        | 30 GB  | \~$0.05/ч (CPU) |
| **Стандартный**                    | RTX 3080         | 10 ГБ | 16 ГБ       | 50 ГБ  | \~$0.15/час     |
| **Рекомендуется**                  | RTX 3090 / 4090  | 24 ГБ | 32 ГБ       | 80 ГБ  | $0.20–0.35/час  |
| **Продакшен + локальная LLM**      | A100 80 GB       | 80 ГБ | 64 ГБ       | 200 ГБ | ≈ $1.10/ч       |
| **Высокая пропускная способность** | H100 SXM         | 80 ГБ | 128 ГБ      | 500 ГБ | \~$2.50/ч       |

> **Подсказка:** Если вы используете только облачных поставщиков API (OpenAI, Anthropic и т.д.), подойдёт любой 2-ядерный CPU-инстанс с 8 ГБ ОЗУ. GPU важен только при запуске локальных моделей через Ollama или vLLM — см. [Ускорение с помощью GPU](#gpu-acceleration) ниже.

### Примечание по диску

Данные Weaviate и Postgres быстро растут при загрузке документов. Выделите **по крайней мере 50 ГБ** и подключите постоянное хранилище через опции томов Clore.ai.

***

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

### 1. Арендуйте сервер Clore.ai

Перейдите на [clore.ai](https://clore.ai), отфильтруйте по желаемому GPU и разверните сервер с:

* **Docker** предустановлен (все образы Clore включают его)
* Открытые порты **80** и **443** (добавьте пользовательские порты в настройках предложения при необходимости)
* SSH доступ включён

### 2. Подключитесь и подготовьте сервер

```bash
# Подключитесь по SSH к вашему серверу Clore
ssh root@<clore-server-ip> -p <ssh-port>

# Обновите системные пакеты
apt-get update && apt-get upgrade -y

# Убедитесь, что Docker доступен
docker --version
docker compose version   # Должна быть v2.x
```

### 3. Клонируйте Dify и запустите

```bash
# Клонируйте репозиторий
git clone https://github.com/langgenius/dify.git
cd dify/docker

# Скопируйте пример файла окружения
cp .env.example .env

# (Необязательно) Отредактируйте настройки перед запуском
nano .env

# Загрузите все образы и запустите все сервисы в фоне
docker compose up -d

# Просматривайте логи во время запуска (первый запуск занимает 2–3 минуты)
docker compose logs -f
```

### 4. Убедитесь, что все сервисы работают корректно

```bash
# Проверьте статус контейнеров
docker compose ps

# Ожидаемый вывод:
# NAME                    STATUS
# docker-api-1            Up (healthy)
# docker-web-1            Up (healthy)
# docker-worker-1         Up (healthy)
# docker-nginx-1          Up
# docker-db-1             Up (healthy)
# docker-redis-1          Up (healthy)
# docker-weaviate-1       Up (healthy)
# docker-sandbox-1        Up (healthy)
```

### 5. Доступ к веб-интерфейсу

Откройте браузер и перейдите по адресу:

```
http://<clore-server-ip>:80
```

При первом запуске Dify перенаправит вас в мастер настройки для создания учётной записи администратора. Завершите мастер, затем войдите в систему.

***

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

Вся конфигурация хранится в `dify/docker/.env`. Вот самые важные настройки:

### Основные переменные окружения

```bash
# ── Секретные ключи (ИЗМЕНИТЕ ИХ) ──────────────────────────────────────────
SECRET_KEY=ваш-сверх-секретный-ключ-измените-это-сразу
# Сгенерируйте сильный ключ:
# python3 -c "import secrets; print(secrets.token_hex(32))"

# ── URL приложения ─────────────────────────────────────────────────────────
# Установите публичный IP или домен вашего сервера
CONSOLE_WEB_URL=http://<clore-server-ip>
APP_WEB_URL=http://<clore-server-ip>

# ── База данных (Postgres) ──────────────────────────────────────────────────
DB_USERNAME=postgres
DB_PASSWORD=difyai123456          # Измените в продакшене!
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# ── Redis ──────────────────────────────────────────────────────────────────
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=difyai123456       # Измените в продакшене!

# ── Хранилище (по умолчанию локальный диск) ─────────────────────────────────
STORAGE_TYPE=local
# Или используйте совместимое с S3 хранилище:
# STORAGE_TYPE=s3
# S3_ENDPOINT=https://s3.amazonaws.com
# S3_BUCKET_NAME=your-dify-bucket
# S3_ACCESS_KEY=...
# S3_SECRET_KEY=...

# ── Провайдер LLM по умолчанию ──────────────────────────────────────────────
# Установите в UI после входа или предварительно настройте здесь:
# OPENAI_API_KEY=sk-...
```

### Изменение открытого порта

По умолчанию Nginx слушает порт **80**. Чтобы изменить его:

```bash
# В файле docker-compose.yaml отредактируйте сервис nginx:
# ports:
#   - "8080:80"   ← замените 8080 на предпочитаемый порт хоста

# Затем перезапустите:
docker compose down && docker compose up -d
```

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

Файл Compose Dify монтирует эти тома по умолчанию:

```yaml
volumes:
  oradata:          # данные Postgres
  redis_data:       # Redis AOF
  weaviate_data:    # векторное хранилище
  app_storage:      # загруженные документы и сгенерированные файлы
```

Чтобы сделать резервную копию:

```bash
# Сначала остановите сервисы, затем упакуйте тома Docker в tar
docker compose stop
docker run --rm \
  -v docker_oradata:/data \
  -v $(pwd)/backups:/backup \
  alpine tar czf /backup/postgres-$(date +%Y%m%d).tar.gz /data
docker compose start
```

***

## Ускорение с помощью GPU

Ядро платформы Dify работает на CPU, но вы получаете локальный вывод моделей, интегрируя **Ollama** или **vLLM** в качестве провайдеров моделей — оба сильно выигрывают от наличия GPU.

### Вариант A: sidecar Ollama (самый простой)

Запустите Ollama рядом с Dify на том же сервере Clore:

```bash
# Установите Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Загрузите модель (например Llama 3 8B)
ollama pull llama3:8b

# Убедитесь, что используется GPU
ollama run llama3:8b "Hello!"
nvidia-smi   # Должно показывать процесс ollama, использующий видеопамять
```

Затем в UI Dify → **Settings → Model Providers → Ollama**:

* Базовый URL: `http://localhost:11434`
* Выберите вашу модель и сохраните

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

### Вариант B: sidecar vLLM (высокая пропускная способность)

```bash
# Запустите vLLM как отдельный контейнер с передачей GPU
docker run -d \
  --name vllm \
  --gpus all \
  --runtime nvidia \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -e HUGGING_FACE_HUB_TOKEN=<your-hf-token> \
  vllm/vllm-openai:latest \
  --model mistralai/Mistral-7B-Instruct-v0.2 \
  --dtype auto \
  --max-model-len 4096

# Проверьте эндпойнт
curl http://localhost:8000/v1/models
```

Затем в UI Dify → **Settings → Model Providers → OpenAI-compatible**:

* Базовый URL: `http://localhost:8000/v1`
* API Key: `dummy`
* Имя модели: `mistralai/Mistral-7B-Instruct-v0.2`

> Для полной настройки vLLM смотрите [language-models/vllm.md](/guides/guides_v2-ru/yazykovye-modeli/vllm.md).

### Рекомендации по объёму памяти GPU для локальных моделей

| Модель             | Требуемая VRAM | Рекомендуемый GPU Clore |
| ------------------ | -------------- | ----------------------- |
| Llama 3 8B (Q4)    | 6 GB           | RTX 3060                |
| Llama 3 8B (FP16)  | 16 ГБ          | RTX 3090 / 4090         |
| Mistral 7B (Q4)    | 5 ГБ           | RTX 3060                |
| Llama 3 70B (Q4)   | 40 ГБ          | A100 40GB               |
| Llama 3 70B (FP16) | 140 GB         | 2× H100                 |

***

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

### Оптимизация затрат на Clore.ai

```bash
# Используйте спотовые цены — базы данных Dify хранят состояние в томах
# поэтому вы можете останавливать/запускать инстанс дешёво

# Перед остановкой вашего Clore-инстанса сделайте дамп БД:
docker exec docker-db-1 pg_dump -U postgres dify > dify_backup_$(date +%Y%m%d).sql

# Сожмите том хранилища для переноса
tar czf dify_storage_$(date +%Y%m%d).tar.gz \
  $(docker volume inspect docker_app_storage --format '{{.Mountpoint}}')
```

### Включите HTTPS с помощью Caddy (рекомендуется для продакшена)

```bash
# Добавьте Caddy в docker-compose.yaml или запустите отдельно
docker run -d \
  --name caddy \
  --network docker_default \
  -p 443:443 -p 80:80 \
  -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy_data:/data \
  caddy:latest

# Содержимое Caddyfile:
# your-domain.com {
#     reverse_proxy nginx:80
# }
```

### Масштабируйте воркеры для больших нагрузок

```bash
# Запустите 4 celery-воркера вместо 1
docker compose up -d --scale worker=4
```

### Мониторинг использования ресурсов

```bash
# Статистика по контейнерам в реальном времени
docker stats

# Использование GPU (если используются локальные модели)
watch -n1 nvidia-smi

# Логи приложения Dify
docker compose logs -f api worker
```

### Тонкая настройка RAG-производительности

* Установите **размер чанка** до 512–1024 токенов для большинства типов документов
* Включите **родительско-дочернее извлечение** для длинных документов в настройках Dataset
* Используйте **гибридный поиск** (ключевое слово + вектор) для лучшего поиска по техническому контенту
* Индексируйте документы в непиковые часы, чтобы избежать лимитов API

***

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

### Сервисы постоянно перезапускаются

```bash
# Проверьте логи проблемного сервиса
docker compose logs --tail=50 api
docker compose logs --tail=50 worker

# Частая причина: неправильный SECRET_KEY или подключение к БД
# Убедитесь, что SECRET_KEY в .env задан и уникален
grep SECRET_KEY .env
```

### "Миграция не удалась" при запуске

```bash
# Запустите миграции БД вручную
docker compose exec api flask db upgrade

# Если это не помогает, сначала проверьте, что Postgres в порядке
docker compose exec db pg_isready -U postgres
```

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

```bash
# По умолчанию Ollama привязывается к 127.0.0.1
# Измените настройку, чтобы слушать на всех интерфейсах:
OLLAMA_HOST=0.0.0.0 ollama serve

# Или отредактируйте systemd-сервис:
systemctl edit ollama
# Добавьте в раздел [Service]:
# Environment="OLLAMA_HOST=0.0.0.0"
systemctl restart ollama

# Протестируйте изнутри контейнера Dify:
docker compose exec api curl http://host.docker.internal:11434/api/tags
```

### Закончилась дисковая память

```bash
# Проверьте размеры томов
df -h
docker system df

# Удалите неиспользуемые образы
docker image prune -a

# Логи Weaviate могут разрастаться — вращайте их
docker compose exec weaviate truncate -s 0 /tmp/weaviate.log
```

### Ошибки в векторном хранилище Weaviate

```bash
# Сбросьте Weaviate (ВНИМАНИЕ: удаляет все встраивания, потребуется повторная индексация)
docker compose stop weaviate
docker volume rm docker_weaviate_data
docker compose up -d weaviate

# Затем переиндексируйте ваши наборы данных в UI Dify → Datasets → [dataset] → Re-index
```

### Порт 80 уже используется

```bash
# Найдите, что использует порт 80
ss -tlnp | grep :80
# или
lsof -i :80

# Остановите конфликтующий сервис или измените порт nginx Dify в docker-compose.yaml
```

***

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

* [Официальная документация Dify](https://docs.dify.ai)
* [Репозиторий Dify на GitHub](https://github.com/langgenius/dify)
* [Руководство по самостоятельному размещению Dify](https://docs.dify.ai/getting-started/install-self-hosted/docker-compose)
* [Запуск Ollama на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/ollama.md)
* [Запуск vLLM на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/vllm.md)
* [Сравнение GPU Clore.ai](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md)
* [Сообщество Dify в Discord](https://discord.gg/FngNHpbcY7)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
