LLM Day 11 Chat History ๊ด€๋ฆฌ

Soyee Sungยท2025๋…„ 2์›” 13์ผ
0

LLM

๋ชฉ๋ก ๋ณด๊ธฐ
11/34

๋Œ€ํ™” ์ด๋ ฅ ๊ด€๋ฆฌ(Chat History)

๐Ÿง  ๋Œ€ํ™” ์ด๋ ฅ ๊ด€๋ฆฌ(Chat History)๋ž€?

๐Ÿค– AI๊ฐ€ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”!
์šฐ๋ฆฌ๊ฐ€ ์นœ๊ตฌ์™€ ์ด์•ผ๊ธฐํ•  ๋•Œ, ์˜ˆ์ „์— ํ•œ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜๋ฉด ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ์ฃ ?
AI๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ€ํ™” ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ด์š”.

๐Ÿ“Œ ๋Œ€ํ™” ์ด๋ ฅ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐœ๋…

1๏ธโƒฃ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹(Message Passing)

AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ๋ณธ ๊ตฌ์กฐ์˜ˆ์š”!
AI๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ , ๊ทธ์— ๋งž๋Š” ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ด์š”.

๐Ÿ“ ์˜ˆ์ œ
๐Ÿ‘‰ ์‚ฌ๋žŒ์ด ๋งํ•จ: "์•ˆ๋…•! ์˜ค๋Š˜ ๋‚ ์”จ ์–ด๋•Œ?"
๐Ÿค– AI๊ฐ€ ๋Œ€๋‹ตํ•จ: "์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜ ๋‚ ์”จ๋Š” ๋ง‘์•„์š” โ˜€๏ธ"

โœ”๏ธ ํ•˜์ง€๋งŒ AI๋Š” ์ด์ „ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ๋ฆ„์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์–ด์š”.
โœ”๏ธ ๊ทธ๋ž˜์„œ! ๋Œ€ํ™” ์ด๋ ฅ์„ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ด์š”.

2๏ธโƒฃ ๋Œ€ํ™” ์ด๋ ฅ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿ”น RunnableWithMessageHistory
AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด์—์š”.
๋Œ€ํ™” ๋‚ด์šฉ์„ ์–ด๋””์— ์ €์žฅํ• ๊นŒ์š”? ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์š”!

(1) ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋กœ์ปฌ ์ €์žฅ์†Œ ํ™œ์šฉ (RAM ์‚ฌ์šฉ)

AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ž ๊น ์ €์žฅํ•ด์š”. (์‰ฝ๊ณ  ๋น ๋ฆ„!)
๋‹จ์ : ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ์ผœ๋ฉด ๋Œ€ํ™” ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ ธ์š”! ๐Ÿ˜ข

(2) SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ์šฉ (์˜๊ตฌ ์ €์žฅ)

AI๊ฐ€ ๋Œ€ํ™”๋ฅผ DB(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์— ์ €์žฅํ•ด์„œ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด์š”!
์žฅ์ : ์ปดํ“จํ„ฐ๋ฅผ ๊บผ๋„ ๋Œ€ํ™” ๊ธฐ๋ก์ด ๋‚จ์•„์š”! ๐ŸŽ‰
โœ”๏ธ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ• ์ง€๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์„ ํƒํ•˜๋ฉด ๋ผ์š”!

๐Ÿ”ฅ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•

3๏ธโƒฃ ๋ฉ”์‹œ์ง€ ํŠธ๋ฆฌ๋ฐ(Message Trimming)

๋Œ€ํ™”๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด, AI๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ธฐ๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ!
โœ”๏ธ AI๊ฐ€ ๋ชจ๋“  ๋Œ€ํ™”๋ฅผ ๋‹ค ๊ธฐ์–ตํ•˜๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ด์š”.
โœ”๏ธ ๊ทธ๋ž˜์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ธฐ๊ณ  ์˜ค๋ž˜๋œ ๋‚ด์šฉ์€ ์‚ญ์ œํ•ด์š”.

๐Ÿ“ ์˜ˆ์ œ
๐Ÿ’ฌ (์ฒ˜์Œ ๋Œ€ํ™” ์‹œ์ž‘)
๐Ÿ‘ฉ "์•ˆ๋…•! ๋‚ด ์ด๋ฆ„์€ ์†Œ์ด์•ผ."
๐Ÿค– "๋ฐ˜๊ฐ€์›Œ์š”, ์†Œ์ด๋‹˜!"
๐Ÿ‘ฉ "๋‚ด์ผ ๋‚ ์”จ ์–ด๋•Œ?"
๐Ÿค– "๋‚ด์ผ์€ ๋น„๊ฐ€ ์˜ฌ ์˜ˆ์ •์ด์—์š”."

๐Ÿ’ฌ (๋Œ€ํ™”๊ฐ€ ๊ธธ์–ด์ ธ์„œ AI๊ฐ€ ์˜ค๋ž˜๋œ ๋‚ด์šฉ์„ ์‚ญ์ œํ•จ)
๐Ÿ‘ฉ "๋‚ด ์ด๋ฆ„์ด ๋ญ์˜€๋”๋ผ?"
๐Ÿค– "์Œ... ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š”! ๐Ÿ˜ข"

โœ”๏ธ ๊ทธ๋ž˜์„œ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ์ €์žฅํ•˜๊ณ , ๋œ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ์‚ญ์ œํ•ด์•ผ ํ•ด์š”!

๐Ÿš€ ์‹ค์Šต ์ฝ”๋“œ ๋ถ„์„

๐Ÿ› ๏ธ 1. ๋Œ€ํ™” ์ €์žฅ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ •

๋จผ์ € ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ

โœ”๏ธ.env ํŒŒ์ผ์—์„œ API ํ‚ค(๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ์ •๋ณด)๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ์˜ˆ์š”.
โœ”๏ธOpenAI ๊ฐ™์€ ์„œ๋น„์Šค์— ์ ‘์†ํ•  ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฝ”๋“œ์— ์ง์ ‘ ์“ฐ๋ฉด ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, .env ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด ๋ณด์•ˆ์„ ์œ ์ง€ํ•ด์š”.

from dotenv import load_dotenv
load_dotenv()

๐Ÿ—‚ 2. ๋Œ€ํ™” ๊ธฐ๋ก์„ ์ €์žฅํ•  ์ค€๋น„

AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ํ•„์š”ํ•ด์š”.
์ด๋ฅผ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
โœ”๏ธ ์ด ์ฝ”๋“œ๋“ค์€ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด์—์š”.
โœ”๏ธ ํŠนํžˆ json์€ ๋Œ€ํ™” ๊ธฐ๋ก์„ JSON ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ๋ผ์š”!

import os
from glob import glob
from pprint import pprint
import json

๐Ÿค– 3. AI ๋ชจ๋ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

GPT-4o-mini ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์™€์š”.
temperature=0.3 โ†’ ๋‹ต๋ณ€์„ ๋” ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์š”.
top_p=0.9 โ†’ ๊ฐ€๋Šฅํ•œ ๋‹ต๋ณ€์„ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์š”.
โœ”๏ธ ์ด ๋ชจ๋ธ์ด ์‚ฌ๋žŒ๊ณผ ๋Œ€ํ™”ํ•˜๋ฉด์„œ ๋Œ€ํ™” ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ํ™œ์šฉํ•  ๊ฑฐ์˜ˆ์š”!

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model='gpt-4o-mini',
    temperature=0.3,
    top_p=0.9,
)

๐Ÿ“ 4. ๋Œ€ํ™” ์ด๋ ฅ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

โœ… 1. LangChain์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ™” ๊ธฐ๋ก ๊ธฐ๋Šฅ
LangChain์—์„œ๋Š” ๋Œ€ํ™” ์ด๋ ฅ์„ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๋ฐฉ์‹
๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด AI๊ฐ€ ์ด์ „ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์–ด์š”!
๋จผ์ €, ConversationBufferMemory๋ฅผ ํ™œ์šฉํ•ด๋ด…์‹œ๋‹ค.

๐Ÿ“Œ ์ด ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ
โœ… AI๊ฐ€ ์ด์ „ ๋Œ€ํ™”๋ฅผ ์ €์žฅํ•ด์„œ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
โœ… ConversationBufferMemory()๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
โœ… ๊ธฐ๋ณธ์ ์ธ ๋Œ€ํ™” ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋„๋ก ํ•จ

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAI

# ๐Ÿ—๏ธ LLM ๋ชจ๋ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.3)

# ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • (๋Œ€ํ™” ๊ธฐ๋ก ์ €์žฅ)
memory = ConversationBufferMemory()

# ๐Ÿ“ž ๋Œ€ํ™” ์ฒด์ธ ์ƒ์„ฑ
conversation = ConversationChain(
    llm=llm,
    memory=memory
)

# ๐Ÿš€ ๋Œ€ํ™” ํ…Œ์ŠคํŠธ
response1 = conversation.predict(input="์•ˆ๋…•! ๋‚ด ์ด๋ฆ„์€ ์†Œ์ด์•ผ.")
print(response1)  # AI๊ฐ€ "์•ˆ๋…•ํ•˜์„ธ์š”, ์†Œ์ด๋‹˜!" ์ด๋ผ๊ณ  ์ธ์‚ฌ

response2 = conversation.predict(input="๋‚ด ์ด๋ฆ„์ด ๋ญ๋ผ๊ณ  ํ–ˆ์ง€?")
print(response2)  # AI๊ฐ€ "์†Œ์ด๋‹˜์ด๋ผ๊ณ  ํ•˜์…จ์ฃ !" ๋ผ๊ณ  ๊ธฐ์–ต

โœ… 2. SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ™” ์ด๋ ฅ ์ €์žฅํ•˜๊ธฐ (์˜๊ตฌ ์ €์žฅ)
์œ„ ๋ฐฉ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋ฏ€๋กœ ์ปดํ“จํ„ฐ๋ฅผ ๋„๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๋‹จ์ ์ด ์žˆ์–ด์š”!
๊ทธ๋ž˜์„œ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”. ๐ŸŽ‰

๐Ÿ“Œ ์ด ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ
โœ… ๋Œ€ํ™” ๊ธฐ๋ก์„ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(chat_history.db)์— ์ €์žฅ
โœ… AI๊ฐ€ ์ด์ „ ๋Œ€ํ™”๋ฅผ ๊บผ๋‚ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
โœ… ConversationSummaryMemory()๋ฅผ ํ™œ์šฉํ•ด ๋Œ€ํ™” ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ์ž๋™ ์š”์•ฝ
โœ… ์‚ฌ์šฉ์ž๋ณ„ ์„ธ์…˜ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ! (e.g. session_id="user_123")

๐Ÿ“Œ SQLite ๊ธฐ๋ฐ˜ ๋Œ€ํ™” ์ €์žฅ ์ฝ”๋“œ

from langchain.memory import ConversationSummaryMemory
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory.chat_message_histories import SQLiteChatMessageHistory

# ๐Ÿ—๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ ์ƒ์„ฑ
db_path = "chat_history.db"

# ๐Ÿ› ๏ธ SQLite ๊ธฐ๋ฐ˜ ๋Œ€ํ™” ๊ธฐ๋ก ์ €์žฅ์†Œ ์„ค์ •
history = SQLiteChatMessageHistory(database_path=db_path, session_id="user_123")

# ๐Ÿง  ๋Œ€ํ™” ๊ธฐ๋ก ์ €์žฅ์šฉ ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • (์ž๋™ ์š”์•ฝ ํฌํ•จ)
memory = ConversationSummaryMemory(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    chat_memory=history
)

# ๐Ÿ“ž ๋Œ€ํ™” ์ฒด์ธ ์ƒ์„ฑ
conversation = ConversationChain(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    memory=memory
)

# ๐Ÿš€ ๋Œ€ํ™” ํ…Œ์ŠคํŠธ
response1 = conversation.predict(input="์•ˆ๋…•! ๋‚ด ์ด๋ฆ„์€ ์†Œ์ด์•ผ.")
print(response1)  

response2 = conversation.predict(input="๋‚ด ์ด๋ฆ„์ด ๋ญ๋ผ๊ณ  ํ–ˆ์ง€?")
print(response2)  # AI๊ฐ€ "์†Œ์ด๋‹˜"์ด๋ผ๊ณ  ๊ธฐ์–ตํ•ด์•ผ ํ•จ

๐Ÿ”ฅ 3. ๋Œ€ํ™” ์ด๋ ฅ ๊ด€๋ฆฌ ๊ธฐ๋ฒ• ์ถ”๊ฐ€ (ํŠธ๋ฆฌ๋ฐ & ์š”์•ฝ)
โœ”๏ธ ๋Œ€ํ™”๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด AI๊ฐ€ ์ค‘์š”ํ•œ ๋‚ด์šฉ๋งŒ ๋‚จ๊ธฐ๊ณ  ์š”์•ฝํ•  ์ˆ˜ ์žˆ์–ด์š”!
โœ”๏ธ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋Œ€ํ™” ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์•„์ ธ๋„ AI๊ฐ€ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ“Œ ์ด ์ฝ”๋“œ๊ฐ€ ํ•˜๋Š” ์ผ
โœ… ๋Œ€ํ™”๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ์ž๋™์œผ๋กœ ์š”์•ฝ (๋ฉ”์‹œ์ง€ ํŠธ๋ฆฌ๋ฐ)
โœ… ๋Œ€ํ™” ๋‚ด์šฉ์ด ๋งŽ์•„๋„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
โœ… max_token_limit=100 ์„ค์ •์„ ์กฐ์ •ํ•ด ์š”์•ฝ์˜ ๊ธธ์ด๋ฅผ ์กฐ์ ˆ ๊ฐ€๋Šฅ

from langchain.memory import ConversationSummaryBufferMemory

# ๐Ÿง  ์š”์•ฝ ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ (ํŠธ๋ฆฌ๋ฐ ๊ธฐ๋Šฅ ํฌํ•จ)
memory = ConversationSummaryBufferMemory(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    max_token_limit=100  # ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ์š”์•ฝ
)

# ๐Ÿ“ž ๋Œ€ํ™” ์ฒด์ธ ์ƒ์„ฑ
conversation = ConversationChain(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    memory=memory
)

# ๐Ÿš€ ๋Œ€ํ™” ํ…Œ์ŠคํŠธ
response1 = conversation.predict(input="์•ˆ๋…•! ๋‚˜๋Š” AI๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ์†Œ์ด์•ผ.")
print(response1)

response2 = conversation.predict(input="๋‚ด๊ฐ€ ๋ญ๋ผ๊ณ  ํ–ˆ์ง€?")
print(response2)  # AI๊ฐ€ ์ค‘์š”ํ•œ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด์„œ ๋‹ต๋ณ€

๐Ÿš€ ์ตœ์ข… ์ •๋ฆฌ
โœ”๏ธ ๊ฐ„๋‹จํ•œ ๋Œ€ํ™” ์ €์žฅ โ†’ ConversationBufferMemory() ์‚ฌ์šฉ
โœ”๏ธ ์˜๊ตฌ ์ €์žฅ ํ•„์š” โ†’ SQLiteChatMessageHistory() ์‚ฌ์šฉ
โœ”๏ธ ๋Œ€ํ™”๊ฐ€ ๊ธธ์–ด์ง€๋ฉด ์ž๋™ ์š”์•ฝ โ†’ ConversationSummaryBufferMemory() ์‚ฌ์šฉ

0๊ฐœ์˜ ๋Œ“๊ธ€