Dify 워크플로우 가이드 2026: AI 자동화 파이프라인 구축
Dify 워크플로우는 드래그 앤 드롭으로 LLM, 데이터베이스, API, 코드를 연결하는 시각적 노드 기반 AI 파이프라인입니다. 이 가이드는 각 노드 유형을 설명하고, 첫 번째 워크플로우 구축을 안내하며, 3가지 실용적인 파이프라인 예제를 보여줍니다.
Dify 워크플로우란 무엇인가요?
Dify 워크플로우는 노드를 연결하여 다단계 AI 작업을 자동화하는 시각적 파이프라인 빌더입니다. n8n이나 Zapier처럼 생각하세요 — 하지만 AI 네이티브로 구축되어 LLM 호출, 지식 베이스 검색, 구조화된 출력 처리를 위한 최고 수준의 노드를 갖추고 있습니다.
챗봇(대화식으로 라운드별 응답)과 달리, 워크플로우는 정의된 입력에서 정의된 출력까지 고정 파이프라인을 실행합니다. 시작하면 각 노드를 순서대로(또는 병렬로) 실행하고 결과를 제공합니다. 이것이 워크플로우를 자동화, 문서 처리, 데이터 강화 및 결정론적으로 실행해야 하는 모든 프로세스에 이상적으로 만듭니다.
내부적으로 Dify 워크플로우는 유향 비순환 그래프(DAG) 엔진을 사용합니다. 각 노드는 상위 노드의 출력을 변수로 받아 처리하고 결과를 전달합니다. 완전한 관찰 가능성을 얻을 수 있습니다 — 실행 로그, 노드별 지연, 토큰 수 — 모두 내장되어 있습니다.
핵심 노드 유형
모든 Dify 워크플로우는 이러한 기본 노드 유형으로 구성됩니다. 각 노드를 이해하는 것이 효과적인 파이프라인 개발의 핵심입니다.
모든 워크플로우의 진입점입니다. 입력 변수를 정의합니다 — 예를 들어 article_text라는 텍스트 필드, 파일 업로드 또는 URL. 이후 모든 노드가 이 변수에 액세스할 수 있습니다.
팁: 입력을 최소화하고 유형을 지정하세요. 문자열에는 "text", 숫자 입력에는 "number", 드롭다운에는 "select"를 사용하세요.
핵심 AI 노드입니다. 시스템 프롬프트와 사용자 프롬프트로 구성된 모든 모델(GPT-4o, Claude, Gemini, Llama 등)을 호출합니다. 상위 노드의 변수는 {{variable_name}}으로 포함할 수 있습니다.
팁: 하위 노드가 LLM 응답을 프로그래밍 방식으로 파싱해야 하는 경우 구조화된 출력 모드(JSON 스키마)를 사용하세요.
벡터 유사성(RAG)으로 Dify 지식 베이스를 검색합니다. 검색 쿼리를 전달하고 가장 관련성 있는 문서 청크를 반환받습니다. 검색된 컨텍스트를 LLM 노드와 연결하여 사실에 기반한 응답을 얻으세요.
팁: 컨텍스트 창을 기준으로 Top-K 매개변수(검색할 청크 수)를 설정하세요. 3~5개가 보통 최적입니다.
워크플로우에서 직접 Python 또는 JavaScript를 실행합니다. JSON 파싱, 문자열 변환, 값 계산, 배열 필터링 또는 스크립트가 할 수 있는 모든 것에 사용하세요. 상위 노드의 입력 변수는 로컬 변수로 사용 가능합니다.
팁: 코드 노드는 샌드박스 환경에서 실행됩니다. 네트워크 액세스 없음 — 외부 호출에는 HTTP 요청 노드를 사용하세요.
모든 REST API 호출을 수행합니다 — GET, POST, PUT, DELETE. 워크플로우 변수로 헤더, 쿼리 매개변수, 요청 본문을 구성합니다. 응답(JSON, 텍스트 또는 raw)은 하위 노드에서 사용 가능합니다.
팁: 민감한 API 키는 노드 구성에 하드코딩하지 말고 Dify 환경 변수에 저장하세요.
조건부 분기입니다. 임의의 표현식(문자열 비교, 숫자 임계값, 정규식 일치, 포함 확인)을 평가하고 워크플로우를 다른 분기로 라우팅합니다. 복잡한 라우팅 로직을 위해 여러 "Else If" 조건을 추가할 수 있습니다.
팁: If/Else를 오류 처리에 사용하세요 — 예를 들어 LLM 신뢰도가 낮으면 불확실한 결과 대신 폴백 응답으로 라우팅합니다.
Jinja2 템플릿으로 데이터를 변환하고 형식화합니다. 여러 변수를 문자열로 결합하고, 데이터를 형식화하고, 목록을 반복하고, 조건부 로직을 적용합니다 — 전체 코드 노드 없이.
팁: LLM 노드에 전달하기 전에 여러 상위 출력을 결합하는 동적 프롬프트를 만드는 데 이상적입니다.
여러 병렬 분기의 출력을 단일 변수로 합칩니다. 워크플로우가 병렬 경로로 분할될 때 필수적입니다(예: 두 개의 다른 LLM을 동시에 호출) — End 노드 전에 결과를 병합해야 합니다.
팁: "array" 모드를 사용하여 모든 분기 출력을 목록에 수집한 다음 코드 노드로 처리하세요.
마지막 노드입니다. 워크플로우가 반환하는 것을 정의합니다 — 하나 이상의 출력 변수. API 트리거 시 이 출력이 JSON 응답으로 반환됩니다. Chatflow에서 사용 시 End 노드의 콘텐츠가 사용자에게 표시됩니다.
팁: 여러 End 노드를 가질 수 있습니다(각 If/Else 분기마다 하나씩) — 경로에 따라 다른 출력을 반환합니다.
첫 번째 워크플로우 구축
간단한 기사 요약기를 만들어 보겠습니다 — AI 파이프라인의 "Hello World". 기사 텍스트를 입력받아 3가지 핵심 포인트 요약을 반환합니다.
새 워크플로우 앱 만들기
Dify Studio에서 "+ 앱 만들기" → "워크플로우"를 선택합니다. "기사 요약기"와 같은 이름을 지정하고 만들기를 클릭합니다. 빈 시작 및 종료 노드가 있는 캔버스로 이동합니다.
시작 노드 구성
시작 노드를 클릭합니다. 입력 변수를 추가합니다: article_text로 이름 지정, 유형을 "Paragraph"(긴 텍스트)로 설정합니다. 이것이 워크플로우를 트리거할 때 사용자(또는 API 호출자)가 제공할 내용입니다.
LLM 노드 추가
캔버스에서 "+" 버튼을 클릭합니다. LLM 노드를 추가합니다. 모델을 선택합니다(예: GPT-4o Mini). 사용자 프롬프트 필드에 입력합니다: 다음 기사를 정확히 3개의 핵심 포인트로 요약하세요. 간결하게 작성하세요.
{{article_text}}
시작 → LLM → 종료 연결
시작 노드의 출력 핸들에서 LLM 노드의 입력으로 연결을 드래그합니다. 그런 다음 LLM 노드 출력을 종료 노드에 연결합니다. 종료 노드는 LLM 노드의 text 변수를 출력해야 합니다.
테스트
상단 바에서 "실행"을 클릭합니다. 오른쪽에 테스트 패널이 나타납니다. article_text 필드에 임의의 기사 텍스트를 붙여넣고 실행을 클릭합니다. 출력과 완전한 실행 추적을 볼 수 있습니다 — 노드별, 토큰 수 및 지연 포함.
워크플로우 vs 챗봇 vs 에이전트 — 언제 무엇을 사용할까요
Dify는 세 가지 앱 유형을 제공합니다. 올바른 선택이 중요합니다 — 근본적으로 다른 사용 사례를 위해 설계되었습니다.
| 특징 | 워크플로우 | 챗봇 | 에이전트 |
|---|---|---|---|
| 상호 작용 모델 | 단일 실행: 입력 → 출력 | 다단계 대화 | 동적 도구 선택 |
| 결정론 | 높음 — 고정 파이프라인 | 중간 — LLM이 결정 | 낮음 — 에이전트가 결정 |
| 이상적인 용도 | 자동화, 배치 처리 | 고객 지원, Q&A | 연구, 작업 완수 |
| 디버그 가능성 | 우수 — 완전한 추적 | 좋음 — 대화 로그 | 어려움 — 동적 단계 |
| API 트리거 가능 | 예 — REST 엔드포인트 | 예 — Chat API | 예 — Chat API |
| Knowledge Retrieval | 예 — 노드를 통해 | 예 — 컨텍스트를 통해 | 예 — 도구를 통해 |
| 외부 API 호출 | 예 — HTTP 요청 노드 | 제한적 — 플러그인을 통해 | 예 — 도구를 통해 |
| 병렬 실행 | 예 — 기본으로 지원 | 아니오 | 아니오 |
3가지 실용적인 워크플로우 예제
이 세 가지 파이프라인은 가장 일반적인 실제 Dify 워크플로우 패턴을 다룹니다. 각각 실전에서 검증된 프로덕션 준비 완료 상태입니다.
콘텐츠 요약 파이프라인
임의의 기사 텍스트를 가져와 제목, 3가지 핵심 포인트, 한 줄 결론이 있는 구조화된 요약을 만듭니다. 콘텐츠 팀, 뉴스레터 편집자, 연구 어시스턴트에게 유용합니다.
LLM 프롬프트: "당신은 콘텐츠 편집자입니다. 다음 기사에서 만드세요: (1) 눈길을 끄는 제목, (2) 정확히 3가지 핵심 포인트, (3) 한 줄 결론. JSON으로 형식화하세요."
고객 지원 분류
들어오는 지원 티켓을 의도(청구, 기술, 일반)별로 분류하고 각 카테고리를 전문화된 LLM 응답으로 라우팅합니다. 사용하는 팀의 에스컬레이션을 40~60% 줄입니다.
If/Else 로직: intent == "billing"이면 → 청구 LLM. intent == "technical"이면 → 기술 LLM. 그렇지 않으면 → 일반 지원 LLM.
문서 Q&A 파이프라인
질문을 받아 지식 베이스에서 가장 관련성 있는 문서 청크를 검색하고 LLM에 전달하여 근거 있는 출처 기반 답변을 제공합니다. 법률 문서, 기술 매뉴얼, 내부 위키에 완벽합니다.
LLM 프롬프트: "제공된 컨텍스트만으로 질문에 답하세요. 컨텍스트에 답이 없으면 말하세요."
API로 워크플로우 실행
게시된 모든 Dify 워크플로우는 자동으로 REST API 엔드포인트를 받습니다. 애플리케이션에 워크플로우를 통합하거나, 스케줄러에서 트리거하거나, 여러 워크플로우를 연결하는 방법입니다.
POST https://your-dify-instance/v1/workflows/run
curl -X POST 'https://your-dify-instance/v1/workflows/run' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"article_text": "여기에 기사 내용을 입력하세요..."
},
"response_mode": "blocking",
"user": "user-123"
}' blocking
완전한 결과를 기다립니다. 30초 미만의 짧은 워크플로우에 최적입니다.
streaming
서버 전송 이벤트 스트림을 반환합니다. 긴 워크플로우 또는 UI로의 LLM 스트리밍에 최적입니다.