뭔가를 기록할 때 완전하게 structure를 짜고 순서대로 작성하면 좋을텐데 현재는 큰 틀을 잡아가기에는 모르는게 너무나도 많고 쫌쫌따리 알아가고 있으니까 현재는 공부하고 있는 걸 정리하고, 추후에 한번에 정리해야겠다고 생각했다
대형 언어 모델(LLM)은 2020년 OpenAI의 GPT-3가 등장하면서 활성화됐다. 랭체인(Langchain)은 이러한 시기에 해리슨 체이스에 의해 등장했다. 2022년 10월 말에 첫 번째 커밋되고 라이브러리의 초기 단계임에도 불구하고, 이미 LLM의 핵심을 구현하기 위한 여러 기능으로 구성되어있다.
LangChain은 LLM을 중심으로 구축된 프레임워크이다.
챗봇이나 Question-Anwering(QA)를 생성하거나, summeriazation(요약)과 같은 task에 사용할 수 있다.
해당 라이브러리의 핵심 아이디어는 LLM에 대한 사용 사례를 만들기 위해 다양한 구성 요소를 함께 "연결"할 수 있다는 것이다.
chain은 여러 모듈의 여러 구성 요소로 구성될 수 있다.
여기서의 여러 모듈은
(1) Prompt Template(프롬프트 템플릿) :
다양한 유형의 프롬프트를 위한 템플릿이다.
챗봇 스타일의 템플릿 혹은 QA 템플릿 등을 말한다.
(2) LLM(대형 언어 모델):
수많은 파라미터(보통 수십억 웨이트 이상)를 보유한 인공 신경망으로 구성되는 언어 모델이다. 자기 지도 학습이나 반자기지도학습을 사용하여 레이블링되지 않은 상당한 양의 텍스트로 훈련되는데
GPT-3, GPT-4와 같은 대형 언어 모델이다.
(3) Agent(에이전트) :
에이전트는 어떤 지침을 따라야하는지 결정하기 위해 LLM을 사용한다.
웹 검색이나 계산기와 같은 도구를 사용할 수 있으며, 논리적인 작업이 가능하도록 패키징 되어 있다.
(4) Memory(메모리) :
단기 기억 메모리(Short-term memory), 장기 기억 메모리(long-term memory) 등이 있다.
프롬프트 템플릿
LLM에 입력되는 프롬프트는 우리가 다른 결과를 얻을 수 있도록 다른 방식으로 구조화된다.
QA의 경우, 사용자의 질문을 받아 기존의 Q&A, 답변 목록 또는 주어진 질문과 관련된 문제 요약과 같은 다양한 Q&A 스타일에 대해 다시 포매팅 할 수 있다.
먼저 당연히 Langchain 라이브러리를 다운받아야 한다.
!pip install langchain
LangChain은 Hugging Face 및 OpenAI에서 여러 LLM 모델들을 제공한다. LangChain을 이용해서 Hugging Face와 OpenAI의 LLM 모델과 prompt를 통합하는 방법을 수행해보려고 한다.
[1] Hugging Face 사용하기
먼저 huggingface_hub 라이브러리를 다운받아야한다.
!pip install -qU huggingface_hub
huggingface_hub 라이브러리를 사용하려면
huggingface 홈페이지에 들어가서 회원가입 후에 API token을 발급받아야 한다. 해당 API token을 발급받은 후에
os.environ['HUGGINGFACEHUB_API_TOKEN"]에 해당 발급받은 자신의 API token을 넣어준다.
나는 Vs code의 jupyter notebook에서 실습하고,
일단 .env에서 파일을 만들어서 'HUGGINGFACE_API_TOKEN"을 넣어뒀다.
[2] OpenAI 사용하기
먼저 OpenAI 라이브러리 다운로드 받기
그리고 OpenAI 회원 가입 후에 API 키를 발급받고
.env 파일 내에 등록해놓기
(1) LangChain AI Handbook By James Briggs & Francisco Ingham
https://www.pinecone.io/learn/series/langchain/langchain-intro/