랭체인 완벽 입문-4/7
OPENAI 언어 모델은 API를 호출해 사용한다.
이전 대화 내용으로 답하게 하려면 이전 대화 기록을 모두 포함한 상태에서 API를 호출해야 한다.
이때 도움이 되는 것이 Memory 모듈이다.
1
메모리 소스
https://github.com/wikibook/langchain/tree/master/04_memory
2
# 코랩으로 실행시 오류남!
10
PC에서 VSCode 실행
# 과거의 대화를 장, 단기 기억하기
import chainlit as cl
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory #← ConversationBufferMemory 가져오기
from langchain.schema import HumanMessage
chat = ChatOpenAI(
model="gpt-3.5-turbo"
)
memory = ConversationBufferMemory( #← 메모리 초기화
return_messages=True
)
@cl.on_chat_start
async def on_chat_start():
await cl.Message(content="저는 대화의 맥락을 고려해 답변할 수 있는 채팅봇입니다. 메시지를 입력하세요.").send()
@cl.on_message
async def on_message(message: str):
memory_message_result = memory.load_memory_variables({}) #← 메모리 내용을 로드
messages = memory_message_result['history'] #← 메모리 내용에서 메시지만 얻음
messages.append(HumanMessage(content=message)) #← 사용자의 메시지를 추가
result = chat( #← Chat models를 사용해 언어 모델을 호출
messages
)
memory.save_context( #← 메모리에 메시지를 추가
{
"input": message, #← 사용자의 메시지를 input으로 저장
},
{
"output": result.content, #← AI의 메시지를 output으로 저장
}
)
await cl.Message(content=result.content).send() #← AI의 메시지를 송신
File > OPEN Folder > 04_memory
python3 memory_sample.py
3
# chainlit은 채팅 화면을 만들 수 있도록 하는 라이브러리다.
# 설치가 안되어 있으면 설치
python3 -m pip install chainlit==0.5.1
4
chainlit run chat_memory_1.py
D:\1lang-start\langchain-master\04_memory>chainlit run chat_memory_1.py
'chainlit' is not recognized as an internal or external command,
operable program or batch file.
1
대화 내역을 저장하기 위해서는 데이터베이스가 필요하다.
레디스(Redis)를 이용한다.
2
레디스로 쉽게 이용할 수 있는 업스테시(upstash)를 사용한다.
upstash
구글 계정으로 가입
https://console.upstash.com/redis
3
환경변수에 레디스 정보 설정하기.
4
레디스에 대화 내역을 저장하기 위해 레디스 패키지 설치
python3 -m pip install redis
다음
https://brunch.co.kr/@topasvga/3906