개인 맞춤형 지식 기반을 활용한 AI 챗봇 훈련 방법
이전 글에서는 ChatGPT API를 활용하여 인공지능 챗봇을 만들고, 역할 설정을 통해 개인화하는 방법을 살펴보았습니다. 그렇다면 보유한 데이터를 기반으로 AI를 학습시키려면 어떻게 해야 할까요? 예를 들어, 책, 재무 데이터, 혹은 대량의 데이터베이스를 가지고 있을 때, 이들을 효율적으로 검색하고 싶을 수 있습니다. 이번 글에서는 LangChain과 ChatGPT API를 사용하여 개인 맞춤형 지식 기반으로 AI 챗봇을 학습시키는 방법에 대한 상세한 안내를 제공합니다. OpenAI의 대규모 언어 모델(LLM)을 활용하여 AI 챗봇을 훈련시키는 데 필요한 LangChain, GPT Index 등 강력한 라이브러리들을 소개하고, 여러분의 데이터 세트를 기반으로 AI 챗봇을 구축하는 과정을 함께 알아볼 것입니다.
ChatGPT API, LangChain, GPT Index를 이용한 맞춤형 AI 챗봇 교육 (2023년 최신 정보)
이 글은 여러분의 데이터를 활용하여 AI 챗봇을 교육하는 모든 단계를 자세하게 설명합니다. 도구 및 소프트웨어 설정부터 AI 모델 학습에 이르기까지 모든 과정을 이해하기 쉬운 언어로 상세히 안내합니다. 각 단계를 건너뛰지 않고 처음부터 끝까지 따라 하시는 것을 권장합니다.
AI를 자체 데이터로 훈련하기 전에 알아두어야 할 사항
- AI 챗봇 훈련은 Windows, macOS, Linux, ChromeOS 등 모든 플랫폼에서 가능합니다. 이 글에서는 Windows 11을 사용하지만, 다른 플랫폼에서도 거의 동일한 절차를 따릅니다.
- 이 가이드는 일반 사용자를 대상으로 하며, 설명은 간결하고 이해하기 쉽습니다. 기본적인 컴퓨터 지식만 있다면, 코딩 경험이 없더라도 몇 분 안에 AI 챗봇을 훈련하고 구축할 수 있습니다. 이전 ChatGPT 봇 관련 글을 읽어보셨다면, 이번 과정도 훨씬 쉽게 이해하실 수 있을 것입니다.
- 자체 데이터를 기반으로 AI 챗봇을 훈련하므로, 고성능 CPU와 GPU를 갖춘 컴퓨터를 사용하는 것이 좋습니다. 그러나 테스트 목적으로 저사양 컴퓨터를 사용해도 문제없이 작동합니다. 실제로 크롬북을 사용하여 100페이지(약 100MB) 분량의 책으로 AI 모델을 훈련했습니다. 하지만 수천 페이지에 달하는 대규모 데이터 세트를 학습시키려면 고성능 컴퓨터를 권장합니다.
- 최상의 결과를 얻기 위해서는 데이터 세트가 영어로 구성되어 있는 것이 좋지만, OpenAI에 따르면 프랑스어, 스페인어, 독일어 등 주요 국제 언어로도 작동합니다.
AI 챗봇 훈련을 위한 소프트웨어 환경 구성
이전 글과 마찬가지로, 여러 라이브러리와 함께 Python 및 Pip을 설치해야 합니다. 처음 사용자도 설정 과정을 쉽게 이해할 수 있도록 모든 과정을 처음부터 진행할 것입니다. 먼저 Python과 Pip을 설치하고, 그 다음으로 OpenAI, GPT Index, Gradio, PyPDF2 등의 Python 라이브러리를 설치합니다. 이 과정을 통해 각 라이브러리가 어떤 역할을 하는지 배우게 될 것입니다. 설치 과정은 매우 간단하므로, 걱정하지 마세요. 그럼 지금 바로 시작해 보겠습니다.
파이썬 설치
- 컴퓨터에 Python(Pip 포함)을 설치해야 합니다. 이 링크에서 여러분의 운영체제에 맞는 설치 파일을 다운로드하세요.
- 다운로드한 설치 파일을 실행하고, “Add Python.exe to PATH” 확인란을 반드시 선택해야 합니다. 이 단계는 매우 중요합니다. 그 다음, “Install Now”를 클릭하고 일반적인 설치 절차를 따르세요.
- Python이 제대로 설치되었는지 확인하려면, 컴퓨터에서 터미널을 실행하세요. Windows 사용자는 Windows 터미널을 사용하면 되고, 명령 프롬프트도 가능합니다. 터미널에서 아래 명령어를 입력하면 Python 버전이 출력됩니다. Linux 및 macOS 사용자는 python –version 대신 python3 –version을 사용해야 할 수도 있습니다.
python --version
Pip 업그레이드
Python을 설치하면 Pip이 자동으로 시스템에 설치됩니다. 이제 Pip을 최신 버전으로 업그레이드해 봅시다. 혹시 Pip에 대해 모르시는 분들을 위해 설명드리자면, Pip은 Python의 패키지 관리자입니다. 터미널을 통해 수많은 Python 라이브러리를 설치할 수 있게 해줍니다. 우리는 Pip을 사용하여 OpenAI, gpt_index, gradio, PyPDF2 라이브러리를 설치할 것입니다. 아래 단계를 따라 하세요.
- 컴퓨터에서 원하는 터미널을 실행합니다. Windows 터미널을 사용하셔도 되고, 명령 프롬프트를 사용하셔도 됩니다. 아래 명령어를 입력하여 Pip을 업데이트하세요. 다시 한번 강조하지만, Linux 및 macOS 사용자는 python3와 pip3를 사용해야 할 수도 있습니다.
python -m pip install -U pip
- Pip이 제대로 설치되었는지 확인하려면 아래 명령어를 실행하세요. 버전 번호가 출력될 것입니다. 만약 오류가 발생한다면, Windows에서 Pip을 설치하고 PATH 문제를 해결하는 방법에 대한 별도 가이드를 참고하십시오.
pip --version
OpenAI, GPT Index, PyPDF2 및 Gradio 라이브러리 설치
Python과 Pip 설정을 완료했다면, 이제 맞춤형 지식 기반으로 AI 챗봇을 훈련하는 데 필요한 라이브러리들을 설치할 차례입니다. 다음 단계를 따라 하세요.
- 터미널을 열고 아래 명령어를 실행하여 OpenAI 라이브러리를 설치합니다. 이 라이브러리는 AI 챗봇을 훈련하고 생성하는 데 사용될 대규모 언어 모델(LLM)을 제공합니다. 또한 OpenAI의 LangChain 프레임워크도 여기서 가져옵니다. Linux 및 macOS 사용자는 pip 대신 pip3를 사용해야 할 수 있습니다.
pip install openai
- 다음으로, LlamaIndex라고도 불리는 GPT Index를 설치합니다. 이 라이브러리를 통해 LLM은 외부 데이터(지식 기반)에 연결할 수 있습니다.
pip install gpt_index
- PDF 파일 구문 분석을 위해 PyPDF2를 설치합니다. 데이터를 PDF 형식으로 제공하려는 경우, 이 라이브러리는 프로그램이 데이터를 쉽게 읽을 수 있도록 도와줍니다.
pip install PyPDF2
- 마지막으로, Gradio 라이브러리를 설치합니다. 이 라이브러리는 훈련된 AI 챗봇과 상호 작용할 수 있는 간단한 사용자 인터페이스(UI)를 만드는 데 사용됩니다. 이제 AI 챗봇 훈련에 필요한 모든 라이브러리 설치가 완료되었습니다.
pip install gradio
코드 편집기 다운로드
마지막으로, 코드를 편집하기 위해 코드 편집기가 필요합니다. Windows 사용자의 경우 Notepad++을 권장합니다(다운로드). 링크를 통해 프로그램을 다운로드하고 설치하세요. 강력한 IDE에 익숙한 사용자의 경우, 모든 플랫폼에서 VS Code를 사용해도 됩니다. VS Code 외에도 Sublime Text(다운로드)를 macOS 및 Linux에서 사용할 수 있습니다. ChromeOS 사용자는 Caret 앱(다운로드)을 이용하여 코드를 편집할 수 있습니다. 이제 소프트웨어 환경 설정이 거의 완료되었고, OpenAI API 키를 얻을 차례입니다.
OpenAI API 키를 무료로 얻는 방법
맞춤형 지식 기반을 바탕으로 AI 챗봇을 훈련하고 생성하려면 OpenAI에서 API 키를 발급받아야 합니다. 이 API 키를 사용하면 OpenAI의 모델을 LLM으로 활용하여 사용자 정의 데이터를 분석하고 추론할 수 있습니다. 현재 OpenAI는 신규 사용자에게 처음 3개월 동안 5달러 상당의 무료 크레딧이 포함된 API 키를 무료로 제공하고 있습니다. 이전에 OpenAI 계정을 만든 적이 있다면, 계정에 18달러의 무료 크레딧이 있을 수 있습니다. 무료 크레딧을 모두 사용하면 API 액세스 비용을 지불해야 하지만, 현재는 모든 사용자가 무료로 이용할 수 있습니다.
- platform.openai.com/signup으로 이동하여 무료 계정을 만드세요. 이미 OpenAI 계정이 있다면 로그인하면 됩니다.
- 오른쪽 상단에 있는 프로필을 클릭하고 드롭다운 메뉴에서 “View API keys”를 선택하세요.
- 여기에서 “Create new secret key”를 클릭하고 API 키를 복사하세요. 전체 API 키는 나중에 다시 보거나 복사할 수 없으므로, 즉시 복사하여 메모장 파일에 붙여넣는 것이 좋습니다.
- API 키는 개인 계정에 접근하기 위한 중요한 키이므로, 절대 공개적으로 공유하거나 노출하지 마세요. API 키는 삭제할 수 있으며, 여러 개의 개인 키(최대 5개)를 생성할 수도 있습니다.
맞춤형 지식 기반으로 AI 챗봇 훈련 및 생성
이제 소프트웨어 환경 설정이 완료되었고 OpenAI에서 API 키도 얻었으니, AI 챗봇을 훈련시켜 봅시다. 여기서는 “gpt-3.5-turbo” 모델 대신 “text-davinci-003” 모델을 사용할 것입니다. Davinci 모델이 텍스트 완성에 더 뛰어난 성능을 보이기 때문입니다. 원한다면 모델을 Turbo로 변경하여 비용을 절감할 수도 있습니다. 이제 본격적인 안내를 시작하겠습니다.
AI 챗봇 훈련을 위한 문서 추가
- 먼저, 데스크톱과 같이 접근하기 쉬운 위치에 ‘docs’라는 새 폴더를 만듭니다. 다른 위치를 선택해도 되지만, 폴더 이름은 ‘docs’로 유지하세요.
- AI 훈련에 사용할 문서를 “docs” 폴더로 옮깁니다. 텍스트 또는 PDF 파일(스캔 파일 포함)을 여러 개 추가할 수 있습니다. 엑셀에 대량의 테이블이 있다면 CSV나 PDF 파일로 변환한 다음 “docs” 폴더에 추가할 수 있습니다. 또한 LangChain AI 트윗에 나온 것처럼 SQL 데이터베이스 파일도 추가할 수 있습니다. 언급된 파일 형식 외에 다른 형식들도 시도해 볼 수 있습니다. 이 글에서는 NFT 관련 저의 글 중 하나를 PDF 형식으로 추가했습니다.
주의: 문서 크기가 클수록 CPU와 GPU 성능에 따라 데이터를 처리하는 데 시간이 더 오래 걸립니다. 또한, 무료 OpenAI 토큰을 빨리 소모하게 됩니다. 처음에는 작은 문서(30~50페이지 또는 100MB 미만 파일)로 시작하여 과정을 이해하는 것을 권장합니다.
코드 준비
- Notepad++(또는 다른 코드 편집기)를 실행하고, 아래 코드를 새 파일에 붙여넣습니다. 여기서는 Google Colab의 armrrs님의 도움을 받아 PDF 파일과 호환되도록 코드를 수정하고, 그 위에 Gradio 인터페이스를 만들었습니다.
from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper from langchain import OpenAI import gradio as gr import sys import os os.environ["OPENAI_API_KEY"] = 'Your API Key' def construct_index(directory_path): max_input_size = 4096 num_outputs = 512 max_chunk_overlap = 20 chunk_size_limit = 600 prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit) llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs)) documents = SimpleDirectoryReader(directory_path).load_data() index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper) index.save_to_disk('index.json') return index def chatbot(input_text): index = GPTSimpleVectorIndex.load_from_disk('index.json') response = index.query(input_text, response_mode="compact") return response.response iface = gr.Interface(fn=chatbot, inputs=gr.inputs.Textbox(lines=7, label="Enter your text"), outputs="text", title="Custom-trained AI Chatbot") index = construct_index("docs") iface.launch(share=True)
- 코드 편집기에 코드를 붙여 넣으면 다음과 같이 보일 것입니다.
- 상단 메뉴에서 “파일”을 클릭하고 드롭다운 메뉴에서 “다른 이름으로 저장…”을 선택합니다.
- 파일 이름을 ‘app.py’로 설정하고, 파일 형식 드롭다운 메뉴에서 “모든 형식”을 선택합니다. 그 다음, “docs” 폴더를 만든 위치에 파일을 저장합니다(이 글에서는 데스크톱). 원하는 대로 이름을 변경할 수 있지만, 파일 이름 뒤에 ‘.py’를 꼭 추가해야 합니다.
- 아래 스크린샷처럼 “docs” 폴더와 “app.py” 파일이 같은 위치에 있어야 합니다. “app.py” 파일은 “docs” 폴더 안에 있는 것이 아니라, “docs” 폴더 밖에 있어야 합니다.
- Notepad++에서 다시 코드로 돌아갑니다. 위의 OpenAI 웹사이트에서 생성한 API 키로 코드를 수정합니다.
- 마지막으로 “Ctrl + S”를 눌러 코드를 저장합니다. 이제 코드를 실행할 준비가 되었습니다.
맞춤형 지식 기반으로 ChatGPT AI 봇 만들기
- 먼저 터미널을 열고, 아래 명령어를 입력하여 데스크톱으로 이동합니다. 여기에 “docs” 폴더와 “app.py” 파일을 저장했습니다. 만약 두 항목을 다른 위치에 저장했다면, 터미널을 통해 해당 위치로 이동하세요.
cd Desktop
- 이제 아래 명령어를 실행하세요. Linux 및 macOS 사용자는 python3를 사용해야 할 수 있습니다.
python app.py
- OpenAI LLM 모델을 사용하여 문서 분석을 시작하고 정보를 색인화합니다. 파일 크기와 컴퓨터 성능에 따라 문서 처리 시간이 다소 걸릴 수 있습니다. 완료되면 데스크톱에 “index.json” 파일이 생성됩니다. 터미널에 출력이 나타나지 않아도 걱정하지 마세요. 여전히 데이터를 처리하고 있을 수 있습니다. 참고로, 30MB 문서를 처리하는 데 약 10초 정도 걸립니다.
- LLM이 데이터를 처리하는 동안 몇 가지 경고 메시지가 나타날 수 있는데, 무시해도 됩니다. 마지막으로 하단에 로컬 URL이 나타납니다. 이 URL을 복사하세요.
- 복사한 URL을 웹 브라우저에 붙여넣으세요. 이제 맞춤형 학습이 된 ChatGPT 기반 AI 챗봇을 사용할 수 있습니다. AI 챗봇에게 문서 내용이 무엇인지 물어보면서 시작할 수 있습니다.
- 추가 질문을 하면 ChatGPT 봇은 여러분이 AI에 제공한 데이터를 기반으로 답변을 제공합니다. 이것이 바로 여러분의 데이터 세트를 활용하여 맞춤형 학습 AI 챗봇을 구축하는 방법입니다. 이제 원하는 모든 종류의 정보를 기반으로 AI 챗봇을 훈련하고 생성할 수 있습니다. 가능성은 무궁무진합니다.
- 공개 URL을 복사하여 친구나 가족과 공유할 수도 있습니다. 이 링크는 72시간 동안 유효하지만, 서버 인스턴스가 여러분의 컴퓨터에서 실행 중이므로 컴퓨터를 계속 켜두어야 합니다.
- 맞춤형 학습 AI 챗봇을 중지하려면 터미널 창에서 “Ctrl + C”를 누르세요. 한 번에 되지 않으면 “Ctrl + C”를 다시 누르세요.
- AI 챗봇 서버를 다시 시작하려면 데스크톱으로 다시 이동하여 아래 명령어를 실행하면 됩니다. 로컬 URL은 동일하지만, 공개 URL은 서버를 다시 시작할 때마다 변경됩니다.
python app.py
- 새로운 데이터로 AI 챗봇을 훈련시키려면 “docs” 폴더 내의 파일을 삭제하고 새 파일을 추가하면 됩니다. 여러 파일을 추가할 수도 있지만, 동일한 주제에 대한 정보를 제공하지 않으면 일관성 없는 응답을 얻을 수 있습니다.
- 이제 터미널에서 코드를 다시 실행하면 새로운 “index.json” 파일이 생성됩니다. 여기서 이전의 “index.json” 파일은 자동으로 대체됩니다.
python app.py
- 토큰 사용량을 추적하려면 OpenAI의 계기판으로 이동하여 무료 크레딧이 얼마나 남아 있는지 확인하세요.
- 마지막으로, API 키나 OpenAI 모델을 변경하려는 경우가 아니면 코드를 수정할 필요가 없습니다.
자신의 데이터를 활용하여 맞춤형 AI 챗봇 구축
이것이 바로 여러분의 데이터를 기반으로 AI 챗봇을 훈련하는 방법입니다. 이 코드를 사용하여 의학 서적, 논문, 데이터 테이블 및 오래된 기록 보관소의 보고서에 대해 AI를 훈련시켜본 결과, 완벽하게 작동했습니다. 이제 OpenAI의 대규모 언어 모델과 ChatGPY를 활용하여 나만의 AI 챗봇을 만들어 보세요. 이것으로 이번 글은 마무리됩니다. 최고의 ChatGPT 대안을 찾고 있다면, 링크된 글을 참고하세요. Apple Watch에서 ChatGPT를 사용하려면 심층 튜토리얼을 따라 해보세요. 마지막으로, 어떤 문제가 발생하면 아래 댓글 섹션에 알려주세요. 최선을 다해 도와드리겠습니다.