LangChain에서 여러 입력이 있는 체인에 메모리를 추가하는 방법은 무엇입니까?

Langchain Eseo Yeoleo Iblyeog I Issneun Chein E Memolileul Chugahaneun Bangbeob Eun Mueos Ibnikka



챗봇과 대형 언어 모델은 전 세계 수백만 명이 사용하고 있으며 이러한 모델은 명령에 따라 텍스트를 생성할 수 있습니다. LangChain은 개발자가 이러한 모델과 봇을 구축할 수 있는 가장 효과적이고 효율적인 프레임워크 중 하나입니다. 사용자는 프롬프트나 쿼리를 입력으로 제공하고 모델은 명령과 가장 관련이 있거나 유사한 텍스트를 생성하기 전에 명령을 이해합니다.

이 가이드는 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에서 여러 입력이 있는 체인에 메모리를 추가하는 과정을 자세히 설명했습니다.