Dify — платформа для сборки LLM-приложений, агентов и RAG
📂 Исходный код на GitHubПлатформа для разработки приложений на базе LLM: визуальные сценарии, агенты с песочницей, RAG-пайплайн, плагины, MCP в обе стороны и наблюдаемость. Бэкенд на Python, фронтенд на TypeScript, самостоятельный хостинг через Docker Compose.
Dify — открытая платформа, на которой собирают приложения для больших языковых моделей. Репозиторий langgenius/dify появился в апреле 2023 года и собрал больше 157 000 звёзд. Проект известен прежде всего как лоу-код конструктор: сценарии собирают мышкой на холсте, а не пишут кодом. При этом платформа даёт и API, и агентов с собственной песочницей, и базы знаний с поиском по смыслу, и подключение к MCP.
Что это за платформа
Платформа отвечает на вопрос, который возникает у любого, кто делает продукты на LLM: как быстро собрать рабочий сценарий, показать его заказчику, а потом довести до рабочей версии, не переписывая всё с нуля.
В Dify есть два основных типа приложений:
- Workflow — сценарий для задачи без диалога. Он выполняется целиком за один проход: получил входные данные, прошёл по узлам, отдал результат. Через API такие сценарии удобно запускать пачками.
- Chatflow — тот же сценарий, но запускается на каждом ходе диалога. Узлы с моделью помнят предыдущие реплики, переменные диалога можно обновлять, а текст, картинки и файлы выводятся потоком.
Кроме них есть три более простых типа: чат-бот, агент и генератор текста. Под капотом у них тот же движок сценариев, но более простой интерфейс. Создавать и публиковать приложения и управлять ими можно из Studio.
Отдельная удобная деталь: любое приложение выгружается в YAML-файл в собственном формате Dify, а из такого файла приложение создаётся заново. Сценарий можно перенести на другой сервер или отдать коллеге.
Узлы и логика
Сценарий — это набор узлов, соединённых стрелками. Состав узлов покрывает почти всё, что нужно в рабочем приложении:
| Задача | Узлы |
|---|---|
| Работа с моделью | LLM, параметры извлечения, классификатор вопроса |
| Знания | поиск по базе знаний, извлечение текста из документов |
| Логика | условие «если-иначе», итерация по списку, цикл, агрегатор переменных |
| Код и данные | выполнение Python или JavaScript, шаблон на Jinja2, операции со списками |
| Внешний мир | HTTP-запрос, узел инструмента |
| Запуск | пользовательский ввод, расписание, вебхук, событие от плагина |
| Люди | пауза с запросом ввода к человеку |
Последние две строки важны отдельно. Сценарий можно запускать не только вручную, но и по расписанию или по событию извне. А узел паузы позволяет остановить выполнение и дождаться ответа человека — это способ встроить ручное согласование в автоматический процесс.
Для отладки есть запуск одного узла, просмотр значения каждой переменной и история запусков. Там же настраивается обработка ошибок.
Агент с песочницей
Отдельная и самая интересная для работы с кодом часть Dify — новый агент. Он работает не в списке инструментов, а в собственной песочнице на 20 ГБ. В ней агент сам запускает команды, ставит программы и работает с файлами. Пользователь описывает, какого агента он хочет, а тот собирает себя сам.
Здесь важно различать возможности и задачу. Возможности — это роль агента, промпт, модель, навыки, инструменты и файлы. Их вы настраиваете один раз. Задача — это то, что агент должен сделать в конкретном запуске: сообщение в чате или инструкция у узла в сценарии. Один и тот же агент можно запускать и как отдельное приложение, и как отдельный шаг внутри сценария.
Что можно дать агенту:
- Навыки — это готовые процедуры в формате
SKILL.mdиз стандарта Agent Skills. Промпт задаёт роль целиком, а навык описывает одну конкретную задачу. Например, роль помощника по продажам одна, а навык возврата заказа — только возвраты. - Файлы — справочные материалы: спецификации, шаблоны, правила. Это материал для чтения, а не процедура.
- Инструменты — плагины Dify, свои API, готовые сценарии как инструменты и серверы MCP.
- Переменные окружения — пары ключ-значение, доступные агенту в песочнице. Их удобно использовать для адреса внешней системы: поменяли одно значение, и все скрипты начинают работать с боевым сервисом.
Весь этот набор можно задать вручную, а можно описать словами в режиме сборки. Агент сам создаст навыки, файлы и переменные, а все изменения покажет списком на подтверждение. Всё, что агент создал в сессии сборки, остаётся с ним навсегда. В опубликованном агенте наоборот: всё, что он создал во время работы, живёт только в пределах одного запуска. И агент не может изменить собственную конфигурацию, даже если пользователь его об этом попросит.
Один запуск агента ограничен: час времени и 500 запросов к модели. Файл в ответе — до 50 МБ. Документы, загруженные как файлы, — до 15 МБ, картинки — до 10 МБ, видео — до 100 МБ, аудио — до 50 МБ.
Знания и RAG
Встроенный конвейер работы со знаниями ведёт документ от файла до ответа. Он умеет разбирать PDF и презентации, чистить и нарезать текст на фрагменты, выбирать способ индексации и настраивать поиск. Данные можно загрузить файлом, забрать из Notion или снять с сайта. Для сложных случаев есть отдельный конвейер базы знаний, где шаги собираются вручную.
Векторную базу выбирают из списка поддерживаемых: Weaviate, Qdrant, pgvector, Chroma, Milvus, OpenSearch, Elasticsearch, Couchbase, Oracle и другие. Основные данные приложения лежат в PostgreSQL или MySQL.
Если своя RAG-система уже есть, её можно подключить снаружи по описанному API внешних знаний, а не переписывать.
Инструменты, плагины, MCP
Инструменты в Dify бывают четырёх видов. Готовые ставятся из маркетплейса. Чужой сервис подключается импортом его OpenAPI-описания — Dify сам соберёт интерфейс инструмента. Свой сценарий можно превратить в инструмент и переиспользовать в других приложениях. И наконец, можно импортировать инструменты с сервера MCP.
С MCP платформа работает в обе стороны. Свои приложения Dify тоже отдаёт как серверы MCP: на вкладке точки доступа включается карточка MCP-сервера, и платформа выдаёт адрес. Его добавляют в Claude Desktop или в файл .cursor/mcp.json — и приложение Dify становится обычным инструментом внутри ИИ-ассистента. В ссылке лежат учётные данные, поэтому обращайтесь с ней как с ключом API.
Плагины расширяют платформу за пределы встроенных возможностей. Их пишут на Python и публикуют в маркетплейс или в свой репозиторий. Типы плагинов: инструмент, модель, стратегия агента, расширение, источник данных и триггер. Официальный набор лежит в отдельном репозитории langgenius/dify-official-plugins.
Запуск из терминала
У платформы есть официальный клиент difyctl. Он входит в тот же репозиторий, описание лежит в cli/README.md. Вход идёт через браузер: CLI показывает код подтверждения, вы подтверждаете его в браузере, после чего клиент получает от сервера каталог операций и превращает каждую операцию в отдельную команду. Результат приходит в JSON.
Отдельная ценность — навык для кодинг-агентов. Агент читает машинопечатную справку difyctl в рантайме, поэтому список команд не нужно зашивать в промпт: агент сам находит нужную операцию, запускает её и разбирает ответ. Навык ставится одной командой:
npx skills add langgenius/dify --skill difyctl -g
Связка выглядит так: в Dify живут сценарии и агенты, а ваш кодинг-агент вызывает их как инструменты из командной строки. Клиент умеет ходить в потоковом режиме, останавливать запуск, возобновлять его, выгружать и загружать приложения.
Официальные SDK лежат в каталоге sdks: Node.js и PHP — внутри репозитория, Java, Go и Ruby — в отдельных.
Наблюдаемость
Отдельный раздел платформы — LLMOps. Он отвечает на вопрос «что происходит с моими приложениями сейчас». В веб-интерфейсе есть дашборд с расходами и активностью, список логов запусков и разметка ответов. Разметку можно превратить в готовые ответы, чтобы приложение не генерировало их заново.
Трассы можно выгружать во внешние системы: Opik, Langfuse, Arize Phoenix, LangSmith, W&B Weave и Alibaba Cloud Monitor. Транспорт — OpenTelemetry, он уже встроен в бэкенд.
Самостоятельный хостинг
Минимальные требования скромные: два ядра CPU и 4 ГБ оперативной памяти. Нужны Docker и Docker Compose версии 2.24.0 или новее. Запуск сводится к трём командам:
cd dify/docker
cp .env.example .env
docker compose up -d
Дальше открывается http://localhost/install, где создаётся учётная запись администратора.
Поднимается не один контейнер, а стек. Семь основных сервисов: api, веб-сокеты, два воркера с планировщиком задач, веб-интерфейс, демон плагинов и бэкенд агентов. Восемь зависимых компонентов: Weaviate, PostgreSQL, Redis, nginx, прокси против SSRF, ещё один прокси для агентов и две песочницы. Плюс одноразовая задача, которая выставляет права на файлы и сразу завершается.
Настройки живут в файле .env в каталоге docker. Необязательные параметры вынесены в отдельные файлы в docker/envs — их подключают, только если они нужны. Значения в docker/.env имеют приоритет. Полный список переменных с описаниями и редкие сценарии вроде тонкой настройки плагинов, наблюдаемости и сети — в ADVANCED_SETUP.md.
Бэкенд написан на Python 3.12, использует Flask и запускается под Gunicorn, фоновые задачи выполняет на Celery через Redis. Фронтенд — TypeScript с React и Next.js. Код, который выполняет агентов, лежит в каталоге dify-agent: это надстройка над Pydantic AI с API на FastAPI.
Облачный вариант тоже есть — Dify Cloud, тарифы на dify.ai/pricing. Организациям с требованиями к корпоративной версии обещают самостоятельный хостинг, единый вход, роли и права на уровне пользователей и SLA поддержки.
Лицензия
Лицензия Dify Open Source License основана на Apache 2.0, но с добавленными условиями. Их стоит прочитать до того, как внедрять платформу:
- Коммерческое использование разрешено, в том числе как бэкенд для других приложений. Но строить на исходниках мультиарендное окружение без письменного разрешения нельзя. Под одним арендатором здесь понимается одно рабочее пространство, то есть отдельная изолированная область с данными и настройками.
- Нельзя убирать или менять логотип и сведения об авторских правах в веб-интерфейсе — в каталоге
webили в образеweb. Ограничение не действует, если веб-интерфейс вообще не используется. - Создатель платформы может менять условия открытой лицензии в любую сторону. Код, который вы прислали как участник проекта, могут использовать в коммерческих целях.
- Внешний вид продукта защищён патентом.
Остальные права и ограничения соответствуют Apache 2.0. Уязвимости команда просит сообщать приватно через GitHub Security Advisories по политике безопасности, а не в публичных issue.
Где это полезно
Сценарии Dify хорошо подходят для задач, где ответ должен быть одинаковым от запуска к запуску: разбор входящих обращений, подготовка отчётов по фиксированному шаблону, извлечение полей из документов. Один холст, одна версия сценария, один API.
Базы знаний дают быстрый доступ к своей документации и внутренним регламентам без написания слоя поиска.
Агент с песочницей и навыками подходит для работы, где нужен не один вызов модели, а последовательность действий: скачать файл, разобрать его, положить результат в базу. Навыки при этом пишутся в том же формате SKILL.md, который уже используют другие кодинг-агенты, — переносить их можно напрямую.
MCP и difyctl закрывают последний зазор: сценарии и агенты из Dify становятся инструментами, которыми пользуются Claude Code, Codex и другие агенты, и наоборот — внешние MCP-серверы становятся инструментами внутри Dify.
Что стоит проверить до внедрения: не нарушает ли ваш сценарий использования условия лицензии, умеет ли выбранная модель вызывать инструменты, хватает ли мощностей на реальной нагрузке. Сообщество проекта живёт в GitHub Discussions, свежие версии — на странице релизов, документация — на docs.dify.ai.
Источник: https://github.com/langgenius/dify