Dify 핵심 개념

Dify 핵심 개념

Dify에서 앱을 만들기 전에 알아두면 좋은 개념을 한곳에 정리한 페이지예요. "Dify가 결국 무엇을 만드는 도구인가"부터 시작해서, 앱 유형·DSL·변수까지 큰 그림을 그려볼게요.

출처: 공식문서

Dify App

Dify는 에이전틱 앱 빌딩을 위해 만들어진 플랫폼입니다. Studio에서 드래그&드롭 인터페이스로 에이전틱 워크플로를 빠르게 만들고 앱으로 배포할 수 있어요. 배포된 앱은 API, 웹, 또는 MCP 서버로 접근할 수 있습니다.

Dify는 크게 WorkflowChatflow 두 가지 메인 앱 유형을 제공합니다. 새 앱을 만들 때 이 앱 유형 중 하나를 골라야 합니다. 여기에 더해 Chatbot(챗봇)·Agent(에이전트)·**Text Generator(텍스트 생성)**라는 기본 앱 유형도 3가지 더 있습니다. 이 유형들은 내부적으로는 같은 워크플로 엔진 위에서 돌아가지만, 더 단순한 레거시 인터페이스를 제공합니다. 아래에서 각 유형을 하나씩 살펴볼게요.

Workflow

Workflow 앱은 단일 턴(single-turn) 작업을 처리하도록 만듭니다. 웹앱 인터페이스와 API로 여러 작업을 한 번에 배치 실행하기 쉽습니다. 바닥을 보면 Dify의 모든 앱 유형의 기반이 되는 것이 바로 이 워크플로예요.

모든 워크플로는 시작 노드로 시작합니다. User Input(사용자나 API 호출로 트리거되는 온디맨드 방식)이거나 Trigger(스케줄이나 외부 이벤트에 반응해 자동 실행)입니다.

Chatflow

Chatflow는 대화의 매 턴마다 트리거되는 특수한 워크플로 앱입니다. 워크플로 기능에 더해, 대화에 특화된 변수를 저장·갱신하고, LLM 노드에서 메모리를 활성화하고, Chatflow 실행 중 여러 지점에서 포맷된 텍스트·이미지·파일을 스트리밍할 수 있어요. Chatflow는 항상 User Input으로 시작합니다.

Dify DSL

모든 Dify 앱은 Dify 고유의 DSL(Domain-Specific Language) YAML 파일로 내보낼 수 있고, 이 DSL 파일에서 바로 Dify 앱을 만들 수도 있습니다. 덕분에 앱을 다른 Dify 인스턴스로 이식하거나 다른 사람과 공유하기 쉽습니다.

변수 (Variables)

변수는 정보를 저장하는 라벨이 붙은 상자예요. 나중에 이름을 참조해 그 정보를 찾아 쓸 수 있죠. Dify 앱을 만들다 보면 여러 종류의 변수를 만나게 됩니다.

  • Inputs(입력): User Input 노드에서 앱의 최종 사용자가 채울 입력 변수를 원하는 만큼 지정할 수 있어요.
  • Outputs(출력): 각 노드는 이후 노드에서 참조할 수 있는 출력을 하나 이상 만듭니다. 예를 들어 LLM 노드는 여러 출력을 갖고 있죠.
  • Environment Variables(환경 변수): 앱에 특화된 API 키 같은 민감 정보를 저장하는 데 씁니다. 비밀과 Dify 앱 자체를 깔끔하게 분리해, 앱의 DSL을 공유할 때 비밀번호·키가 노출될 위험을 줄여줍니다. 환경 변수는 상수라 갱신할 수 없어요.
  • Conversation Variables(대화 변수, Chatflow 전용): 대화에 특화된 변수로, 단일 대화 안의 멀티턴 Chatflow 실행 동안 유지됩니다. 할 일 목록이나 토큰 비용 같은 동적 정보를 저장·접근할 수 있어요. Variable Assigner 노드로 값을 갱신합니다.

입력·노드 출력은 한 번 설정되면 갱신할 수 없다는 점(상수)을 기억해 두세요.

더 알아보기 (Learn more)