🌿 Data Engineering/MLOps

Dify 설치 하고 기능 살펴보기, LLM 앱 개발을 위한 오픈 소스 플랫폼

카프리썬_ 2025. 3. 16. 00:49
728x90
728x90

 

LLM 앱을 뭔가 만들어보고 싶다. 

그래서 AWS bedrock도 알아보고 있었는데,

Dify는 그 다음으로 눈에 들어온 LLM개발 오픈소스 플랫폼이다. 

Do It For You !

 

Dify가 마음에 들었던 이유는 일단 빠르게 해보기 쉬워보였다. 

LLM 서비스라고 한다면 LangChain이나 RAG, VectorDB설정, 프롬프트 엔지니어링 까지

이것저것 하나하나 디테일을 손보면 끝도 없는데, 여기에 많은 리소스가 들어간다고 생각해서 시작하기 어려웠다.

 

그런데 Dify를 알고 나서 마음이 훨씬 가벼워졌다.

그래서 나처럼 LLM 서비스를 간단하게 만들어보고 싶다면, 한번쯤 사용해보면 좋은 툴인것 같다.

그렇다면 이번글에서는 Dify가 무엇인지 간단하게 개념정도 알아보고,

다음글에서  Dify를 가지고 직접 간단한 LLM서비스를 만들어본 과정을 작성할 예정이다.

 

 

 


Dify란 무엇인가?

프로덕션 수준의 생성형 AI 애플리케이션을 손쉽게 개발할 수 있도록 설계된 오픈소스 플랫폼이다. 

 

주요 기능과 특징은 아래와 같다. 

1. No-Code : 직관적인 webUI를 제공해주고 있어서, 코드없이 AI기능을 구현할수 있다.

물론 모든 기능을 API형태로 제공되서 코드가 필요하다면 기존 비즈니스 로직에 통합할수도 있다.

2. RAG 지원 : 문서, PDF,

 

웹페이지까지 다양한 데이터 소스를 지원하고, VectorDb부터 데이터 임베딩까지 자동화되어 있다.

3.다양한 모델 지원 : OpenAI의 GPT 시리즈, Anthropic의 Claude, Google의 Gemini까지 다양한 LLM을 지원한다. 

4.LLMOps 기능 : 다양한 지표를 실시간으로 모니터링할수 있고, 애플리케이션의 로그와 성능까지 분석할수 있다.

5.셀프 호스팅 : 오픈소스라 직접 제어할수 있는 서버에 배포하고 웹으로 접근할수 있다. 

Dify 설치하기

diy는 오픈소스이기 때문에 간단하게 로컬에 배포할수 있다.

https://github.com/langgenius/dify

 

GitHub - langgenius/dify: Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow,

Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, lettin...

github.com

 

먼저 위에 github 소스를 clone한다. 

git clone https://github.com/langgenius/dify.git

 

아래 명령어를 통해 dify이 필요한 환경변수를 생성한다.

cd dify/docker
cp .env.example .env

 

기본적으로 제공해주는 .env.example 파일을 .env로 복사를 해주고

해당 파일에서 원하는 포트번호를 입력해주면 된다. 기본은 80포트로 되어 있다.

 

그다음 이제 docker compose로 올리면 된다. 

docker compose up -d   #시작

docker compose down    #종료

 

이제 그러면 dify에 접속해보자.  web UI를 제공해준다 했으니 기대가 된다.

포트를 80으로 지정했으니가 localhost:80으로 접속을 한다.

 

그러면 관리자 계정을 설정하며 회원가입을 하게 된다.

어드때와 다름없이 사용자이름은 admin으로 지정해서 관리자 계정을 생성했다.

 

로그인을 완료하면 이제 아래처럼 Dify를 이용할수 있는 스튜디오가 나온다. 

드디어 로컬환경에서 dify를 사용해서 LLM 서비스를 만들수 있는것인가..!! 

 

dify를 시작하면 탐색, 스튜디오, 지식, 도구 라는 탭이 보인다.

그중에 스튜디오 라는 메뉴가 가장 메인이라 이것부터 알아보려고 한다.

 

그래서 아래와 같은 순서로 Dify를 살펴볼 예정이다. 

1. 스튜디오 (빈상태로 시작)

2. 스튜디오 (템플릿에서 시작)

3. 탐색

4. 지식

5. 도구

 

1. Dify  살펴보기,  스튜디오 (빈 상태로 시작)

기본적으로 Dify를 통해 LLM 어플리케이션을 만드는 방법은 세가지이다.

1. 빈상태로 만들거나

2. 템플릿으로 만들거나

3. DSL 파일로 만드는 것이다.

 

먼저 빈상태로 만들게 되면, 이렇게 앱 유형을 선택하게 된다.

 

챗봇 유형은 흔히 알고 있는 LLM기반 챗봇이고,

에이전트는 대화할 뿐만 아니라 RAG기반으로 정보를 추론해주는 지능형 에이전트같고,

텍스트 생성기는 말그대로 요구사항에 맞는 text generator 인것 같다.

앱 유형을 선택하고, 아이콘과 이름을 지정하고 나면 이제 본격적으로 LLM 어플리케이션을 구성할수 있다. 

 

왼쪽에 보면 오케스트레이트, API엑세스, 로그 및 어노테이션, 모니터링 탭이 있다. 

 

오케스트레이트에서는 단계, 변수, 컨텍스트를 작성하게 된다.  (뭔가 번역이 되는건지 단어가 조금 어색한 느낌이다)

"단계"에서는 프롬프트로 LLM에게 지시사항을 전달하는 부분이다. 

"변수"는 프롬프트에서 사용할 입력값을 의미한다. 프롬프트에서 사용하는 변수로 보면 된다. 

"컨텍스트"에서는 참조할 지식을 가지고 오는 부분이다.  (지식을 가지고 오는 부분은 아래에서 좀더 소개하겠다.)

 

오른쪽에 보면 LLM제공자 키를 설정하라는 안내도 나온다. 

그렇다 나는 아직 api-key를 세팅하지 않은 상태이기 때문이다. 

당연지사 LLM 서비스를 만들기 위해 기본적으로 필요한 모델을 불러오기 위한 key설정이 필요하다.

 

그리고 dify에서 제공해주는 모델제공자 또한 꽤 다양하다.

기본적으로 내가 추가하고 싶었던 deepseek, openAI, Gemini 뿐만 아니라 

Anthropic, Hugging Face, Ollama, 그리고 AWS Bedrock까지 있었다. 

 

 

 

반응형

2. Dify  살펴보기, 스튜디오 (템플릿으로 시작)

템플릿으로 만들게 되면, 이렇게 카테고리별로 만들수 있는 LLM서비스를 

기본적으로 Dify에서 여러가지 템플릿을 제공해주는데, 이걸 활용하면 더 손쉽게 LLM서비스를 만들수 있다.

 

그리고 원하는 템플릿을 선택하게 되면, 아까 빈 상태로 시작했던것처럼 

왼쪽에 보면 오케스트레이트, API엑세스, 로그 및 어노테이션, 모니터링 탭이 있다. 

이번에는 이미 템플릿이 만들어져 있기 때문에 각 값을 확인할수 있다. 

빈 상태로 나만의 LLM 어플리케이션을 만드는데 막막했다면 요 템플릿들의 값을 참고해보는것도 좋을것 같다. 

 

예를 들어, <GPT-Researcher EN> 이란 템플릿을 선택한다면,

이렇게 OpenAI를 비롯한 여러가지 필요한 플러그인 설치가 필요한 안내를 받는다. 

 

 

또 아래 예시 템플릿은 에이전트유형의 여행상담가 템플릿인데, 오케스트레이션의 값들을 확인해보면 아래와 같다.

"단계"에서 role, skills, goals 등 LLM에게 전달할 프롬프트가 작성되어 있고,

"변수"에서는 destination, num_day, budget 이 프롬프트에서 사용될 변수값이며 {{ destination }}로 사용된게 보인다.

"컨텍스트"는 사용하지 않았고,

"도구"에는 google이랑 Webscraper를 활성화 해놨다. 

 

또 아래 예시 템플릿은 챗봇 유형의 DeppResearch 템플릿인데, 오케스트레이션에서 플로우를 확인해볼수 있다.

Input을 받아서 최종적으로 어떻게 answer이 나오는지 그 과정을 도식화된 플로우로 확인해볼수 있다.

 

그리고 langchain을 코드한줄 없이 한번의 클릭으로 아주 간단하게 추가할수 있다. 

LLM, 지식검색, 답변 등 다양한 블록을 추가할수 있다.

 

심지어 디버깅을 위한 미리보기까지 제공해주고 있다.

그래서 실제로 챗봇을 사용해보면서 어떤 플로우에서 문제가 있는지를 확인할수도 있다.

3. Dify  살펴보기, 탐색

탐색 탭에서는 아까 확인해봤던 여러가지 템플릿들이 있다.

google gemi, GPT 뿐만 아니라 deppseek 지원도 되는 템플릿이 있다.

 

4. Dify 살펴보기,  지식

지식 탭에서는 아까 LLM 어플리케이션을 빈 상태로 시작할때, "컨텍스트" 부분에서 추가하는 부분이다.

RAG생성을 위한 데이터 소스를 업로드 하는 부분이다. 

 

텍스트파일이나 웹사이트로 기반으로 데이터를 불러 올수 있다.

개인적으로 노션이랑 동기화 된다는건 조금 신기했다. 

데이터 소스를 선택한 후에는 이렇게 텍스트를 전처리하고 클리닝할수도 있다.

원래 이렇게 RAG를 가지고 와서 관련된 파라미터 튜닝은 대부분 코드로 해왔는데,

이렇게 직관적으로 UI로 컨트롤하니까 정말 편하다고 느꼈다.

 

5. Dify 뒤적여보기 - 도구

도구 탭에서는 아까 LLM 어플리케이션을 템플릿으로 시작할때, 추가 되어 있던 그 "도구" 부분이다.

코드 interpreter, 현재 시간, TTS 음성을 비롯해서 내장되어 있는 도구 뿐만 아니라

검색엔진으로 구글, bing, wikipedia, DuckDuckGo 

이미지 관련해서 DALL, stable diffusion, 

기본적으로 익숙해보이는 github, slack, elasticSearch 까지 다양한 도구를 지원한다.  

 

참고로 검색관련 툴로 DuckDuckGo이 무료라고 한다.

구글이나 Bing같은 검색은 유료 API를 발급받아야하는데 말이다. 

 

 

+ 추가적으로 API, 로그 그리고 모니터링

LLM 서비스를 간단하게 만들어보기 위해 dify에서 제공해주는 기능들을 살펴보았다.

그런데 dify에서 제공해주는 또하나의 강력한 기능은 셀프 호스팅이라고 생각한다.

배포를 하고나서 실제로 운영하는데 API 와 로그 그리고 모니터링 기능이 유용할것 같다.

 

빈상태로 만든 LLM 서비스이던, 템플릿으로 만든 LLM 서비스이던 API로 접근할수 있다.

그래서 LLM 어플리케이션을 만들게 되면 오케스트레이트 아래에 API 액세스 메뉴를 확인할수 있다.

메세지를 보내는 API부터 각 목차에 따라 API docs를 제공해준다. 

 

그리고 로그 및 어노테이션은 실행상태를 기록한다. 

실제로 배포하게 되면 사용자 입력이나 AI 응답을 로깅으로 확인할수 있는것이다. 

모니터링은 현재 URL와 API 상태를 확인할수 있고, 

총 대화수와 활성사용자수, 세션과 토큰속도 등 까지 생각보다 많은 정보를 모니터링할수 있다. 

 

 

Dify 사용해보자..! 

이렇게 dify를 직접 설치해보고, 간단하게 dify의 기능들을 살펴보았다.

아직 실제로 개발해본건 아니라서 어떨진 모르겠지만, 일단 확실한건 간단하게 LLM서비스를 만들어보기에는 좋은것 같다.

그리고 배포해서 운영하면서 모니터링해볼수 있다는 점까지 아주 확실한 오픈소스 프레임워크인것 같다. 

 

개인적으로 모니터링 지표들과 로그가 궁금하다. 

기회가 된다면 실제로 개발해서 운영까지 진행해보고 싶다.

작고 소중한 나만의 LLM 서비스를 만들어봐야겠다. 

728x90
반응형