2023. 10. 28. 18:10ㆍMachine Learning
쉽고 간편한 LLM Chatbot 만들기 - 1
학교 챗봇을 만들려고 이리저리 알아보다가 OpenAI Fine-Turning이나 의도 분류 모델을 활용한 챗봇에 대해 알아보다가, 이보다 더 쉽고 간편하게 LLM 기반 챗봇을 만들 수 있는 것을 찾게 되어서 관련
blog.ukong.studio
이전 내용은 EmbedChain에 대해 소개를 했는데, 이번 내용은 EmbedChain을 활용한 간단한 예제를 보여주려고 한다.
작업 환경은 Windows에서 진행하였으며 파이썬 (Python 3.11.4) 언어로 개발하였다.
먼저 아래의 명령어를 통해 필요한 라이브러리를 설치해 주길 바란다.
pip install virtualenv
virtualenv는 내 컴퓨터의 가상 환경을 만들고 해당 환경을 관리하는 데 사용하는 도구이다.
우리가 여러 프로젝트를 진행하고 있을 때 각 프로젝트마다 요구하는 라이브러리와 버전이 존재할 텐데, 만약 하나의 환경에서 여러 개의 프로젝트를 실행하려고 하면 에러가 발생할 것이다. 그래서 각 프로젝트마다 가상 환경을 만들어주고 그 안에서 작업하는 것이 일반적이다.
위 라이브러리를 설치했다면 개발 폴더를 하나 생성하고 해당 경로에서 명령 프롬포트 창을 켜고 아래의 명령어를 사용하면 된다.
virtualenv env
그러면 개발 폴더에 env라는 폴더가 생겼을 것이다. 명령 프롬포트 창에서 가상 환경을 활성화하는 방법은 아래와 같다.
.\env\Scripts\activate
위 사진처럼 경로 옆에 (env)가 떴다면 가상 환경에 접근 성공한 것이다. 앞으로 이 환경 안에서 라이브러리를 설치하고 실행할 것이다. 만약 가상 환경을 비활성화하고 싶다면 위 명령어에서 activate에서 deactivate로 수정해서 입력하면 된다.
이제 가상 환경에서 필요한 라이브러리를 설치할 것이다.
pip install embedchain
설치가 완료되었다면 본인이 선호하는 코드 에디터를 키고 개발 폴더에 파이썬 파일을 생성하길 바란다.
본 내용에서는 Visual Studio Code 에디터를 사용하였다.
우선 나는 기계 학습에 대한 챗봇을 만들기 위해 아래와 같이 코드를 작성하였다.
import os
from embedchain import App
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"
ML_bot = App()
# 기계 학습 위키피디아
ML_bot.add("https://ko.wikipedia.org/wiki/%EA%B8%B0%EA%B3%84_%ED%95%99%EC%8A%B5")
while True:
answer = ML_bot.query(input("질문: "))
print("답변:", answer)
처음 해당 문서를 접할 때 DB라는 폴더를 로컬에 만들고 embedding => vector화 하는 것 같았다.
이 과정을 한번이라도 하면 이후에는 청크와 임베딩 생성하는 것을 스킵하게 된다.
실행하면 기계 학습에 대해 설명해 주는 것을 볼 수 있었다.
Doc content has not changed. Skipping creating chunks and embeddings
질문: 기계 학습에 대해 설명해줘
답변: 기계 학습은 컴퓨터 시스템이 데이터를 분석하고 패턴을 학습하여 예측하거나 결정을 내리는 방법입니다. 이를 위해 기계 학습은 다양한 알고리즘과 모델을 사용합니다. 기계 학습은 크게 지도 학습, 비지도 학습, 준지도 학습, 강화 학습 등으로 분류 됩니다.
지도 학습은 입력 데이터와 해당 데이터에 대한 정답(레이블)을 가지고 모델을 학습시키는 방법입니다. 이를 통해 새로운 입력 데이터에 대한 예측을 할 수 있습니다. 예를 들어, 스팸 메일 필터링이나 손글씨 인식 등이 지도 학습의 예입니다.
비지도 학습은 정답(레이블)이 없는 데이터를 사용하여 모델을 학습시키는 방법입니다. 이를 통해 데이터의 패턴이나 구조를 발 견하거나 군집화를 할 수 있습니다. 예를 들어, 고객 세그먼테이션이나 이미지 분할 등이 비지도 학습의 예입니다.
준지도 학습은 일부 데이터에만 정답(레이블)이 있는 경우에 사용되는 방법입니다. 이를 통해 정답이 없는 데이터에 대한 예측을 할 수 있습니다. 예를 들어, 온라인 쇼핑몰에서 구매한 고객의 행동 패턴을 분석하여 다른 고객에게 상품을 추천하는 것이 준지도 학습의 예입니다.
강화 학습은 에이전트가 환경과 상호작용하며 보상을 최대화하는 방법을 학습하는 방법입니다. 예를 들어, 게임에서 승리를 위해 최적의 전략을 학습하는 것이 강화 학습의 예입니다.
기계 학습은 다양한 알고리즘과 모델을 사용하여 데이터를 분석하고 예측하는 방법입니다. 이를 통해 다양한 분야에서 문제를 해결하고 예측을 수행할 수 있습니다.
질문: 세종대왕에 대해 알아?
답변: I'm sorry, but I don't have enough information to answer your query about 세종대왕.
학습된 내용에 대해서는 잘 설명하는 것을 확인할 수 있었으나 학습되지 않은 "세종대왕"에 대해서는 충분한 정보가 없다고 하면서 답변을 안 하는 것을 확인할 수 있었다.
지금까지 간단하게 기계 학습에 관한 봇을 만드는 것에 대해 설명하였는데, 특정 도메인에 특화된 챗봇을 만들려면 그에 맞는 데이터를 제공해 주면 된다.
EmbedChain은 다양한 데이터 타입들을 지원하는데 아래의 링크를 통해 지원하는 데이터 타입을 찾아서 자신만의 LLM 챗봇을 만들 수 있길 바란다.
📊 CSV - Embedchain
To add any csv file, use the data_type as csv. csv allows remote urls and conventional file paths. Headers are included for each line, so if you have an age column, 18 will be added as age: 18. Eg: from embedchain import App app = App() app.add('https://pe
docs.embedchain.ai
'Machine Learning' 카테고리의 다른 글
쉽고 간편한 LLM Chatbot 만들기 - 1 (0) | 2023.10.28 |
---|