Dify is an open-source platform for building agentic workflows. It lets you define processes visually, connect your existing tools and data sources, and deploy AI applications that solve real problems
“AI를 잘 쓰는 것”에서 “AI를 내 일에 맞게 구현하는 능력”으로
Dify는 다양한 LLM과 외부 도구, 블록 기능을 활용해 코딩 없이 나만의 생성형 AI 앱을 제작할 수 있는 플랫폼임.

데이터 준비 및 분할 -> 임베딩 모델 적용 -> 백터 데이터베이스 구축 -> 챗봇 인터페이스 생성.. 이런한 작업을 직접처리하려면 어려움 -> Dify 사용
로그인 -> 사내 문서 업로드 -> 쳇본 기본 설정
cd docker
cp .env.example .env
docker compose up -d
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

DB, Redis, VectorDB는 docker로 실행하고 api/web/worker는 소스코드에서 직접 실행
git clone 한후 dev 디렉토리 하위의 shell script를 이용하면 된다.
dev/setup
dev/start-docker-compose
dev/start-api
dev/start-worker
dev/start-beat
dev/start-web
start-docker-compose 스크립트내에 docker compose명령 중애 --profile 옵션과 -p 옵션이 있어서 조사해 보니,
--profile 옵션은 docker-compose.yml 파일 내에 정의된 특정 서비스 그룹(프로필)만 선택적으로 실행하거나 관리할 때 사용한다. 이 기능을 통해 단일 파일로 개발, 테스트, 운영 등 환경별로 필요한 컨테이너(예: DB, 도구)만 띄워 리소스를 절약할 수 있음.
--project-name (또는 -p) 옵션은 도커 컴포즈로 실행되는 컨테이너, 네트워크, 볼륨의 이름 앞에 붙는 프로젝트 접두사(Prefix)를 명시적으로 지정하여, 같은 docker-compose.yml 파일로도 여러 격리된 환경을 동시에 실행할 수 있게 함.
docker-compose-template.yaml파일을 참고해서 다른 vector db를 기동할 수 있음. --profile pgvector, --profile qdrant, --profile milvus 등
setup
setup shell script안에는 api/.env, web/.env.local, docker/middleware.env 생성하고 api와 web의 필요한 라이브러리를 다운로드 한다.
cd dev
./setup
middleware 실행
cd dev
./start-docker-compose
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
backend api 실행
cd api
// .env 파일의 SECRET_KEY 필드에 rand 값 할당
secret_key=$(openssl rand -base64 42)
// linux
sed -i "/^SECRET_KEY=/c\\SECRET_KEY=${secret_key}" .env
// mac
sed -i '' "/^SECRET_KEY=/c\\
SECRET_KEY=${secret_key}" .env
cd dev
./start-api
celery worker 실행
cd dev
./start-worker
celery beat 실행
cd dev
./start-beat
front-end 실행
cd dev
./start-web
// .vscode/launch.json 에 추가
{
"name": "Next.js Debug",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/web",
"sourceMapPathOverrides": {
"webpack://_N_E/*": "${webRoot}/*"
}
}
# Storybook (컴포넌트 단위 테스트)
cd web
pnpm storybook
# → http://localhost:6006
.env.local 핵심 설정:
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
NEXT_PUBLIC_EDITION=SELF_HOSTED
백엔드 API 주소 (Flask가 5001에서 실행 중)
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api
| 항목 | Dify | Flowise | Langflow | n8n |
|---|---|---|---|---|
| 주요 목적 | LLM 앱 개발 플랫폼 | LLM 챗봇/에이전트 빌더 | LLM 파이프라인 빌더 | 범용 워크플로우 자동화 |
| UI 방식 | GUI + 코드 혼합 | 노드 기반 GUI | 노드 기반 GUI | 노드 기반 GUI |
| LLM 특화도 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| 비LLM 자동화 | ❌ 제한적 | ❌ 제한적 | ❌ 제한적 | ✅ 매우 강력 |
| RAG 지원 | ✅ 내장 (Knowledge Base) | ✅ 지원 | ✅ 지원 | ⚠️ 직접 구성 필요 |
| 멀티 에이전트 | ✅ 강력 | ⚠️ 기본 수준 | ✅ 지원 | ⚠️ 제한적 |
| 백엔드 언어 | Python | Node.js | Python | Node.js |
| LangChain 의존 | ❌ 독자 프레임워크 | ✅ 기반 | ✅ 기반 | ❌ |
| Self-host | ✅ Docker | ✅ Docker/npm | ✅ Docker/pip | ✅ Docker/npm |
| 클라우드 SaaS | ✅ dify.ai | ❌ | ⚠️ DataStax 호스팅 | ✅ n8n.cloud |
| API 서빙 | ✅ 자동 생성 | ⚠️ 기본 제공 | ✅ 지원 | ✅ Webhook 방식 |
| 모델 프로바이더 | 매우 다양 | 다양 | 다양 | 제한적 |
| 로컬 LLM (Ollama) | ✅ | ✅ | ✅ | ⚠️ HTTP 노드로 가능 |
| 프롬프트 관리 | ✅ 내장 버전 관리 | ❌ | ⚠️ 기본 수준 | ❌ |
| 모니터링/로깅 | ✅ 내장 | ❌ | ⚠️ 기본 수준 | ⚠️ 실행 로그 수준 |
| GitHub Stars | ★ 90k+ | ★ 35k+ | ★ 50k+ | ★ 50k+ |
| 학습 난이도 | 중간 | 쉬움 | 중간 | 중간 |
| 엔터프라이즈 기능 | ✅ (유료 플랜) | ❌ | ⚠️ | ✅ (유료 플랜) |
https://blog.naver.com/beyond-zero/223810861588
https://app.tavily.com/home
https://wikidocs.net/book/18532
https://devocean.sk.com/blog/techBoardDetail.do?ID=167559&boardType=techBlog