이 가이드는 LangChain에서 여러 입력이 있는 체인에 메모리를 추가하는 과정을 설명합니다.
LangChain에서 여러 입력이 있는 체인에 메모리를 추가하는 방법은 무엇입니까?
모델이 명령의 컨텍스트를 이해할 수 있도록 LLM 또는 챗봇에 메모리를 추가하여 최신 메시지나 데이터를 저장할 수 있습니다. LangChain에서 여러 입력이 있는 체인에 메모리를 추가하는 과정을 배우려면 다음 단계를 따르십시오.
1단계: 모듈 설치
먼저 언어 모델을 구축하기 위한 다양한 종속성이 있으므로 LangChain 프레임워크를 설치합니다.
pip 설치 랭체인
Chroma 벡터 저장소의 메모리에서 사용되는 데이터를 저장하려면 Chromdb를 설치하십시오.
pip 설치 크로마DB
Tiktoken은 큰 문서의 작은 덩어리를 생성하여 쉽게 관리할 수 있도록 하는 데 사용되는 토크나이저입니다.
pip 설치 틱토큰
OpenAI는 OpenAI() 메서드를 사용하여 체인과 LLM을 구축하는 데 사용할 수 있는 모듈입니다.
pip 설치 openai
2단계: 환경 설정 및 데이터 업로드
이 프로세스에 필요한 모든 모듈을 설치한 후 다음 단계는 다음과 같습니다. 환경 설정 OpenAI 계정의 API 키 사용:
수입 너수입 getpass
너 . 약 [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API 키:' )
LangChain 프레임워크에서 체인을 구축하려면 파일 라이브러리를 사용하여 문서를 업로드하세요.
~에서 Google. 등 수입 파일업로드됨 = 파일. 업로드 ( )
3단계: 라이브러리 가져오기
문서가 성공적으로 업로드되면 Langchain 모듈에서 필요한 라이브러리를 가져오기만 하면 됩니다.
~에서 랭체인. 임베딩 . 개방하다 수입 OpenAI임베딩~에서 랭체인. 임베딩 . 응집하다 수입 Cohere임베딩
~에서 랭체인. text_splitter 수입 문자텍스트분배기
~에서 랭체인. 벡터스토어 . elastic_벡터_검색 수입 탄력적인벡터검색
~에서 랭체인. 벡터스토어 수입 크로마
~에서 랭체인. 의사 저장소 . 문서 수입 문서
4단계: Chroma 데이터베이스를 사용하여 메모리 구축
이제 이전에 업로드한 문서의 임베딩 및 토큰을 저장하기 위한 벡터 공간 구축을 시작합니다.
~와 함께 열려 있는 ( 'state_of_the_union.txt' ) ~처럼 에프:주_연합_국가 = 에프. 읽다 ( )
text_splitter = 문자텍스트분배기 ( 청크_크기 = 1000 , 덩어리_겹침 = 0 )
텍스트 = text_splitter. 분할_텍스트 ( 주_연합_국가 )
임베딩 = OpenAI임베딩 ( )
문서의 텍스트와 임베딩을 저장하기 위해 Chroma 데이터베이스를 구성합니다.
문서 검색 = 크로마. from_texts (텍스트 , 임베딩 , 메타데이터 = [ { '원천' : 나 } ~을 위한 나 ~에 범위 ( 오직 ( 텍스트 ) ) ]
)
쿼리 변수에 명령을 요청하여 메모리를 테스트한 다음 유사성_검색() 메서드를 실행합니다.
질문 = 'NATO는 언제 결성됐나요?'문서 = 문서검색. 유사성_검색 ( 질문 )
5단계: 프롬프트 템플릿 구성
이 단계에서는 다음 라이브러리를 가져와서 프롬프트에 대한 템플릿을 구성하는 프로세스를 설명합니다.
~에서 랭체인. 쇠사슬 . 질문_답변 수입 load_qa_chain~에서 랭체인. LLMS 수입 오픈AI
~에서 랭체인. 프롬프트 수입 프롬프트 템플릿
~에서 랭체인. 메모리 수입 대화버퍼메모리
그런 다음 쿼리에 대한 템플릿이나 구조를 구성하고 모델에 메모리가 추가되면 체인을 실행하기만 하면 됩니다.
주형 = '''당신은 인간과 대화를 나누는 모델입니다.긴 문서에서 추출한 덩어리와 질문을 바탕으로 최종 답변을 작성합니다.
{문맥}
{역사}
인간: {입력}
챗봇:'''
즉각적인 = 프롬프트 템플릿 (
입력_변수 = [ '히스트' , '입력' , '문맥' ] , 주형 = 주형
)
메모리 = 대화버퍼메모리 ( 메모리_키 = '히스트' , 입력_키 = '입력' )
체인 = load_qa_chain (
오픈AI ( 온도 = 0 ) , 체인_유형 = '물건' , 메모리 = 메모리 , 즉각적인 = 즉각적인
)
6단계: 메모리 테스트
쿼리 변수를 사용하여 질문한 다음 해당 매개변수와 함께 chain() 메서드를 실행하여 모델을 테스트할 시간입니다.
질문 = 'NATO는 언제 결성됐나요?'체인 ( { '입력_문서' : 문서 , '입력' : 쿼리 } , return_only_outputs = 진실 )
모델이 제공한 답이 최근 메모리에 저장되어 있으므로 버퍼 메모리에 저장된 데이터를 인쇄합니다.
인쇄 ( 체인. 메모리 . 완충기 )
이는 LangChain의 여러 입력이 있는 체인에 메모리를 추가하는 것입니다.
결론
LangChain에서 여러 입력이 있는 체인에 메모리를 추가하려면 모듈과 벡터 저장소를 설치하여 텍스트와 임베딩을 저장하기만 하면 됩니다. 그런 다음 로컬 시스템에서 데이터/문서를 업로드한 다음 데이터 저장에 필요한 라이브러리를 가져와 LLM용 메모리를 구축합니다. 가장 최근 메시지를 버퍼 메모리에 저장한 다음 체인에 문자 메시지를 보내도록 프롬프트 템플릿을 구성합니다. 이 가이드는 LangChain에서 여러 입력이 있는 체인에 메모리를 추가하는 과정을 자세히 설명했습니다.