Dify 사용기

cloud2000·2026년 3월 2일

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 앱을 제작할 수 있는 플랫폼임.

  • apps: Workflow, Chatflow, Chatbot, Agent, Text Generator

RAG, 지식구축

  • RAG(검색증강생성, Retrieval-Augumented Generation): LLM의 능력을 특정 데이터세트나 지식베이스로 보강하는 기술임. AI에서 참고서 제공!
  1. 사내문서를 AI가 인식할 수 있도록 벡터화 함. 문서의 의미와 내용을 AI가 이해할 수 있는 수치들의 배열로 변환함. 벡터 데이터베이스, 지식베이스에 저장한다.
  2. 질문의 벡터화
  3. 유사도 검색: 질문의 벡터를 사용하여 DB에서 관련 정보를 검색. 코사인 유사도 방법으로 계산. 두 벡터가 얼마나 같은 방향을 가리키고 있는지 수치화하여 1에 가까우면 거의 동일한 의미.
  4. 답변 생성

데이터 준비 및 분할 -> 임베딩 모델 적용 -> 백터 데이터베이스 구축 -> 챗봇 인터페이스 생성.. 이런한 작업을 직접처리하려면 어려움 -> Dify 사용

로그인 -> 사내 문서 업로드 -> 쳇본 기본 설정

AI Agent platform

  1. flow 실행방법: manual, trigger
  2. user input type: Short Text, Paragraph, Number, Select, Checkbox, Single File, File List, JSON code
  3. 단일 실행, 일괄 실행
  4. app relase: url, api, mcp, embedded ui, logs, monitoring, api key
  5. plugin 시스템

로컬 환경

1.로컬 docker 실행

cd docker
cp .env.example .env
docker compose up -d
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

2.로컬 디버깅

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 등

  1. setup
    setup shell script안에는 api/.env, web/.env.local, docker/middleware.env 생성하고 api와 web의 필요한 라이브러리를 다운로드 한다.

      cd dev
      ./setup
  2. middleware 실행

    cd dev
    ./start-docker-compose
    
    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
  3. 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
  4. celery worker 실행

    cd dev
    ./start-worker
  5. celery beat 실행

    cd dev
    ./start-beat
  6. 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

LLM 플랫폼 비교: Dify vs Flowise vs Langflow vs n8n (feat:claude)

항목DifyFlowiseLangflown8n
주요 목적LLM 앱 개발 플랫폼LLM 챗봇/에이전트 빌더LLM 파이프라인 빌더범용 워크플로우 자동화
UI 방식GUI + 코드 혼합노드 기반 GUI노드 기반 GUI노드 기반 GUI
LLM 특화도⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
비LLM 자동화❌ 제한적❌ 제한적❌ 제한적✅ 매우 강력
RAG 지원✅ 내장 (Knowledge Base)✅ 지원✅ 지원⚠️ 직접 구성 필요
멀티 에이전트✅ 강력⚠️ 기본 수준✅ 지원⚠️ 제한적
백엔드 언어PythonNode.jsPythonNode.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

profile
클라우드쟁이

0개의 댓글