카카오톡 PC 클라이언트를 감시하고, RAG + LLM 파이프라인으로 응답을 제안한 뒤 Slack 승인 절차를 거쳐 자동으로 전송하는 에이전트입니다. OpenAI API 키가 없을 때는 Mock 모드로 동작하여 흐름을 빠르게 검증할 수 있습니다.
- 카카오톡 대화 파싱 후 RAG(ChromaDB)로 말투와 과거 대화를 검색
- OpenAI LLM 또는 Mock 에이전트로 메시지 분류 및 응답 생성
- Slack 봇으로 승인 / 거절 / 재생성 루프를 운영 (버튼 기반)
- KakaoTalk GUI 자동화 컨트롤러와 연동하여 전송까지 자동 처리
- 콘솔 모드 테스트 시 샘플 대화로 파이프라인을 시뮬레이션
- Python 환경 준비
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt
- 환경 변수 설정 – 루트의
.env파일에 값을 채웁니다.OPENAI_API_KEY="sk-..." # 없으면 Mock RAG + LLM으로 동작 SLACK_BOT_TOKEN="xoxb-..." # Slack OAuth Token (Bot User) SLACK_APP_TOKEN="xapp-..." # Slack Socket Mode App Token SLACK_CHANNEL_ID="C012345" # 승인 요청을 보낼 채널
- 대화 데이터 준비 –
data/my_chats에 카카오톡 txt/csv 내보내기를 넣으면main.py또는 GUI 실행 시 로컬 말투/대화가 로딩됩니다. 샘플이 필요하면data/sample_chats를 사용할 수 있습니다.
개발/테스트 용도. 기본적으로 data/my_chats를 로드한 뒤 main.py에 정의된 시나리오를 순차적으로 실행합니다.
python main.py [--skip-load] [--auto]--skip-load: 이미 RAG가 구축되어 있다면 데이터 로딩을 건너뜁니다.--auto: 승인 없이 자동 전송 가능한 케이스는 즉시 전송합니다.
PC 카카오톡 앱을 직접 제어하여 실시간 메시지를 처리합니다.
python kakao_gui.py \
--chat-dir ./data/my_chats \
--poll-interval 2.5 \
--auto-send \
--skip-slack주요 옵션:
--chat-dir: 초기 학습용 채팅 파일 경로--auto-send: 자동 응답이 안전하다고 판단되는 경우 즉시 전송--skip-slack: Slack 승인 루프를 생략 (테스트/데모 용)--debug-dir: OCR 디버깅 스크린샷 저장 경로
| 경로 | 설명 |
|---|---|
data/chroma_db/ |
ChromaDB 퍼시스턴스 (벡터 인덱스) |
data/gui_exports/ |
GUI 추출 / OCR 디버깅 캡처 보관 |
data/my_chats/ |
실제 카카오톡 대화 내보내기 (개인 데이터) |
data/sample_chats/ |
배포용 샘플 대화, 데모/테스트에 사용 |
위 경로들은 .gitignore에 개별적으로 추가되어 GitHub에 업로드되지 않습니다. 민감한 .env는 프로젝트 특성상 버전에 포함되어도 되지만, 외부에 공유되는 저장소라면 비공개 브랜치나 시크릿 관리 도구(GitHub Secrets, 1Password 등)로 대체하는 것을 권장합니다.
- Slack 토큰을 사용하지 않으면 승인 루프는 콘솔 입력 기반으로 시뮬레이션됩니다.
- OpenAI 키가 없으면
MockRAGRetriever/MockLLMAgent가 자동으로 선택되어 비용 없이 흐름을 확인할 수 있습니다. - GUI 자동화는 Windows 카카오톡 UI 좌표에 의존하므로 사용할 모니터 배율과 언어 설정을 고정하고, 필요 시
--fixed-chat-point나--debug-dir옵션으로 조정하세요.