오픈소스 LLMOps의 끝판왕 dify

고준서의 기술블로그·2024년 7월 11일
44

LLM

목록 보기
6/6
post-thumbnail

최근 LLMOps에 관심을 가지게 되었습니다. Langchain과 LlamaIndex를 직접 사용해보며, 사용자 인터페이스를 통해 편하게 사용 가능한 Chain제작에 흥미를 가지게 되었습니다.

그러던 와중 Dify 를 알게 되었습니다. 이걸 보고 저는 진짜 대박이라고 느꼈습니다. Langchain과 다양한 코드를 통해 개발을 해야하던 방식과 달리 손쉽게 No-Code로 복잡한 Langchain을 구현할 수 있었습니다.

그리고 무엇보다 좋은 점은 직접 self-hosting 할 수 있기 때문에, 1인 사용은 완벽하게 무료로 사용할 수 있었습니다. 지금부터 제가 직접 사용하며 느낀 Dify를 소개해드리고자 합니다.

손쉬운 설치

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

먼저 github 소스를 clone해 줍니다. 그리고 아래의 명령어를 실행시켜 줍니다. 경로를 이동해서 복사를 해주는 코드입니다.

cd dify/docker
cp .env.example .env

다음은 docker와 docker compose가 깔려있어야 합니다. .env파일을 수정해주셔야 하는데, 하단에 원하는 포트 번호를 입력해주시면 해당 포트로 웹 서비스가 열립니다.

# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=<원하는 포트 번호>
EXPOSE_NGINX_SSL_PORT=443

그 후, docker compose를 통해 시작합니다.

docker compose up -d   #시작
docker compose down    #끝내고 싶을때

이후 간단한 회원가입을 마치면 아래와 같은 워크스페이스를 볼 수 있습니다.

강력한 Retrieve 기능

지식 탭을 누르면 Retrieve를 위한 데이터 소스를 업로드할 수 있습니다. 지식 생성을 한번 눌러볼까요?

텍스트, 노션, 웹사이트 등 다양한 소스로부터 데이터를 불러올 수 있습니다. 이제 이 데이터를 바탕으로 검색하여 불러올 수 있습니다.

강력한 도구

Dify에는 다양한 도구를 지원합니다. 검색엔진 활용부터 github, wikipedia, youtube 등 복잡한 코딩과 API로 개발해야하는 부분을 간단하게 구현하고 있습니다.

저는 여기서 DuckDuckGo가 가장 맘에 들었습니다. Google 검색이나 Bing 검색은 유료 API를 발급받아야 했지만 해당 도구는 바로 검색엔진을 쓸 수 있기 때문입니다.

다양한 언어모델

설정-모델 제공자를 클릭하면 다양한 언어모델을 확인할 수 있습니다. 여러 언어 모델을 지원하고 있기 때문에, API를 입력하여 구성할 수 있습니다. 더욱 좋은 점은 ollama와 같은 self-hosted 모델을 사용해줄 수 있다는 점입니다.

Chain 구성하기

다시 스튜디오로 돌아와봅시다. 앱 만들기를 통해 빈 상태로 시작을 누르면 바로 새로운 앱을 시작해볼 수 있습니다. 여기서 워크 플로우를 선택하면 저희가 상상하는 langchain을 코드 한줄 없이 구성할 수 있습니다. workflow를 선택하면 다양한 chain을 엮을 수 있습니다. 그 외에 다른 챗봇, 텍스트 생성기, 에이전트 등도 나름의 포멧을 지원합니다.

아마 Langchain을 써보신 분들이라면 손쉽게 사용해보실 수 있을겁니다. 저는 사용자가 질문을 주었을때, 노동법과 관련된 질문이면 retrieve를 통해서 정보를 가져오고, 관련되지 않은 경우 검색 엔진을 사용하여 정보를 가져오도록 만들어주었습니다. 디버그 및 미리보기를 눌러서 물어볼까요?

실행결과를 보실까요? 놀랍게도 코드 한줄 없이 RAG 기능이 구현 가능합니다. 진짜 놀랍습니다. 출처도 깔끔하게 반환해줍니다. 지금은 한국의 근로기준법만 지식베이스로 업로드 해주었습니다. 지식베이스에 없는 형사소송법에 대해 물어봅시다.

저장된 지식베이스에서 검색이 안될 경우 웹 검색을 하도록 조건문을 걸어줄 수 있으며, 이런식으로 결과를 잘 반환 받을 수 있습니다. 제일 놀라운 사실은 이 내용을 구성하는데 한줄의 코드도 작성하지 않았다는 것입니다.

워크 플로우 과정을 클릭하면, 어떤 과정을 통해 해당 결과를 도출하게 되었는지 매우 편하게 보여줍니다.

배포하기

이런식으로 배포를 하면, 사람들이 직접 사용해볼 수 있도록 UI를 제공합니다.

더욱 놀라운 점은 웹사이트에 임베딩 할 수 있도록 API를 제공한다는 점입니다. 본인의 서비스에 손 쉽게 임베딩을 할 수 있습니다. 이 외에도 API를 제공해주어 편하게 사용해볼 수 있습니다.

결론

간단하게 설명드려 모든 내용을 담지 못했지만, Langchain, LLMOps의 사용을 고민하고 계신 분들이라면 이 내용을 통해 Dify의 매력을 느끼실 수 있으실거라 생각합니다.

여러명과의 협업 상황에서도 이 LLMOps를 통해 사용한다면 개발자와 프롬프트/RAG 엔지니어가 효과적으로 협업할 수 있을 것으로 보입니다.

아쉬운점

여러명이 여러개의 분리된 워크스페이스에서 사용하려면 유료 버전을 사용해주어야 합니다. 여러 명이 한개의 프로젝트를 작업하는 것은 이메일을 통해 추가하여 사용할 수 있습니다.

2개의 댓글

comment-user-thumbnail
2024년 7월 20일

와...대박이네요

미니프로젝트를 손쉽고 직관적으로 구현해볼수있을거같아요!

답글 달기
comment-user-thumbnail
2025년 2월 2일

제가 몸담고 있는 hyperflow-ai와 가장 닮은 툴이네요. 저는 이제 시작이어서 여기저기 관련된 내용을 찾다가 이 블로그를 발견하고 기쁜 마음에 댓글까지 쓰게 됩니다.
https://hyperflow-ai.com/ 으로 들어오셔서 베타 신청하시고, 한번 살펴봐 주시고, 많은 의견 부탁 드립니다.
혹시 베타신청에 대한 응대가 없으면 저한테 메일 부탁 드립니다.

답글 달기

관련 채용 정보