AI 기억력 추가하기 - 세션 기반 대화 관리
AI 기억력 추가하기 - 세션 기반 대화 관리
AI가 보다 인간처럼 대화를 이어가기 위해서는 이전 대화를 기억하고 맥락을 유지하는 능력이 필요합니다.
이번 글에서는 CrewAI와 LangChain을 활용하여 AI의 기억력을 추가하는 방법을 배우고,
AI가 대화를 이어가면서 맥락을 유지하도록 설계하는 실습 코드를 진행합니다.
🔹 1. AI 기억력(Memory)이란?
📌 AI가 기억을 유지해야 하는 이유
일반적인 AI 챗봇은 한 번의 요청에만 반응하는 방식으로 동작합니다.
하지만 사용자의 대화 흐름을 기억하지 못하면 맥락을 유지하기 어려운 단점이 있습니다.
✅ 기억력 없는 AI vs 기억력 있는 AI 비교
항목 일반 AI (기억력 없음) 기억력 추가 AI (세션 유지)
대화 맥락 | 이전 대화를 기억하지 못함 | 이전 대화를 유지하며 응답 |
사용자 경험 | 단순한 질의응답 형태 | 자연스러운 대화 흐름 가능 |
활용 가능성 | 1회성 응답에 적합 | 장기적인 AI 조력자로 활용 가능 |
💡 목표: AI가 사용자의 이전 질문을 기억하고, 자연스럽게 대화를 이어가도록 설계
🔹 2. LangChain Memory를 활용한 AI 기억력 구현
CrewAI는 자체적인 메모리 기능이 없기 때문에,
LangChain의 ConversationBufferMemory를 활용하여 AI가 대화 맥락을 유지하도록 만들 수 있습니다.
✅ LangChain 설치
pip install langchain openai
✅ Ollama 모델과 LangChain 메모리 연동 (기본 테스트)
from langchain.memory import ConversationBufferMemory
# LangChain 메모리 설정
memory = ConversationBufferMemory()
# 사용자 입력 저장
memory.save_context({"input": "안녕! 넌 누구야?"}, {"output": "나는 AI 비서야!"})
# 이전 대화 불러오기
print(memory.load_memory_variables({}))
📌 실행 결과:
{"history": "사용자: 안녕! 넌 누구야?\nAI: 나는 AI 비서야!"}
✅ AI의 기억력을 유지하기 위한 핵심 요소
- ConversationBufferMemory: 대화 기록을 유지
- 사용자의 이전 질문을 저장 및 활용
- CrewAI의 AI 에이전트와 연동 가능
🔹 3. CrewAI + LangChain으로 AI 기억력 추가하기
이제 CrewAI 기반 AI 에이전트가 대화 맥락을 유지하도록 만들어 보겠습니다.
🔹 Python 코드 (CrewAI + LangChain Memory 연동)
from crewai import Agent, Task, Crew
from langchain.memory import ConversationBufferMemory
# AI 대화 메모리 설정
memory = ConversationBufferMemory()
# AI 에이전트 정의 (연구원 & 기술 작가)
researcher = Agent(
name="연구원",
role="최신 AI 기술을 조사하는 AI",
backstory="AI 기술 트렌드를 분석하는 전문가",
model="mistral"
)
writer = Agent(
name="기술 작가",
role="기술 블로그를 작성하는 AI",
backstory="기술 문서를 작성하는 AI",
model="mistral"
)
# 연구원의 첫 번째 질문 처리
def ask_researcher(question):
task = Task(description=question, agent=researcher)
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
# 응답을 메모리에 저장
memory.save_context({"input": question}, {"output": result})
return result
# 사용자의 첫 질문
print("📌 첫 질문:")
response1 = ask_researcher("2024년 AI 기술 트렌드는?")
print(response1)
# 연구원의 응답을 기반으로 추가 질문
print("\n📌 추가 질문:")
context = memory.load_memory_variables({})
response2 = ask_researcher(f"{context['history']} 이를 기반으로 블로그 글을 작성해줘.")
print(response2)
✅ 실행 과정
1️⃣ 사용자가 "2024년 AI 기술 트렌드는?" 질문
2️⃣ AI 연구원이 최신 트렌드를 조사하고 응답
3️⃣ 사용자의 추가 질문을 메모리에서 불러와 문맥을 유지
4️⃣ AI 기술 작가가 조사 내용을 바탕으로 블로그 글을 생성
📌 실행 결과:
AI 연구원이 최신 트렌드를 조사 → 기술 작가가 이를 바탕으로 블로그 글 작성
✅ LangChain Memory 활용 포인트
- 사용자의 대화를 저장하여 AI가 이전 질문을 기억
- CrewAI와 결합하여 AI 간 협업 및 대화 유지 가능
🔹 4. FastAPI를 활용한 AI 메모리 API 구축
이제 AI의 기억력을 API 형태로 제공해 보겠습니다.
FastAPI를 활용하면 세션 기반 대화 시스템을 구축할 수 있습니다.
🔹 Python 코드 (FastAPI + CrewAI + LangChain Memory 연동)
from fastapi import FastAPI
from pydantic import BaseModel
from crewai import Agent, Task, Crew
from langchain.memory import ConversationBufferMemory
app = FastAPI()
memory = ConversationBufferMemory()
class AIRequest(BaseModel):
question: str
@app.post("/ask_ai/")
async def ask_ai(request: AIRequest):
researcher = Agent(
name="연구원",
role="최신 AI 기술을 조사하는 AI",
backstory="AI 기술 트렌드를 분석하는 전문가",
model="mistral"
)
task = Task(description=request.question, agent=researcher)
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
# AI 대화 내용 저장
memory.save_context({"input": request.question}, {"output": result})
return {"response": result}
@app.get("/chat_history/")
async def chat_history():
return {"history": memory.load_memory_variables({})}
✅ FastAPI 서버 실행
uvicorn main:app --host 0.0.0.0 --port=8000 --reload
✅ API 엔드포인트 설명
HTTP Method 엔드포인트 설명
POST | /ask_ai/ | AI 에이전트에게 질문하고 응답 받기 |
GET | /chat_history/ | AI와의 대화 내역 가져오기 |
✅ API 요청 예제
curl -X 'POST' 'http://127.0.0.1:8000/ask_ai/' \
-H 'Content-Type: application/json' \
-d '{"question": "AI 기술 트렌드를 알려줘."}'
✅ 응답 예시 (AI가 기억을 유지한 채 응답)
{
"response": "2024년 AI 기술 트렌드는 대규모 언어 모델, 멀티모달 AI, AI 윤리 및 규제 강화 등입니다..."
}
✅ 대화 내역 확인 요청 (cURL)
curl -X 'GET' 'http://127.0.0.1:8000/chat_history/'
✅ 응답 예시 (기억된 대화 내용 출력)
{
"history": "사용자: AI 기술 트렌드를 알려줘.\nAI: 2024년 AI 기술 트렌드는..."
}
🎯 5. AI 기억력 추가 및 활용 정리
✅ LangChain Memory를 사용하면 AI가 대화 맥락을 유지할 수 있다.
✅ CrewAI와 결합하여 다중 AI가 협력하며 대화를 기억할 수 있다.
✅ FastAPI를 활용하면 AI 메모리를 API 형태로 제공할 수 있다.
✅ Manus 스타일 AI 시스템을 더욱 현실적으로 구현할 수 있다.
🚀 다음 글 미리보기:
👉 "AI 자동화 시스템 구축 - 크롤링 및 데이터 분석 AI"
👉 AI가 실시간 데이터를 수집하고 분석하도록 자동화하는 방법을 배워봅니다.