brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 09. 2024

AI 4탄-4. 랭체인Memory-과거의 대화 기억

랭체인 완벽 입문-4/7

<17> 랭체인 모듈 - Memory 모듈 (실습)

<18> 챗봇 만들기 (실습)

<19> 데이터베이스에 저장하기 (실습)




<17> 랭체인 모듈 - Memory 모듈


OPENAI 언어 모델은 API를 호출해 사용한다.

이전 대화 내용으로 답하게 하려면 이전 대화 기록을 모두 포함한 상태에서 API를 호출해야 한다.

이때 도움이 되는 것이 Memory 모듈이다.




<18> 챗봇 만들기


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.




<19> 데이터베이스에 저장하기


1

대화 내역을 저장하기 위해서는 데이터베이스가 필요하다.

레디스(Redis)를 이용한다.



2

레디스로 쉽게 이용할 수 있는 업스테시(upstash)를 사용한다.


upstash


구글 계정으로 가입


https://console.upstash.com/redis



3

환경변수에 레디스 정보 설정하기.



4

레디스에 대화 내역을 저장하기 위해 레디스 패키지 설치


python3 -m pip install redis




다음

https://brunch.co.kr/@topasvga/3906

                    


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari