■ ConversationSummaryMemory 클래스의 load_memory_variables 메소드를 사용해 메시지 히스토리를 구하는 방법을 보여준다.
※ 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 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain.memory import ConversationSummaryMemory load_dotenv() chatOpenAI = ChatOpenAI(temperature = 0) conversationSummaryMemory = ConversationSummaryMemory(llm = chatOpenAI, return_messages = True) conversationSummaryMemory.save_context( inputs = {"human" : "유럽 여행 패키지의 가격은 얼마인가요?"}, outputs = {"ai" : "유럽 14박 15일 패키지의 기본 가격은 3,500유로입니다. 이 가격에는 항공료, 호텔 숙박비, 지정된 관광지 입장료가 포함되어 있습니다. 추가 비용은 선택하신 옵션 투어나 개인 경비에 따라 달라집니다."} ) conversationSummaryMemory.save_context( inputs ={"human" : "여행 중에 방문할 주요 관광지는 어디인가요?"}, outputs ={"ai" : "이 여행에서는 파리의 에펠탑, 로마의 콜로세움, 베를린의 브란덴부르크 문, 취리히의 라이네폴 등 유럽의 유명한 관광지들을 방문합니다. 각 도시의 대표적인 명소들을 포괄적으로 경험하실 수 있습니다."} ) conversationSummaryMemory.save_context( inputs = {"human" : "여행자 보험은 포함되어 있나요?"}, outputs = {"ai" : "네, 모든 여행자에게 기본 여행자 보험을 제공합니다. 이 보험은 의료비 지원, 긴급 상황 발생 시 지원 등을 포함합니다. 추가적인 보험 보장을 원하시면 상향 조정이 가능합니다."} ) conversationSummaryMemory.save_context( inputs = {"human" : "항공편 좌석을 비즈니스 클래스로 업그레이드할 수 있나요? 비용은 어떻게 되나요?"}, outputs = {"ai" : "항공편 좌석을 비즈니스 클래스로 업그레이드하는 것이 가능합니다. 업그레이드 비용은 왕복 기준으로 약 1,200유로 추가됩니다. 비즈니스 클래스에서는 더 넓은 좌석, 우수한 기내식, 그리고 추가 수하물 허용량 등의 혜택을 제공합니다."} ) conversationSummaryMemory.save_context( inputs = {"human" : "패키지에 포함된 호텔의 등급은 어떻게 되나요?"}, outputs = {"ai" : "이 패키지에는 4성급 호텔 숙박이 포함되어 있습니다. 각 호텔은 편안함과 편의성을 제공하며, 중심지에 위치해 관광지와의 접근성이 좋습니다. 모든 호텔은 우수한 서비스와 편의 시설을 갖추고 있습니다."} ) conversationSummaryMemory.save_context( inputs = {"human" : "식사 옵션에 대해 더 자세히 알려주실 수 있나요?"}, outputs = {"ai" : "이 여행 패키지는 매일 아침 호텔에서 제공되는 조식을 포함하고 있습니다. 점심과 저녁 식사는 포함되어 있지 않아, 여행자가 자유롭게 현지의 다양한 음식을 경험할 수 있는 기회를 제공합니다. 또한, 각 도시별로 추천 식당 리스트를 제공하여 현지의 맛을 최대한 즐길 수 있도록 도와드립니다."} ) conversationSummaryMemory.save_context( inputs = {"human" : "패키지 예약 시 예약금은 얼마인가요? 취소 정책은 어떻게 되나요?"}, outputs = {"ai" : "패키지 예약 시 500유로의 예약금이 필요합니다. 취소 정책은 예약일로부터 30일 전까지는 전액 환불이 가능하며, 이후 취소 시에는 예약금이 환불되지 않습니다. 여행 시작일로부터 14일 전 취소 시 50%의 비용이 청구되며, 그 이후는 전액 비용이 청구됩니다."} ) messageList = conversationSummaryMemory.load_memory_variables({})["history"] print(messageList) """ [SystemMessage(content="The human asks about the price of a European travel package. The AI responds that the basic price for a 14-day, 15-night package is 3,500 euros, including airfare, hotel accommodation, and entrance fees to designated attractions. Additional costs may vary depending on optional tours or personal expenses. The human asks about the main tourist attractions to visit during the trip. The AI lists famous landmarks such as the Eiffel Tower in Paris, the Colosseum in Rome, the Brandenburg Gate in Berlin, and the Rhine Falls in Zurich, offering a comprehensive experience of each city's iconic sights. The human inquires about traveler's insurance coverage. The AI confirms that basic traveler's insurance is included for all travelers, providing medical assistance and emergency support. Additional insurance coverage can be added for an extra cost. The human asks if it's possible to upgrade the flight seats to business class and inquires about the cost. The AI confirms that upgrading to business class is possible, with an additional cost of approximately 1,200 euros for a round trip. Business class offers benefits such as wider seats, premium inflight meals, and increased baggage allowance. The human asks about the hotel rating included in the package. The AI responds that the package includes 4-star hotel accommodations, each offering comfort, convenience, and a central location for easy access to tourist attractions. All hotels provide excellent service and amenities. The human asks for more information about meal options. The AI explains that the travel package includes daily breakfast provided at the hotel. Lunch and dinner are not included, allowing travelers to experience a variety of local cuisine. Additionally, the AI offers recommended restaurant lists for each city to help travelers fully enjoy the local flavors. The human asks about the reservation deposit and cancellation policy. The AI explains that a reservation deposit of 500 euros is required when booking the package. The cancellation policy allows for a full refund up to 30 days before the reservation date, with no refund of the deposit after that. Cancelling 14 days before the trip incurs a 50% charge, and cancelling after that results in full payment.", additional_kwargs={}, response_metadata={})] """ |
▶ requirements.txt
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 42 43 44 45 46 47 48 |
aiohappyeyeballs==2.4.4 aiohttp==3.11.11 aiosignal==1.3.2 annotated-types==0.7.0 anyio==4.8.0 async-timeout==4.0.3 attrs==24.3.0 certifi==2024.12.14 charset-normalizer==3.4.1 distro==1.9.0 exceptiongroup==1.2.2 frozenlist==1.5.0 greenlet==3.1.1 h11==0.14.0 httpcore==1.0.7 httpx==0.28.1 idna==3.10 jiter==0.8.2 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.14 langchain-core==0.3.29 langchain-openai==0.3.0 langchain-text-splitters==0.3.5 langsmith==0.2.10 multidict==6.1.0 numpy==1.26.4 openai==1.59.6 orjson==3.10.14 packaging==24.2 propcache==0.2.1 pydantic==2.10.5 pydantic_core==2.27.2 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.11.6 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 SQLAlchemy==2.0.37 tenacity==9.0.0 tiktoken==0.8.0 tqdm==4.67.1 typing_extensions==4.12.2 urllib3==2.3.0 yarl==1.18.3 |
※ pip install python-dotenv langchain langchain-openai 명령을 실행했다.