Develiper
Develiper
🎻 루키 파트너
📚 학습반장

[RAG 서비스 완성 및 배포 도전 1탄] 이호선 교수님 페르소나 상담 챗봇 구축(일단은 이호선 교수님스럽지 않아서 실패...)

목표: 유명한 심리 상담 전문가인 이호선 교수님처럼 매운맛으로 상담을 해 주는 챗봇 개발 및 배포

Workflow:
1. 이호선 교수님 상담 방법, skill, 말투, 특징 등을 잡아내어 이를 지식 파일들로 구성하기
2. Knowledge 파일들을 Dify에 지식으로 등록(전처리 및 indexing)
3. Dify로 챗봇 구성
4. Test
5. 게시하기
6. Front end 구성하여 Dify 챗봇 연결
7. 실제 사용자 피드백 받아서 개선하기

이런 목표로 RAG 기반의 챗봇을 만들어 보고자 합니다.


1. 이호선 교수님 상담 방법, skill, 말투, 특징 등을 잡아내어 이를 지식 파일들로 구성하기

이를 위해 NotebookLM으로 이호선 교수님의 상담과 강연이 담긴 Youtube 영상들을 링크로 걸어서 Source로 추가해 주었습니다.

그리고 이를 바탕으로 이호선 교수님의 상담 원칙과 기법 등에 대해서 질문을 던져서 답변을 받고 이를 메모로 만들어서 다시 소스에 추가합니다.

동시에 이호선 교수님의 상담 말투, 어투, 특징 등을 파악하고자 질문을 던져서 답변을 받고 이를 메모로 만들어서 다시 소스에 추가했습니다.

또한, Youtube 링크 하나씩에 대해서 스크립트를 추출해서 각각별로 .md 파일로 만들었습니다.

이렇게 RAG로 걸 지식 파일들을 생성했습니다.


2. Knowledge 파일들을 Dify에 지식으로 등록(전처리 및 indexing)

만들어낸 파일들을 Dify의 지식에 '이호선 교수님 상담 스타일 및 사례'라는 제목으로 심어주었습니다.

한국 통신사 - 스크린 샷 썸네일
한국어 앱의 스크린 샷

indexing하고 embedding한 방식은

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

이런 방식으로 문서들을 쪼개서 심어주었습니다.


3. Dify로 챗봇 구성

from scratch로 다음과 같이 간단하게 구성했습니다.

지식 파일 심어 놓은 것들을 연결시켜주었고

LLM 설정은

gpt-4로 했고

system prompt는

<context> - 내담자 입력 또는 대화 시작 메시지: {{#context#}} </context> <instruction> 당신은 심리상담가 이호선 교수님의 스타일로, 내담자의 고민과 상황에 따라 아래 단계와 예시를 바탕으로 대화를 진행하세요. 1. 진단/팩트폭격: - 내담자의 고민/상황을 직설적이고 단호한 화법으로 '팩트 폭격' 스타일로 파악하세요. - 만약 내담자가 두루뭉술하게 이야기할 경우 “핵심만 말해보세요”, “지금 문제의 본질은 뭐라고 생각합니까?” 등 직면 질문을 먼저 해주세요. 2. 공감/격려: - 내담자가 힘든 점을 인정하고, 그동안 버틴 것만으로 충분히 대단하다고 진심으로 공감해 주세요. - 너무 추상적인 위로가 아니라 “지쳐도 괜찮아요, 여기까지 온 것만 해도 힘든 여정이었죠”처럼 구체적으로 표현하세요. 3. 실천 제안 및 점검: - 즉각 시작할 수 있는 구체적 행동이나 작은 실천을 실용적으로 제안하세요. - 만약 내담자가 과거에 시도(행동변화/노력)를 드러냈다면 구체적인 결과, 장애물, 느낀 점을 직접 물어보세요. - 아무 행동도 하지 않았다면 “망설이는 시간에 작은 습관부터 오늘부터 해보세요” 같은 메시지로 동기를 부여하세요. 4. 마무리/동기 부여: - 변화는 한 번에 큰 것이 아니라, 오늘의 작은 실천에서 시작된다는 희망을 전하세요. - 현실적인 격려와 단호한 한 마디로 쿨하게 마무리합니다. - “안 바뀌는 사람이 없다니까요. 오늘 한걸음 내딛으신 것만으로도 박수받을 만합니다”처럼 힘이 되는 문장을 남기세요. 중요: 항상 내담자 실제 답변을 반영하여, 맥락에 맞는 질문-공감-실천 제안-응원을 자연스럽게 하나로 이어지게 답변하세요. 템플릿 답변, 형식적인 위로보다 구체적인 행동 유도, 현실 직면, 실용적 언어, 따뜻함을 조화롭게 유지하세요. <example> 입력: “요즘 무기력하고 외롭고 지칩니다.” → “무기력과 외로움, 누구나 겪는다고 해서 내 고통이 작아지진 않습니다. 힘든 걸 참으면서 여태 버틴 것도 충분히 대단합니다. 지금 당장 할 수 있는 작은 변화를 한 가지 골라 오늘 시작해보실 수 있을까요? 행동이 답입니다. 오늘부터 한 걸음, 시작하세요.” 입력: “변화를 시도했지만 잘 안 됐어요.” → “시도한 것 자체가 이미 보통이 아닙니다. 잘 안 됐어도, 문제를 회피하지 않은 용기가 더 중요하지요. 실패했다고 너무 자책하지 마세요. 어떤 부분이 제일 막혔는지 이야기해 주면, 그에 맞는 현실적인 방법을 다시 같이 찾아보죠.” 입력: “아무것도 하고 싶지 않습니다.” → “그런 마음, 솔직하게 말해줘서 고마워요. 아무것도 하고 싶지 않을 땐 억지로 애쓰지 말고 아주 작은 것, 예를 들어 산책 5분, 간단히 일기 쓰기부터 시작해봐요. 변화는 거창한 목표가 아니라 하찮게 보이는 한 걸음에서 시작됩니다.” </example> </instruction>

이와 같이 설정했습니다.


4. Test

미리보기 하면서 챗봇과 대화하면서 test 해봅니다.

답변은 나오지만 원했던 스타일이 아닙니다.

원했던 챗봇은

대화를 하나 하나씩 주고 받으면서 실제 상담하듯이 하기를 원했고, 이호선 교수님 말투와 상담 스타일처럼 느낌이 나기를 원했는데....

  1. 대화 티키타카가 안되고 그냥 한 번에 모든 내용을 말해 버리는 챗봇이 되어서 재미가 없습니다. 상담하는 느낌도 안들고요

  2. 그리고 이호선 교수님 느낌은 0.1 정도 밖에 없는 것 같네요.

그래서 AI와 대화하면서 얻은 해법은

LLM을 단계별로 여러 개 노드를 만들어 보라고 해서 그대로 따라해 봅니다.

이렇게 하면 하나하나 대화하면서 티키타카 하는 느낌으로 만들 수 있다고 하길래 만들어 봤는데

이것도 역시 실패입니다.

노드가 많아지면서 답변 나오기까지 시간만 오래 걸리고 한 번에 모든 답을 하려는 경향은 그대로입니다.

잘은 모르지만 제 생각에는 싱글턴 대화만 구현한 느낌이고

제가 원하는 멀티턴 대화를 어떻게 구현하는 지 몰라서 제가 구현을 못한 것 같네요

그래서 실망스러운 결과라서 5,6,7 단계는 진행하지 못하고 여기서 stop입니다.


Big Questions to 스터디장님

  1. 이호선 교수님 스타일과 말투, 상담 기법 등을 거의 그대로 따라하는 상담 챗봇을 만들려면 어떤 방식으로 접근해야 더 좋을까요? 제가 택한 방법도 나쁘지는 않다고 생각했는데, 원하는 결과가 나오지 않으니 다른 방식을 찾아야 할 것 같습니다.

  2. 실제 상담하듯이 내담자와 상담 챗봇이 대화를 티키타카 하는 멀티 턴 방식의 챗봇을 만들려면 Dify 노드 구성을 어떻게 해야 하나요?

  3. 번외로 테디노트님의 'RAG 비법 노트' 기본편과 심화편 책을 구매해서 읽고 있습니다. Langchain 내용은 이해는 얼추 되는데 막상 코드를 짜서 하려니 약간 엄두가 나지 않습니다.

    Dify에서도 langchain 관련해서 custom code를 넣을 수 있는 방법이 있나요?
    그리고 langchain 코드 짜는 것도 대신 해주는 AI가 있을 것 같은데 어떤 방법이 있을까요?

답변과 피드백을 되도록 빨리 주시면

다시 만들어서 목요일 전에 사례글 다시 upgrade해서 올려보고 싶습니다.

이상입니다.

감사합니다.

2
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요