RAG를 이용한 사주보는 고양이 챗봇 제작기

http://pf.kakao.com/_DRxdtG

만들어진 챗봇입니다. 카카오 채널로 사용하실 수 있고

유저를 식별할 수 있는 개인정보는 저장되지 않으니 재미있게 사용해 보시면 좋겠습니다.

제 짧은 경험이지만 다른 제작자 분들께 도움이 될 수 있으면 좋겠습니다.

랭체인 - RAG를 이용한 카카오 챗봇 제작기

  1. 랭체인을 이용한 챗봇을 제작합니다.

    랭체인의 사용방법은 잘알려져 있고, 많은 분들이 가이들르 올려주셨기 때문에 따로 가이드를 하진 않겠습니다.

    코드 편집기의 스크린샷

    이런식으로 여러 포멧의 데이터를 청킹하고,

    코드 편집기의 스크린샷

    허깅페이스 임베딩과 bm25 를 이용해 앙상블 리트라이버를 구성했습니다.
    앙상블로 구성한 이유는 테스트하면서 임베딩과 서칭을 같이 하는게 조금 더 정확한 결과를 주는것 같았기 때문이에요 .

    이 후 잘 아시는 것 처럼 랭체인을 이용해서 이걸 LLM과 엮었습니다.

    컴퓨터 화면의 스크린샷

    저는 QA 체인을 이용해서 응답을 구하도록 했고, 프롬프트는 고양이 말투를 할 수 있도록 또 사주정보를 적절하게 반영할 수 있도록 구성했습니다.

  2. 구성한 랭체인의 결과를 fast API 를 이용해 서버에 띄웁니다.

    코드 편집기의 스크린샷

    카카오의 응답 규칙 가이드(https://kakaobusiness.gitbook.io/main/tool/chatbot/skill_guide/answer_json_format)

    를 참조해서 받아서 처리할 응답, 돌려줘야 하는 응답 을 구분해서 post 형식으로 보낼 수 있도록 처리했습니다. 챗봇의 응답시간이 있기때문에 카카오에서 지원해주는 콜백기능을 활용해야만 했습니다.

    웹 브라우저의 CSS 파일 스크린샷

    이후 이런식으로 답변을 돌려주도록 하면 됩니다.

  3. 띄워놓은 서버를 카카오 폴백 메시지를 통해 응답하도록 스킬을 설정합니다.

    카카오채널 챗봇을 생성하신 후

    파란색과 흰색 배경의 웹사이트
한국사이트 스크린샷

우선 아까 띄워놓은 서버의 URL을 이용해서 스킬을 작성합니다.

작성된 스킬을 이렇게 폴백 블럭에 연결하면 카카오톡 채널을 이용한 서비스를 할 수 있습니다.

다만 이렇게 작성한 AI챗봇은 한번에 하나의 응답밖에 처리 하지 못하는 문제를 가집니다.

이 부분은 각 LLM API가 지원하는 멀티모드를 이용하시면 됩니다. (제가 해결한 문제가 아니라 자료가 없어요.ㅠㅠ)

두서 없는 글이지만 그래도 도움이 되실 분이 있으면 좋겠습니다.

감사합니다.

6

👉 이 게시글도 읽어보세요