
안녕하세요.
첫 글을 뭘 쓰면 좋을까 고민하다가, 일단 더 쉽게 다가갈 수 있는 것으로 정해보자!
라는 생각에 내부에서도 잘 활용하고 있는 오픈소스 LLM Flow GUI 툴인 FlowiseAI 에 대해서 간단히 소개하고 실습까지 다뤄보려고 합니다.다음에는 좀 더 복잡하게 엮은 Flowise Template 들에 대해서 말씀드릴 예정이에요.
FlowiseAI 는 저희 회사 내부적으로도 서비스 출시 전 아이디어 검증 및 프롬프트 테스트, 그리고 개발자와 기획자의 LLM 을 활용한 비지니스 아이디어의 검증을 위한 툴로써도 많이 활용되고 있습니다. (특히 기획자분들이 생각한 것을 Flowise 로 그려주고, 실행 결과를 보여주면 개발자는 그것에 맞게 빠른 개발이 가능하죠)
메뉴 구성
Chatflows → Chatflows 그리는 Flowise 핵심 기능
Marketplaces → Chatflows Template 또는 Tools Template 이 있는 곳
Tools → 기본 제공 Tools 외 Custom Tool 을 정의하는 곳
Assistants → OpenAI 의 Assistant API 를 사용해서 만든 Assistant 를 정의하는 곳
Credentials → 각종 API Key 등 저장해놓고 감춰둬야할 정보들을 정의하는 곳
Variables → 실행시에 가변적으로 넣어줄 변수 또는 미리 정의된 변수를 넣어놓고 Chatflow 에서 가져다 쓸 수 있게 만드는 곳
API Keys → Flowise 를 외부에서 호출해서 사용할 때 쓰이는 API Key 를 생성하는 곳
MarketPlaces
MarketPlaces 에는 참고할만한 Chatflows Template 들이 있습니다.
각각 이름에 해당 Template 의 구성이 나타나있고, 참고하기 좋다고 생각되는 템플릿을 들어가셔서 오른쪽 상단을 보시면 Use Template 있으니 알맞은 걸 사용하시면 됩니다.
조그마한 아이콘을 통해서 어떤 Feature 들을 사용했는지도 알려주네요.
이 Feature 들은 Flow 를 구성하는 아주 중요한 것들이기 때문에 아래에서 설명하겠습니다.
ChatFlows
저장된 Chatflow 들이 있는 곳입니다.
여기서 Add New 버튼을 클릭해서 백지부터 만들수도 있으며, Marketplaces 를 통해 Template 을 사용해서 만들 수도 있습니다.
초보자라면, 먼저 Template 을 사용해서 만들어보시는걸 추천합니다.
⭐️ Flows - Features
이렇게나 많은 Feature 들을 사용할 수 있습니다.
하나하나 다 짚고 넘어가기도 어려울 정도인데요.
크게 큰 메뉴들에 대해서만 설명하고 그 안에 속해있는 세부적인 것들은 사용하면서 보도록 하겠습니다.
Agents: 기본적으로 제공하는 Agent 들이 있는 곳입니다.
Cache: 캐시 메모리를 제공하는 메뉴
Chains: 실행 순서를 미리 엮을 수 있는 Chain 들이 있는 곳
Chat Models: LLM 중에서도 Chat Model 들이 있는 곳
Document Loaders: 다양한 타입의 문서를 읽어들일 수 있는 메뉴가 있는 곳
Embeddings: 문서를 Vector 로 바꾸기 위한 Embedding 관련 메뉴가 있는 곳
LLMs: 기본적인 Completion LLM 들이 있는 곳
Memory: 대화 저장 메모리 등 메모리를 제공하는 메뉴
Output Parser: LLM Output 을 파싱할 수 있는 것들이 있는 곳
Prompts: 프롬프트 관련된 것들이 있는 곳
Retrievers: 검색과 관련된 것들이 있는 곳
Text Splitters: 전체 문서를 한번에 임베딩 할 수 없기 때문에 읽어들인 문서를 잘라내는 것들이 있는 곳
Tools: 사용할 수 있는 툴들이 있는 곳
Utilities: 기타 유틸리티들이 있는 곳
Vector Stores: 벡터DB 에 관한 것들이 있는 곳
이 모든 것들을 구성하는 백엔드는 LangChainJS (https://js.langchain.com/docs/get_started/introduction)입니다. 그래서 Flowise 로 구성된 Flow 는 LangChain 으로 변환하기가 쉽습니다.
실습
먼저 준비가 필요합니다.
NodeJS 설치 (https://nodejs.org/en)→ 언제 실행하냐에 따라 버전이 달라지기 때문에 LTS 버전으로 설치하시면 됩니다.
각자의 OS 에 맞게끔 설치하셨다면, 이제부터 실습을 진행해보겠습니다.
실행
# NodeJS 설치 확인
node -v
# flowise 설치
npm install -g flowise
# 실행
flowise
실행이 정상적으로 되었다면, (localhost:3000) 접속하면 드디어 첫 페이지를 볼 수 있습니다. 축하합니다 🥰
Marketplaces 에서 Conversational Agent 를 클릭해서 템플릿 사용을 위해 오른쪽 위 Use Template 버튼을 클릭해줍니다.
Conversational Agent Template 을 이용해 Flow 구성 & 사용
이런 화면이 나왔다면 정상입니다.
제목은 신경쓰지 마시고, 플로우에 보이고 있는 내용들을 채워주시면 됩니다.
채우려고 보다보니, Credentials 에 정의하지 않은 것들이 있어서 난감하시죠??
괜찮습니다. Credentials 눌러보시면 -Create-New
메뉴가 있으니 바로 만들어주시면 됩니다!!
Model 은 gpt-4-turbo 또는 gpt-3.5-turbo 중 원하시는걸 선택하면 됩니다.
그리고 Serp API 는 구글 검색 등 검색에 관련된 편의 기능이 담긴 API 를 제공하는 사이트인데, 지금은 기본 채팅을 위한 Flow 를 구성하고 있기 때문에 지워주는겁니다.
그럼 오른쪽 위에 디스크 모양을 눌러 저장해줍시다.
저장해줄 때 이름 바꿔주는거 잊지 마시구요!!
저장하고 오른쪽 보라색 책모양 클릭하시면 드디어 채팅을 나눠볼 수 있습니다.
사실 첫번째 인사말은 Flowise 에서 고정적으로 해둔 것입니다.
하지만 갑자기 기분이 나쁘니(?) 왜 반말하냐고 물어봤어요. 😅
드디어 ChatGPT 가 아닌 곳에서도 OpenAI API Key 로 대화
를 나누는 시스템을 가지게 되었습니다 🔥🔥🔥
DocumentLoaders 를 활용해서 RAG 시스템 구축
이번에는 조금 더 복잡한 구성을 가진 시스템을 준비해봤어요.
조금이라도 LLM 서비스에 관심 있으셨다면 많이 들어보셨을 RAG 시스템. RAG 시스템을 이용해 Hallucination(환각증상) 을 개선할 수 있다 등 많이 들어보셨을 텐데요.
위에서 실습한 것과 똑같이 MarketPlaces 에서 Flowise Document QA Chatbot Template 을 선택했지만 밑에 캡쳐된 것을 보시면 저와는 좀 다른 부분이 있을겁니다.
사용자와 대화를 나누는 모델은 ChatGoogleGenerativeAI (Gemini) 를 사용하고, 나머지 RAG 시스템 구성은 OpenAI 의 GPT 모델을 활용하는 구성을 준비했습니다.
여러분들도 원하시는대로 구성을 변경해보세요!! 어떤 구성은 되고 어떤 구성은 안되고 시행착오를 거치시겠지만, 더욱 LLM 기반 시스템에 대한 이해가 높아지실 겁니다.
여기서는 2가지의 준비물이 더 필요한데요.
Gemini API Key 를 발급받기 위해서는 Google AI Studio(https://makersuite.google.com) 를 방문해야 합니다.
Github Access Key 발급을 위해서는 (https://github.com/settings/tokens?type=beta) 를 방문해서 접근 가능한 키를 만들어주셔야 합니다.
키를 만들고 Credentials 입력해줬다면 오른쪽 위 저장버튼을 누르고 대화를 한번 나눠볼까요?
Flowise Document QA Bot 은 자기가 참고한 문서를 아래쪽에 # 으로 보여주는 것을 알 수 있습니다.
저는 이 문서에는 없는 그저 제가 궁금한 질문을 했기 때문에, 아마도 제대로된 대답을 하지 못한거 같은데요.
근데 여러분 신기하지 않나요?
OpenAI 모델로 임베딩하고 Vector Store 에 저장했는데 저흰 Gemini 모델과 대화해서 결과를 찾아왔다는 사실을 말이죠!! 😎😎
과연 어떻게 이런게 가능할까요?? 같은 LLM 모델로만 시스템을 구성해야하는게 아니었을까요?
이렇게 다양한 LLM 을 사용해서도 원하는 시스템을 구성할 수 있다는걸 보여드리기 위해 준비했습니다.
앞으로는 더 디테일한 LLM 의 기반 지식 & 그 지식을 이용해서 서비스화 하는 과정들을 소개하며 저희가 풀어가는 문제들을 기술로 어떻게 해결하고 있는지 보여드리려고 합니다.
기대해주세요!!
끝으로
아주 간단한 RAG 시스템까지 구축해보았습니다.
어떠세요? 성능이 맘에 드시나요?
아주 디테일한 컨트롤이 불가능한 Flowise 에서 RAG 시스템을 시험해보기란 쉽지 않습니다.
특히 우리처럼 영어권 국가가 아닌 곳에서 영어가 아닌 언어의 문서를 임베딩해서 사용해서 높은 결과를 얻어내기란 참 쉽지 않죠.
하지만 복잡한 Flow 를 구성하기 위해선 간단한 Flow 부터 시작해야하는데 그 길을 Flowise 가 열어준 셈인데요.
이 글을 읽으시는 많은 분들이 더 쉽게 LLM 에 접근해서 나만의 서비스를 만드는 길을 개척해나가시길 바랄게요!