OpenAI API를 통해 자신의 데이터로 훈련된 챗봇 만들기 — SitePoint
이 기사에서는 OpenAI API를 사용하여 자신만의 챗봇을 훈련하고 테스트하는 방법과 이를 전 세계와 공유할 수 있는 웹 앱으로 전환하는 방법을 알아봅니다.
AI가 정보 기술에 혁명을 일으키면서 많은 사람들이 OpenAI와 같은 API 제공업체를 사용하여 AI를 데이터에 통합했습니다.
데이터에 AI를 사용하는 특히 좋은 방법은 자신만의 챗봇을 만드는 것입니다.
예를 들어 수천 개의 회사 수익 보고서로 구성된 데이터세트가 있다고 가정해 보겠습니다. 당신은 많은 시간을 들이지 않고 그것을 탐색하고 분석하고 싶습니다. 좋은 옵션은 문서에 대해 가질 수 있는 모든 질문에 답할 수 있는 챗봇을 만드는 것입니다. 문서를 수동으로 검색할 필요가 없습니다.
예를 들어, "지난 분기에 가장 좋은 수익을 올린 회사는 어디입니까?"라고 질문할 수 있습니다. — 일반적으로 데이터세트를 수동으로 조사하여 답변해야 하는 질문입니다. 귀하의 데이터에 대해 훈련된 챗봇을 사용하면 몇 초 안에 해당 질문에 대한 답변을 얻을 수 있습니다.
나만의 챗봇을 시작하려면 먼저 OpenAI API에 액세스해야 합니다. OpenAI API 키를 받으려면 OpenAI 웹사이트에 가입하세요. 그런 다음 홈페이지 오른쪽 상단에 있는 프로필 아이콘을 클릭하고API 키 보기을 클릭하고새 비밀 키 생성새 API 키를 생성합니다.
이 튜토리얼에서는 컴퓨터용 Wikipedia 페이지를 사용하여 컴퓨터와 그 역사에 대한 일반적인 질문에 답할 수 있는 간단한 챗봇을 만들 것입니다.
이 문서의 GitHub 리포지토리에서 텍스트 형식으로 데이터 세트를 다운로드할 수 있습니다.
챗봇을 만들 새 폴더를 만듭니다. 그런 다음 프로젝트 폴더 내에 chatbot_docs라는 폴더를 만들고 해당 폴더에 데이터세트 파일을 붙여넣습니다. (폴더 이름은 중요하지 않지만 이 튜토리얼에서는 이름을 chatbot_docs로 지정하는 것이 훨씬 쉽습니다.)
API 키와 데이터 세트 파일이 있으면 실제 코드를 시작할 수 있습니다.
프로젝트 폴더로 이동하여 새 프로젝트 폴더 내에 빈 Python 파일을 만듭니다.
이 작업을 완료한 후에는 터미널에서 다음을 실행하여 사용할 라이브러리를 다운로드하세요.
마지막으로 필요한 라이브러리를 모두 설치한 후 리포지토리의 Python 코드를 Python 파일에 붙여넣습니다.
이 튜토리얼에서는 가장 빠르고 비용 효율적이기 때문에 gpt-3.5-turbo OpenAI 모델을 사용합니다. 코드를 보시면 아시겠지만 저는 챗봇의 온도를 0으로 설정했습니다. 챗봇을 최대한 사실적으로 정확하게 만들기 위해 이렇게 했습니다. 그만큼온도 매개변수는 챗봇의 창의성을 결정합니다. 여기서 온도 0은 챗봇이 항상 사실적으로 정확함을 의미하고 온도 1은 챗봇이 창의성을 위해 답변과 세부 사항을 완전히 자유롭게 구성할 수 있음을 의미합니다. 정확하지 않습니다. 온도가 높을수록 챗봇의 창의성은 높아지고 사실 정확도는 떨어집니다.
이 코드 전체에서 "임베딩"이라는 단어를 언급합니다. 이는 챗봇이 이해하고 이해할 수 있도록 Wikipedia 문서의 텍스트로 변환되는 것입니다. 각 임베딩은 각 정보를 다른 정보와 얼마나 밀접하게 연관시키는지 -1에서 1까지의 숫자 목록입니다. text-embedding-ada-002가 무엇을 의미하는지 궁금하신 경우, 이는 가장 비용 및 시간 효율적이기 때문에 임베딩을 만드는 데 사용되는 모델일 뿐입니다.
이 코드는 chatbot_docs 폴더의 각 문서에 대한 임베딩 CSV 파일을 생성하며, 이 튜토리얼의 목적에 따라 하나의 임베딩 파일만 생성하므로 하나의 임베딩 파일만 생성됩니다. 그러나 더 많은 문서가 있는 경우 코드는 각 문서에 대한 임베딩 파일을 생성합니다. 이 접근 방식을 사용하면 챗봇의 확장성이 향상됩니다.
또한 청크가 있는 부분에 대해 궁금할 수도 있습니다.
설명하겠습니다. 이 코드는 컴퓨터에 관한 Wikipedia 페이지를 2000자 청크로 분할하고 250자 청크로 겹칩니다. 청크 크기가 클수록 챗봇의 컨텍스트가 커지지만 이로 인해 속도가 느려질 수도 있으므로 이 튜토리얼에서는 0과 4096(최대 청크 크기) 사이의 적절한 중간 지점으로 2000을 선택했습니다.