커뮤니티 버디봇 구축기 3편: 퍼플렉시티 검색 봇 구현

👋 소개

안녕하세요! 이유식 초보맘을 돕는 커뮤니티를 운영 중인 지니 K입니다. 이번 3주차는 퍼플렉시티 API 연동을 통해 커뮤니티 내 '이유식 전문가 검색봇' 구현을 목표로 했습니다.

🛠️ 사용한 도구

  • 메신저봇R (0.7.36a, 0.7.39a/99) - 카카오봇 생성 및 테스트

  • 퍼플렉시티 API - AI 검색봇 구현

  • Claude & ChatGPT - 문제 해결 및 코드 수정 지원

  • n8n - 카톡봇 대화 워크플로우 자동화

👩🏻‍💻 진행 과정

1단계: 퍼플렉시티 API 연동 성공

  • API 키 발급 후, 단일 검색봇 형태로 테스트 완료 ✅

    • 스터디장님이 제공한 자바스크립트 코드를 커스텀

      • [BEFORE] 1차 결과물 (javascript only)

        한국어 문자 메시지의 스크린 샷
      • [AFTER] 코드 및 프롬프트 개선 후

        • 브랜딩 고려한 시스템 프롬프트 작성 (예: 따뜻하고 친근한 말투 등)

        • 가독성 위한 메시지 길이 100자 제한

        • 마크다운, 볼드체, 참고 번호 사용 금지

        • 로딩 메시지 추가 (”네~바로 찾아볼게요! 🔎”)

        전화에 한국 문자 메시지 스크린 샷

2단계: fastAPI 연동 + n8n 확장 시도

  • 목표: n8n 활용해 싱글턴/멀티턴 대화 시나리오 구축

  • 진행

    • n8n 워크플로우 생성, but 작동 오류 → 여러 시행착오 후 일단 보류

    • n8n과 FastAPI를 연결할 서비스 파일 필요 → main.py를 찾지 못함

      → 결국 새 fastAPI 서버 구축 😭

3단계: 메신저봇R 이슈 폭탄

  • 0.7.39a 수차례 먹통 → 앱 삭제 후, 안정성 보장된 0.7.36a/99 버전 설치

  • BUT, 코드 문법이 달라 코드 다시 작성

    → 계속 이슈 발생 (이모지 깨짐 현상, 코드 하이라이팅 깨짐 현상 등등)

  • 0.7.39a 버전과 0.7.36a 버전 중 심각하게 고민

    → 결국 장기적 앱 안정성을 위해 0.7.36a/99 버전에서 이슈 해결하기로!

  • 문제 원인 파악: 이모지 이슈 (유니코드 인코딩 처리 문제)

    • 복잡한 이모지 (예: 🍚, 🍼, 🧸 등)는 깨져서 다른 문자로 자동 변경됨

    • 봇이 초대된 방과 메시지 전송자 이름에 이모지 있으면 인식 못 함

    • 메시지 내용에도 이모지 있으면 코드 하이라이팅 깨짐

    → 결국, 모든 이모지 제거 후 봇 정상 작동! 🎉

  • 우여곡절 끝에, 기존 환영 인사봇 심폐소생 완료 ✅

4단계: 기존 검색봇 심폐소생 시도

  • 잘 작동하던 기존 검색봇 코드를 0.7.36a/99 버전에 맞게 수정 요청 (to 클로드)

    • 스택 오버플로우 오류 지속 발생 → 봇 자동 종료 java.lang.StackOverflowError

    • 문제 원인: API 응답 처리 및 JSON 변환 시 메모리 부족

    • 해결 시도: 메모리 사용량 최적화 (응답 길이, 요청 크기 제한), 앱 캐시 및 데이터 삭제, 앱 재시작 등.

    오버플로우 오류 지속 발생 (최소 단위 코드도 작동 X)

흰색 배경에 한국어 텍스트
  • 단순 반응형 코드 기반의 환영 인사봇은 정상 작동

    • 검색봇은 더 복잡한 로직과 함수 호출, 메모리 사용량 및 스택 공간 필요

      한국의 다양한 종류의 음식을 보여주는 테이블

      5단계: 결국, 카톡봇 신규 버전으로 회귀

      • 메신저봇R 구버전 (0.7.36a/99) 삭제 → 최신 버전 (0.7.39a) 재설치

      • 이전에 정상 작동하던 코드 다시 이식 → 정상 동작! ✅

        한국 문자 메시지의 스크린 샷

        • But, 답변 잘림 현상 발생 → MAX_CHARS 값 조정해서 문제 해결

          퍼플렉시티 검색봇 소생 성공! 🙌

    💡 배운 점

    기술적 인사이트

    1. FastAPI 셀프 재설치 경험으로 서버 구축 프로세스 복기

      → 서버 프로젝트 파일은 찾기 쉬운 곳에 저장하기

    2. 메신저봇R 버전별 코드 문법 차이로 인한 호환성 문제 주의

      → 버전에 따라 정상 작동 여부 달라짐

      한국어를 가진 한국 웹 사이트 스크린 샷
      한국어를 가진 한국 웹 사이트의 스크린 샷

    → 버전에 따라 코드 재작성 필요

    1. target_room 이름 정확성은 여전히 핵심

      1. 봇 전용 폰에서 방 이름 확인 필요

        • 메인 폰: 커뮤니티 이유잇다

          봇 전용 폰: 이유잇다 | 이유식 중심 육아 커뮤니티

          → 잘못 기입하면 정상 동작 불가

    2. 이모지, 특수문자 → 잠재적 이슈 유발 요소

      → 0.7.36a/99 버전 사용 시 이모지 사용 권장 X

      (깔끔하게 텍스트만 사용하는 것이 가장 안정적)

      한국 시간 테이블의 ��스크린 샷

      → 심미성과 안정성, 둘 다 가질 수는 없다! (trade-off)

    3. 메신저봇R의 버전별 장단점이 너무 뚜렷함

      한국 이름이 다른 테이블

    4. 계속된 스택오버플로우 이슈로 인해 n8n+fastAPI 통합 시스템의 필요성 체감

      1. fastAPI을 활용해 메신저봇 역할을 단순 중계 역할로 최소화 (메시지 감지 및 간단한 접두어 확인 정도)

      2. 복잡한 작업은 외부 서버에서 처리 (예: JSON 파싱, 데이터 처리, 응답 형식 정리 등)

      [n8n+fastAPI 통합 시스템 구축의 장점]

      한국어 단어 형태의 한국어

다음 계획 🚀

  • 1차 목표: n8n을 활용한 메신저봇R + FastAPI 통합 시스템 구축, 깃허브 버전 관리, → 카톡봇 싱글턴/멀티턴 구현까지 성공

  • 최종 목표: 올해 안으로 커뮤니티 운영 자동화 50% 이상 달성, 멤버 맞춤 검색 정보 제공

지난 글

https://www.gpters.org/chatbot/post/community-buddy-bot-establishment-8ltZn56aWtPsFAu

4
3개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요