약 40줄의 Python 코드로 만드는 GPT와 메모리 기능이 탑재된 WhatsApp 봇
요약
WhatsApp Memory API와 Python SDK를 사용하여 대화 문맥을 기억하는 봇을 구축하는 방법을 소개합니다. 별도의 데이터베이스 구축 없이도 대화 기록 저장, 요약, 메타데이터 관리가 가능합니다.
핵심 포인트
- WhatsApp Memory API를 통한 대화 문맥 유지
- 토큰 단위 자동 요약 및 컨텍스트 관리 기능
- 세션별 메타데이터 저장 및 Anthropic 포맷 지원
- 약 40줄의 간단한 코드로 구현 가능
약 40줄의 Python 코드로 만드는 GPT와 메모리 기능이 탑재된 WhatsApp 봇
AI를 사용하여 WhatsApp 봇을 구축할 때 가장 번거로운 문제 중 하나는 **메모리 (memory)**입니다. WhatsApp은 메시지 간의 내용을 전혀 기억하지 못하므로, 모델은 이전에 나눈 대화의 문맥 (context)을 알 수 없습니다. 이 튜토리얼에서는 데이터베이스를 구축하지 않고, 메모리 API와 그 SDK를 사용하여 기억할 수 있는 봇을 만들어 보겠습니다.
사용할 도구
- OpenAI: 응답 생성을 위해 사용합니다.
- WhatsApp Memory API: 대화 기록을 저장하고 LLM (Large Language Model)에 맞게 포맷팅하여 반환합니다. 모든 무거운 작업을 수행하는 Python SDK를 제공합니다.
pip install openai whatsapp-memory
전체 봇 코드
import openai
from whatsapp_memory import WhatsAppMemory
...
이것이 전부입니다. 메시지가 도착할 때마다 responder(phone, texto)를 호출하면 봇은 해당 번호의 모든 대화 내용을 기억합니다.
테스트해 보기
phone = "+5491112345678"
print(responder(phone, "Hola, quiero una pizza"))
# -> "¡Hola! ¿De qué te gustaría? Tenemos margarita, napolitana..."
...
두 번째 메시지에서 우리가 수동으로 대화 기록을 전달하지 않았음에도 불구하고, 봇이 마르게리타(margarita)에 대해 이야기하고 있다는 것을 알고 있음에 주목하세요. 이는 get_context가 해결해 주며, 이 함수는 토큰 (tokens) 단위로 자르고 긴 대화를 자동으로 요약(summarize)하는 기능도 갖추고 있습니다.
추가 기능
- 세션별 메타데이터 (Metadata): 고객의 이름, 마지막 주문 내역 등을 저장합니다.
wa.update_metadata(phone, nombre="Juan", ultimo_pedido="ORD-1234")
- Anthropic 포맷:
wa.get_context(phone, format="anthropic"). - 서명된 웹훅 (Webhooks) 및 사용 제한이 있는 API 키 (API keys).
실제 WhatsApp과 연결하기
responder() 함수는 메시지를 수신하는 방식에 구애받지 않습니다. WhatsApp Business API (또는 Twilio, 360dialog, Builderbot 등)의 웹훅에 연결하세요. 메시지가 도착하면 responder()를 호출하고 반환된 값을 전송하면 됩니다.
시도해 보세요
API와 대화형 문서(docs)는 여기에서 확인할 수 있습니다: https://whatsapp-memory-api.onrender.com/docs
POST /keys를 통해 키(key)를 생성하면 바로 시작할 수 있습니다. 이것으로 무언가를 만드신다면, 꼭 알려주세요.
WhatsApp 봇을 만드시나요? 지금까지 메모리(memory) 문제는 어떻게 해결해 오셨나요? 댓글로 알려주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기