🛠️LLMOps와 오픈소스 툴 Dify

LLMOps는 우리가 지난 글에서 알아본 것처럼, 대규모 언어 모델(LLM)을 효율적으로 개발하고 운영하기 위한 방법론과 프로세스를 의미하는데요. 이런 LLMOps를 위한 오픈소스 LLM 애플리케이션 개발 플랫폼 Dify에 대해 소개해드리고자 합니다.

Dify는 AI 워크플로우, RAG 파이프라인, LLM 관리, 모니터링 등이 가능해서 LLM 애플리케이션을 빠르게 프로덕션 환경에 배포할 수 있도록 도와준다고 합니다.

✨Dify의 장점은?

그렇다면 다양한 LLM 개발 플랫폼 중 우리가 Dify를 고려해야 할 이유는 무엇일까요?

셀프 호스팅

Dify는 다른 클라우드 기반 LLM 개발 플랫폼과는 달리 오픈소스로 개발되고있기 때문에 셀프 호스팅이 가능합니다. 즉, 직접 제어할 수 있는 서버에 배포하여 웹으로 접근 가능하기 때문에 보안에 민감한 데이터를 기반으로도 더욱 안전한 환경에서 LLM 애플리케이션을 개발하고 배포할 수 있는 것이죠.

확장성

또한 Dify는 다양한 모델 제공자를 지원하고 있습니다. 이미 대중적인 OpenAI부터 Azure나 Google Cloud뿐만 아니라, Ollama 같은 로컬 LLM 제공자도 지원하고 있는데요. 이외에도 수십가지의 모델 제공자를 지원하고 있으며, 자세한 정보는 이 페이지에서 확인하실 수 있습니다.

Web UI 기반

Dify는 보기 쉬운 Web UI로 LLM 애플리케이션 개발과 관리가 가능하다는 장점 또한 가지고 있습니다. 아래에서도 직접 확인해보겠지만, 이런 직관적인 UI 덕분에 LLM 애플리케이션 개발 및 관리가 한 층 더 쉬워진다는 장점이 있습니다.

💻Dify를 로컬에 배포하고 접속해보기

Dify에 대해 알아봤으니 이제 Dify를 직접 사용해봐야겠죠? 공식 Github 레파지토리에 업로드된 Docker Compose 파일을 이용하면 Dify 구동에 필요한 모든 구성요소를 아래와 같이 로컬 환경에 쉽게 배포할 수 있습니다.

Dify 소스 코드 clone

먼저 아래 명령어로 로컬에 Dify 소스코드를 가져옵니다.

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

Dify 실행

아래 명령어로 Dify 구동에 필요한 환경변수 파일을 생성하고 Docker compose로 실행합니다.

cd dify/docker
cp .env.example .env
docker compose up -d

Dify를 Docker compose로 배포한 결과는 아래와 같습니다.

Docker compose 명령어로 Dify 관련 컨테이너를 확인해보면 아래와 같죠.

이렇게 배포된 컨테이너 중 주요 서비스 3개는 다음과 같습니다.

  • api
  • worker
  • web

그 외 디펜던시 구성요소는 아래와 같습니다.

  • weaviate
  • db
  • redis
  • nginx
  • ssrf_proxy
  • sandbox

이렇게 배포된 Dify의 구성요소 중 nginx 컨테이너가 배포되었기 때문에, 웹 브라우저에 localhost 경로로 Dify Web UI에 접속이 가능합니다.

관리자 계정 설정 후 로그인을 완료하면 아래처럼 로컬 환경에서 Dify 플랫폼을 이용할 수 있게 되는 거죠.

✅Dify 활용하기

그렇다면 Dify를 어떻게 활용할 수 있을까요? 아래와 같이 Dify의 활용 방안을 간략히 정리해봤습니다.

로컬 LLM을 연동하여 로컬 LLM 애플리케이션 개발

아래처럼 Dify는 다양한 모델 제공자와 연동할 수 있는데, 그 중 Ollama를 선택하면 로컬에서 구동 중인 LLM과 연동하여 애플리케이션 개발이 가능합니다. 조직 특성상 보안에 민감하거나 규모가 크지 않은 팀에서 활용하기 적절한 방식입니다.

Dify에서 기본 제공하는 템플릿 활용하여 LLM 애플리케이션 개발

Dify는 아래 사진처럼 다양한 LLM 애플리케이션 개발용 템플릿을 제공하는데요.

이 중 원하는 템플릿을 선택하면 아래 이미지와 같이 해당 애플리케이션 개발을 위한 스튜디오 화면과 테스트 창이 표시되어 LLM 애플리케이션을 빠르게 개발 및 테스트가 가능합니다.

LLM 애플리케이션 개발을 위한 컨텍스트 생성

개발하려는 LLM 애플리케이션에 주입할 텍스트 데이터 등의 컨텍스트를 아래와 같이 Web UI에서 생성할 수 있습니다.

컨텍스트로 저장 가능한 파일 포맷으로는 TXT, markdown, PDF, XLSX, CSV 등이 있습니다.

References