■ VectorStoreRetrieverMemory 클래스의 save_context 메소드를 사용해 메시지 히스토리를 추가하는 방법을 보여준다.
※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다.
▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import faiss from dotenv import load_dotenv from langchain_openai import OpenAIEmbeddings from langchain.docstore import InMemoryDocstore from langchain.vectorstores import FAISS from langchain.memory import VectorStoreRetrieverMemory load_dotenv() openAIEmbeddings = OpenAIEmbeddings() indexFlatL2 = faiss.IndexFlatL2(1536) faiss = FAISS(openAIEmbeddings, indexFlatL2, InMemoryDocstore({}), {}) vectorStoreRetriever = faiss.as_retriever(search_kwargs = {"k" : 1}) vectorStoreRetrieverMemory = VectorStoreRetrieverMemory(retriever = vectorStoreRetriever) vectorStoreRetrieverMemory.save_context( inputs = {"human" : "안녕하세요, 오늘 면접에 참석해주셔서 감사합니다. 자기소개 부탁드립니다."}, outputs = {"ai" : "안녕하세요. 저는 컴퓨터 과학을 전공한 신입 개발자입니다. 대학에서는 주로 자바와 파이썬을 사용했으며, 최근에는 웹 개발 프로젝트에 참여하여 실제 사용자를 위한 서비스를 개발하는 경험을 했습니다."} ) vectorStoreRetrieverMemory.save_context( inputs = {"human" : "프로젝트에서 어떤 역할을 맡았나요?"}, outputs = {"ai" : "제가 맡은 역할은 백엔드 개발자였습니다. 사용자 데이터 처리와 서버 로직 개발을 담당했으며, RESTful API를 구현하여 프론트엔드와의 통신을 담당했습니다. 또한, 데이터베이스 설계에도 참여했습니다."} ) vectorStoreRetrieverMemory.save_context( inputs = {"human" : "팀 프로젝트에서 어려움을 겪었던 경험이 있다면 어떻게 해결했나요?"}, outputs = {"ai" : "프로젝트 초기에 의사소통 문제로 몇 가지 어려움이 있었습니다. 이를 해결하기 위해 저희 팀은 정기적인 미팅을 갖고 각자의 진행 상황을 공유했습니다. 또한, 문제가 발생했을 때는 적극적으로 의견을 나누고, 합리적인 해결책을 찾기 위해 노력했습니다."} ) vectorStoreRetrieverMemory.save_context( inputs = {"human" : "개발자로서 자신의 강점은 무엇이라고 생각하나요?"}, outputs = {"ai" : "제 강점은 빠른 학습 능력과 문제 해결 능력입니다. 새로운 기술이나 도구를 빠르게 습득할 수 있으며, 복잡한 문제에 직면했을 때 창의적인 해결책을 제시할 수 있습니다. 또한, 팀워크를 중시하며 동료들과 협력하는 것을 중요하게 생각합니다."} ) |
※ pip install python-dotenv langchain-community langchain_openai faiss-gpu 명령을 실행했다.