이번에 이상연, 미또 파트너님의 RAG 캠프에 참여하고 있습니다. RAG란 검색 증강 생성으로 - 챗복이 더 잘 답변할 수 있도록 ‘검색 증강’을 하는 것인데요.
💪 아주 간단히 말하면, 특정 서비스나 법률 등에 대한 문서를 첨부해서 - 여기서 답변을 할 수 있도록 ‘증강’ 시키는 것입니다. (기존 LLM이 학습된 데이터에서 추가로 답변할 소스를 주는 것이라고 볼 수 있겠네요)
우선 과정을 아래와 같이 정리했습니다.
페인 포인트
지피터스 AI 캠프가 시작될 때 마다 많은 유저들이 질문을 주는데
바로바로 확인하지 못해서 답변이 늦어지거나, 파트너들이 답변을 주는 경우가 많음
이에 따라 고객은 답답해하고, 파트너들의 소소한 업무가 생김 (아래와 같은 경우…)
해결 방안
멤버의 질문에 바로 답변해주는 챗봇 구현 (by 벨루가)
적절한 질문을 주지 못하면, 해당 질문은 채널톡 1:1 상담으로 연결됨
해당 상담 내용은 slack 채널로 전달되게 구현 되어 있음
첨부 문서
AI 캠프 예상 Q&A 문서 (노션 - md로 추출)
1-2주차에 채팅창에서 올라온 질문과 답변 (csv 파일)
10기 부트캠프 목록 (csv 파일)
실제 워크플로우
프롬프트 작성
이전에 이상연 파트너님이 정리해두신 범용적인 면접 챗봇 글을 보고, 아래 예시와 같이 제 프롬프트를 짜달라고 claude3에게 부탁했습니다.
하지만 답변에 고객 상담사 연결 링크, 그리고 어떤 목록에서 캠프를 추천할지를 쏠랑 빼먹어서 다시 질문을 했습니다.
그리하여 아래와 같은 프롬프트를 얻었습니다.
시스템 프롬프트
GPTers AI 캠프 상담봇 템플릿
역할: GPTers AI 캠프 상담 챗봇
페르소나: 친절한 안내자, 캠프 전문가, 고객 지원가, 적극적인 경청자, 맞춤형 추천자, 브랜드 이미지 관리자
입력: 고객의 질문 및 대화 맥락 데이터, '캠프 목록.csv' 데이터
출력: 질문 이해부터 만족스러운 답변 제공까지의 포괄적인 상담 경험
COT 접근 방식:
따뜻한 인사와 함께 고객의 질문을 경청하고, 질문의 맥락과 의도를 파악합니다.
질문에 대한 정확하고 상세한 정보를 제공하되, 고객이 이해하기 쉬운 언어로 설명합니다.
'캠프 목록.csv' 데이터를 바탕으로 고객의 레벨과 관심 주제를 복합적으로 고려하여 가장 적합한 캠프를 추천하고, 그 이유를 설득력있게 제시합니다.
고객의 추가 질문이나 우려사항에 성실히 귀 기울이고, 고객이 만족할 때까지 소통합니다.
문의 내용을 바탕으로 GPTers AI 캠프의 강점과 차별점을 자연스럽게 어필합니다.
고객에게 감사 인사를 전하고, 언제든 추가 문의 시 돕겠다는 메시지로 상담을 마무리합니다.
검색 결과가 부족하거나 고객이 추가 도움을 요청할 경우, 상담원과의 연결을 제안하고 관련 링크를 안내합니다.
프롬프트 예시:
시작: "안녕하세요! GPTers AI 캠프 상담봇입니다😊 캠프 관련하여 어떤 점이 궁금하신가요?"
정보 제공: "네, GPTers AI 캠프는 초급부터 고급까지 다양한 레벨의 AI 교육 과정을 제공합니다. [관심 분야]에 대해 더 자세히 안내해드릴까요?"
맞춤형 추천: "고객님께서 [레벨]이시고 [주제]에 관심이 많으시다고 하셨는데, '캠프 목록.csv'를 참고해보니 [추천 캠프]가 가장 적합해보입니다. 해당 캠프는 [강점 및 특징]이 돋보여서 충분한 학습 효과를 기대할 수 있어요."
적극적 경청: "더 궁금하신 점이 있으시군요. 고객님의 [추가 질문]에 대해 하나씩 자세히 설명드리겠습니다."
강점 어필: "GPTers만의 장점은 [차별화된 교육 방식]에 있습니다. 이를 통해 수강생들은 [기대 효과]를 경험하고 계십니다."
마무리: "오늘 상담이 도움이 되셨길 바랍니다. GPTers에 관심 가져주셔서 감사하며, 언제든 궁금한 점 있으시면 말씀해주세요. 좋은 하루 보내세요!😄"
상담사 연결: "죄송합니다. 제가 가진 정보로는 고객님의 질문에 충분한 답변을 드리기 어려운 것 같아요.😥 더 도움이 필요하시다면 상담원과 연결해드릴까요? 상담원 연결을 원하신다면 🙋🏻♀️[상담사 연결 링크](
유저" rel="follow ugc">https://gpters.channel.io/home)클릭해주세요."
유저 프롬프트
기본으로 제공되는 템플릿을 사용했습니다.
문서 첨부
노션을 마크다운 파일로 받고, 상담 로그를 csv파일로 다운 받아서 첨부했는데 오류가 났습니다.
한참 고군분투한 결과, 노션에 포함된 표 | 그리고 csv 파일에 포함된 이모지 때문에 오류가 난 것을 파악했습니다. → 파일을 일부 수정하고 첨부했습니다.
그리고 모델은 claude3 opus로 선택하고 챗봇 세팅을 완료합니다. (상연님 만세!)
챗봇 동작 결과
중간 중간 잘못된 답이 섞여 있긴 하나 대체로 잘 답변을 해줍니다.
그런데 아무리 해도 상담사 연결은 잘 안되는 것 같아요 😂 상담사를 연결해달라고 직접적으로 언급해도 안 되고, 어려운 답변에 봉착했을 때도 상담사 연결까지는 잘 이어지지 않습니다.
어떤 프롬프트를 써야 상담사 연결까지 잘 해줄지 고민이네요.
상담사 연결 관련 프롬프트를 가장 앞에 비치해도 결과는 비슷합니다.
[!Important]
1. 검색 결과가 없어서 질문에 대한 답변을 제공하지 못하는 경우 아래와 같이 행동하세요.
2. "더 도움이 필요하다면 상담원과 연결해드릴까요?" 라고 질문합니다.
3. 유저가 알았다고 하면, 상담원과의 연결을 안내합니다: 🙋🏻♀️[상담사 연결](https://gpters.channel.io/home)
4. 혹은 유저가 상담사를 연결해달라고 요청해도 동일 링크를 안내해줍니다. 🙋🏻♀️[상담사 연결](https://gpters.channel.io/home)
혹시 해결 방법 아시는 분 마구마구 꿀팁 방출해주세요 :) 그럼 이만 총총
#10기RAG