[NLP] 반려동물 훈련사 AI 챗봇 (강형욱 AI)

김두현·2025년 3월 14일
post-thumbnail

Date: 2024.11. → 2025.03.
Language: Python

I. 서론

한양대학교 ERICA의 2024-2 ICT창업캡스톤디자인 수업에서 우리 팀은 펫로스 증후군을 주제로 캡스톤을 진행했다. 창업하려는 서비스에 대한 사업계획서를 작성하고 IR해보는 캡스톤이었다. 동시에, 2024 전국 대학생 SW 창업 아이디어톤도 출전했다. 우리 팀은 전국 83개의 대학생 출전팀 중 4등으로 장려상을 수상받았다.

나는 이 서비스에 들어가는 AI 기술과 통계 자료 부분을 중점적으로 전반적인 사업계획서 작성을 담당했다. 이 프로젝트는 지난번 [NLP] 펫로스 증후군 심리 상담 챗봇에 이어 AI 기술이 들어가는 부분 중 하나인 반려동물 훈련사 AI 챗봇 (강형욱 AI) 프로토타입 제작 과정을 담는다.

이 프로젝트도 마찬가지로 사업계획서에 단순히 '어떤 기술을 가지고 어떤 기능을 구현하겠다'로 서술하는 것을 넘어서 정말 만들 수 있는 사람이 쓴 것 같은 '실현 가능함'과 '구체적임'이 드러나도록 서술하는게 더 좋은 평가를 받을 것으로 판단해 직접 제작해보게 되었다. 나는 화려한 기술 집약적 서비스보단, 개발 및 운영 비용은 적으면서 성능도 괜찮으며 빠르고 편리하게 개발할 수 있는 스타트업 개발에 초점을 두었다.

RAG가 최근 NLP 분야에서 매우 핫한 키워드다. 외부 문서에서 검색을 통해 context에 넣어줌으로써 Hallucination 현상이 발생할 가능성을 낮추고, 비교적 정확한 정보 제공을 해줄 수 있다. 이러한 RAG를 쉽게 구현할 수 있는 것이 LangChain 프레임워크여서 LangChain도 함께 부상하게 되었다. 이번 캡스톤이 LangChain의 전반적인 사용법과 RAG를 공부하게 되는 좋은 기회가 되었다.

LangChain과 RAG는 <랭체인LangChain 노트> - LangChain 한국어 튜토리얼🇰🇷를 참고하여 공부하였다. 전반적인 사용법이 한국어로 설명되어 있다는 점이 매우 큰 장점이지만, 완전 초보자가 이 책을 보면서 공부하기에는 설명이 자세한 것은 아니라서 힘들 수 있겠다고 생각한다. 공부하고 난 후, 내가 원하는 기능들을 원하는 위치에 적용해보려고 할 때 사소하게 안됐던 점이 많았고 어려움을 많이 느꼈다. 이 프로젝트를 수행하였지만 아직 LangChain에 대한 어려움이 많이 남아있어 앞으로 다양한 NLP 프로젝트를 하려면 많은 공부가 필요할 것 같다.

II. 반려동물 훈련사 AI 챗봇 구현

2-1 사용 기술

  • Open AI API
  • youtube_transcript_api
  • Prompt Engineering
    • 지침 제공
    • 페르소나 설정
    • 맥락 내 학습(In-Context Learning)
    • Few-Shot Learning
  • LangChain
  • Retrieval Augmented Generation

2-2 전반적인 설명

적은 자본으로 높은 성능을 추구하여 실현 가능한 서비스가 되는 것에 초점을 두고 챗봇 구성을 하였다.

코드 대부분의 기능과 구현 과정을 설명하긴 했으나, 구체적인 부분은 코드를 참고해주세요.

1) Prompt Engineering

말투 예시나 어록과 같이 글자 그대로 사용해야하는 문구가 아닌 이상 모든 프롬프트는 영어로 구성하였다. LLM 모델이 한국어 보다 영어로 이루어진 데이터를 많이 학습하고, Prmopt Engineering 기법도 영어 기준으로 많이 연구되고 있기 때문에 영어 프롬프트가 더 성능이 좋은 경향을 보인다.

2) 페르소나 설정

반려동물 훈련사의 관점에서 답하고, 역할을 하도록 설정하였다. 또한, 서비스의 재미 포인트 중 하나로 강형욱님의 말투를 구현해내어 강형욱AI를 만드는 것이 목적이었기 때문에 AI에게 이름이 강형욱임을 지시하였다.

3) In-Context Learning

User Profile의 형태로 제공하였다. 이 User Profile에는 사용자의 이름, 반려동물의 이름, 반려동물의 종류, 반려동물에 대한 세부 사항(견/묘종, 생일, 성격, 선호, 건강 정보 등)이 포함된다.

반려동물 정보를 넣은 것은 반려동물의 건강 정보, 성향, 견/묘종, 좋아하는 간식 종류 등을 종합적으로 판단해 개개인의 반려동물 맞는 정보를 제공해주면 좋겠다고 생각하여 넣어주었다.

실제로 생성되는 답변을 보면 참고하여 개인화된 답변을 제공하는 것을 관찰할 수 있다.

4) 말투 구현

이 챗봇은 강형욱님의 말투를 모방하여 사용자에게 반려동물의 행동과 훈련 정보를 제공하는 강형욱 AI를 만드는 것이 목적이었다. 아래는 강형욱님의 말투를 구현한 과정에 대한 기록이다.

① 데이터 수집

강형욱님의 말투 데이터를 수집하기 위해 강형욱의 보듬TV 유튜브 채널의 영상을 참고하였다. 영상 중 강형욱님의 독백이 주를 이루는 영상들이 필요했다. 발화자가 2명 이상일 경우 전처리가 힘들어지고, 섞여들어갈 경우 강형욱님의 말투가 제대로 반영되지 않을 수 있다. 강형욱의 보듬 TV 채널의 '퍼피교육'이라는 프로그램은 강형욱님의 독백이 대부분이고, 강아지 교육의 내용을 담고 있어 서비스에 적용할만한 데이터가 많을 것으로 판단했다. 따라서, '퍼피교육' 재생목록 안의 모든 영상의 자막을 스크랩해 활용했다.

YouTube Data API를 사용하여 영상의 자막 스크랩이 가능하다고 1차 조사를 했으나, OAuth 인증 문제나 기타 문제들에 부딪혀서 다른 방안을 모색하였다. 그 결과, youtube_transcript_api를 활용하여 매우 쉽게 동영상의 자막 데이터를 수집할 수 있었다.

youtube_transcript_api로 '퍼피교육' 재생목록에 있는 모든 동영상의 자막 데이터를 수집하고 다음과 같은 전처리 과정을 진행했다.

② 수집시 정형화된 자막과 대화 제거

먼저 자막 데이터의 [ ]안에 둘러쌓여 있는 말은 발화자가 있는 것이 아닌, 상황 설명 등을 하는 영상 자막이다. 따라서, 수집 시에 대괄호로 시작되면 수집하지 않았다. 또한, 영상 안의 대화 중 일부 자막을 - 로 구분해두었다. 이러한 문답 상황에서 누가 강형욱님인지 판단하기 어렵고, 강형욱님의 말투만 학습하는 것이 목적이므로 수집하지 않고 자막 데이터 파일을 구성했다.

(총 4,500 문장 수집)

③ 질문에 대한 답 제거

'퍼피교육'이 독백이 주로 있는 상황임에도 보호자와 소통하는 부분이 몇 존재하였다. 이러한 경우, 보호자의 말투 데이터가 들어갈 수 있기 때문에 문답하는 부분을 제거하는 것이 목표였다.

자막 데이터를 살펴보니 전반적으로 문답은 강형욱님이 보호자에게 물어보고, 보호자는 단답으로 답하는 상황이 주로 구성되어 있었다. 따라서, 나는 질문이 있으면 그 다음 문장이 질문에 대한 답인가, 아닌가만 판단하면 어느정도 데이터가 처리될 수 있을 것 같다고 생각하였다.

이는 '?'가 들어간 모든 문장은 Question으로 보고, 그 바로 다음 문장이 이에 대한 Answer로 보아 이를 Open AI API를 활용해 GPT 4o에게 판단하라고 했다. '?' 자체가 질문을 꼭 의미하는 것은 아닌 경우도 있었다. 감탄사에 '?!'가 들어간 경우, 문장 안에 의문문이 들어간 경우도 존재했다. 예를 들어, "난 편할 줄 알았죠?!", "얘 표정은 '이 사람 뭔데?' 그런 표정이야" 같은 문장이 있었다. 따라서, Question에 들어간 문장이 질문인지 부터 판단하고, 질문인 경우 논리적 연관성, 의도 반영, 문맥상 자연스러움 등을 판단 기준으로 주어 판단하게 하였고, 그 결과를 O, X로 return 하도록 했다. 이를 바탕으로 script를 재구성 하였다.

이 과정에서 질문은 대부분 잘 걸러졌지만, 질문이 아님에도 걸려지는 경우가 존재했다. 하지만 내가 수집한 초기 데이터가 Few-Shot Learning을 적용하기에 너무 많았기 때문에 질문만 잘 제거되면 괜찮다 생각하고 진행하였다.

초기에 Chat GPT를 활용해서 O/X를 분류하는 것이 성능이 상당히 떨어질 것으로 생각하여 문답 분류 관련 서비스와 모델도 찾고, 직접 모델을 학습시킬까 등의 방법을 생각해봤지만 쉽지 않아보였다. 하지만, 권순찬, 이동희 and 장백철. (2024). 대규모 언어 모델을 사용한 제로샷 한국어 감성 분석: 사전 학습된 언어 모델과의 비교. 한국컴퓨터정보학회논문지, 29(2), 43-50. 에 따르면 pretrained model 과 Zero-Shot prompt로 구성된 LLM 모델로 한국어 감정 분석을 하여 긍정/부정으로 분류해봤더니, LLM이 거의 근접하거나, 더 높은 성능을 보였다는 내용이 있었다. 따라서, 내가 수행한 질문에 대한 답 판단도 성능이 pretrained model 만큼 나올 것을 가정하고 이 과정을 수행했다.

(154 문장 제거)

④ 반말 제거

script를 봤을 때 일반적으로 강형욱님이 존댓말을 하는 경우 시청자나 보호자님께 설명하는 상황이 주를 이루었고, 반말을 하는 경우 강아지를 보고 하시는 혼잣말인 경우나 강아지를 훈련시키는 내용이 많았다. 따라서 우리 서비스는 강형욱님이 보호자에게 설명하는 구성의 챗봇이므로 존댓말 데이터로 프롬프트를 구성하는게 훨씬 더 성능이 좋을 것으로 판단했다.

반말 제거를 위한 방법을 찾던 중, Repply의 co-founder & AI Engineer로 활동하시는 오종민님께서 한국어 존댓말 반말 분류기를 제작하신 것을 발견하였다. 딱 내가 원하던 모델이었고, 성능도 괜찮게 나오는 것으로 확인되어 이 모델로 전처리를 진행하였다.

(2,383 문장 제거)

⑤ 중복 제거

script에 불필요한 중복된 문장이 많음을 확인하였다. 중복된 문장은 단답이거나, 짧은 표현인 경우가 많아 말투 특성을 반영하기에 효율적이지 않고, 불필요한 데이터가 많았다. 중복 제거는 간단하게 set로 바꿔주었다가, list로 바꿔주면 해결된다. 하지만, 이렇게 처리할 경우 순서가 불규칙하게 바뀌므로 질문에 대한 답 제거처럼 순서가 중요한 작업 뒤에 위치해주어야 할 것 같다.

(64 문장 제거)

계속 전처리 과정을 통해 줄여나가고 싶어서 더 이상 어떻게 할 수 있을까 고민했지만 더 이상 제거할만한 공통적인 요소가 보이지 않았고 나름 만족스러운 수준까지 도달하여서 Few-shot으로 구성할 문장 갯수만큼 랜덤으로 뽑아서 진행해보았다. 30개 정도 무작위로 뽑아서 문장 자체를 넣어주고, 특성을 반영하라고 지시하였지만 너무 성능이 떨어지는 모습을 보였다. 따라서 다른 방법을 찾아주어야 했다.

⑥ 특징 추출

GPT 말투 학습에 관한 여러 글을 참고하면서, 문장 자체를 넣어주는 방법이 아닌 말투 특징을 Chat GPT를 통해 추출 한 후, 각 특징과 특징에 대한 예시를 프롬프트에 다시 넣어주는 Few-Shot Learning을 진행하는 방법이 존재했다. 해당 방식이 성능이 잘 나오는 것으로 확인하였고, 이 방식을 적용했다. 이전 전처리까지 진행한 모든 문장 (1899개)를 GPT에게 줘서 말투 특성과 이에 해당하는 예시들을 추출해달라고 지시하고, 이를 프롬프트에 넣어주었다. 이 과정을 통해 직접적으로 말투가 들어간 문장을 주는 것보다 특징을 서술해주고, 예시를 주는 방식이 성능이 훨씬 좋았음을 확인했다.

⑦ 결론

이렇게 말투 반영에 굉장히 공을 들였으나, 솔직히 잘 되었는지 모르겠다. 하지만, 훈련사의 말투로써는 괜찮은 수준인 것 같아 여기서 마무리 지으려고 한다. 추후에 더 공부해서 말투를 반영하는 다양한 방법을 알게되면 시도해볼 수 있을 것이다.

5) LangChain, RAG

'서울시 수의사회 반려동물 행동학 연구회'에서 반려동물 행동학에 대한 총 10편의 연재 논문이 있다. 이 프로젝트는 프로토타입 수준이므로 해당 연재 논문들만의 정보를 가지고 RAG를 구현하였다.

Link. 행동학 연재 1편: 사회화 교육에 대하여

해당 논문들을 불러오고, 일반적인 텍스트에 사용하기 좋은 'RecursiveCharacterTextSplitter'를 활용하여 Text split을 진행하였고, chunk size는 1,000 으로 성능과 문맥을 적당히 설정해주었으며, chunk overlap은 chunk size의 10% 수준으로 잡았다.

Embedding은 OpenAI API의 'text-embedding-3-small'을 활용하여 적은 자본을 사용하지만, 준수한 성능, 편리한 사용 등을 추구했다.

Vector Store는 ChromaDB를 활용했다.

Retriever는 Vector Store 기반 검색기를 활용했다.

LLM Model은 Open AI의 GPT-4o-mini / GPT-4o를 활용하였고, Parameter는 기본값 설정을 사용했다. frequency_penalty, presence_penalty, temperature의 파라미터를 조절해보면서 여러 상황을 테스트 해봤으나 결과적으로 모두 기본값 설정이 가장 답변이 만족스러웠다. 조금 더 최적화 해보고 싶었으나 시간상의 한계로 하지 못했다. 또한, RAG를 쓰면 일반적으로 Temperature을 낮게 설정하여 Hallucination을 방지하도록 하는데, 이러한 경우 말투가 원하는 수준만큼 반영되지 않았다.

구조화된 출력이 아니므로, StrOutputParser로 출력을 구성했다.

RunnableWithMessageHistory와 ChatMessageHistory로 사용자별(세션별) 대화 내용을 In-Memory 방식으로 기억하면서 챗봇 대화를 이어나갈 수 있도록 구성했다. 파일 형태로 저장하거나, 서버에 저장해서 불러오는 등의 형태로 제작하면 실제 서비스에도 적용할 수 있어 보인다.

6) 기타 지시

① 반려동물 정보에 대한 직접적 언급 금지

대화를 시작하자마자 반려동물에 대한 정보들을 언급하는 문제가 발생하였고, 이는 사용자의 반감을 불러일으킬 수 있을 것으로 판단하여 제한하였다.

이 지시로 인해서 많이 언급하는 빈도수가 줄긴 했으나 아직 존재한다. 하지만, 여러 번 테스트 과정에서 적정한 수준인 것 같아 수정하지 않았다. 완전히 언급하지 않는다면 In-Context Learning으로 profile을 준 의미가 없어지니 적정한 수준의 언급이 필요할 것이다.

② 구조화된 답변 금지; 대화체 사용

이 챗봇은 반려동물 훈련이나 행동에 대한 정보를 제공하는 것이 목적이다 보니, 초기에 Chat GPT스러운 넘버링을 하며 구조화된 답변을 사용하는 경우가 빈번했다. 이 지시 추가로 해당 문제가 개선되었다.

③ 어록 사용

강형욱님의 유명한 어록

"강조되고 반복되는 소리는 강아지를 불안하게 해요."
"너 왜 우리 집에 왔어!!"
.
.
.

등의 어록을 사용하면 더 사용자가 강형욱님과 유사하다고 느낄 것 같아 사용하도록 지시하였다.

하지만, "강조되고 반복되는 소리는 강아지를 불안하게 해요." 말고는 적용해보니 맥락과 계속 안맞게 사용해버리는 문제가 발생했다. 맥락과 맞게 사용하라거나, 응답에 자연스럽게 사용하라고 지시하여도 개선되지 않는 모습에 하나만 적용하게 되어 아쉽다.

어록은 최대한 수정없이 사용하고, 직접 인용처럼 표현하지 말라고 지시하였다. 최대한 수정없이 사용하여야 강형욱의 어록이라고 사용자들이 인식하기 쉽기 때문이다. 또한, 여기서 직접 인용은 다음과 같이 표현하는 것을 의미하는 것이다.

... "강조되고 반복되는 소리는 강아지를 불안하게 해요." 라는 말처럼, ...

어록이 대화 안에 자연스럽게 나와야 재미있는 포인트가 되는데, 인용을 해버리면 본인이 말했던 것을 인용하여 사용하는 것처럼 되어버리니 문맥이 부자연스러워지고, 몰입을 깨는 포인트가 될 수 있다고 봤다.

④ Hallucination 방지

  • 답을 만들어내지 마라
  • 검색된 답을 사용해 답변하라
  • 검색된 context에 답을 찾을 수 없으면 모른다고 말하라

이는 RAG에서 자주 쓰이는 프롬프트이다.

이 프롬프트를 써주어 할루시네이션이 발생할 확률을 낮춘다.

⑤ 한국어 문법 준수

이 문장을 넣어주지 않으면 프롬프트 자체가 영어로 쓰여져 있어 영어 답변을 할 확률이 높고, 문장 생성 중 영어 단어를 섞어 쓸 확률이 높다.

2-3 코드

https://github.com/abc3279/Pet-Trainer-Chatbot

III. 결과

3-1 질문 구성

  • 강아지의 사회화 교육을 시작할 때, 몇 살부터 시작하는 것이 좋을까요?
  • 어떤 방법으로 사회화를 진행하는 것이 효과적일까요?
  • 새로 입양한 강아지가 집에 적응하는데 어떻게 도와주면 좋을까요?
  • 강아지가 문 밖에서 나는 소음에 민감해해요.
  • 강아지가 불안해할 때 어떤 교육을 시도해 볼 수 있을까요?
  • 강아지가 자주 물건을 물거나 지나친 관심을 보이는데 어떻게 할까요?
  • 장난감 추천해주세요!

다양한 문서를 참고해 답변해볼 수 있도록, 문서의 이름을 Chat GPT에게 넘겨 추천 질문을 뽑고, 임의의 질문을 추가하여 구성했다.

3-2 Script 1

강형욱 AI: 안녕하세요! 저는 강형욱이라고 해요. 반려동물 훈련사로 여러분들과 함께 하고 있답니다. 정말 만나서 반갑고요, 함께 반려동물과 행복하게 살아가는 방법을 찾아가 보아요. 오늘 어떤 도움을 드릴 수 있을까요? 아지에 대해 이야기해 주실래요?

보호자: 강아지의 사회화 교육을 시작할 때, 몇 살부터 시작하는 것이 좋을까요?

강형욱 AI: 강아지의 사회화 교육은 아주 중요해요! 강아지는 태어난 후 신생기, 이행기, 사회화기 등을 거치게 되는데요, 특히 사회화기는 약 3주령부터 14주령까지의 시기를 말해요. 이 시기에 다양한 경험과 자극을 통해 사회적 유대를 형성하기 시작하죠.

따라서 아지 같은 강아지들에게는 이른 시기부터 다양한 환경과 사람, 다른 동물과의 접촉을 통해 사회화를 시작하는 게 정말 중요해요. 이 과정에서 강아지는 다른 개들과의 소통 기술도 배우고, 겁이 없고 사교적인 성향으로 자랄 수 있답니다. 감각을 통해 다양한 자극을 경험하게 해주는 거죠.

강조되고 반복되는 소리는 강아지를 불안하게 만들 수 있어요. 그러니 아지가 불안해하지 않도록 차분하게 환경에 적응할 수 있게 도와주세요. 어떤가요, 도움 되셨나요?

보호자: 어떤 방법으로 사회화를 진행하는 것이 효과적일까요?

강형욱 AI: 두현님, 아지의 사회화를 진행할 때는 세 가지 방법으로 접근하면 효과적이에요. 첫 번째는 다른 개들과의 교류를 통해 개들끼리의 소통 기술을 습득하게 하는 거예요. 사회화기에는 어미나 형제들과의 접촉이 중요한데, 이른 시기에 그들과 떨어지면 다른 개와 쉽게 사귀지 못할 수도 있으니 주의해야죠.

두 번째는 사람이나 개 외의 다양한 동물들과의 교류를 통해 이종 동물과의 사회화도 중요해요. 다양한 동물들과 만나면서 다양한 상황에 적응하는 방법도 배울 수 있답니다.

마지막으로, 다양한 환경 자극에 적응하는 것이 필요해요. 시각, 청각, 후각, 촉각 등 다양한 감각을 통한 경험이 중요하니까요. 이런 사회화기 동안 아지가 많은 경험을 쌓을 수 있도록 해주면, 겁이 없고 사교적인 성향의 성견으로 자랄 수 있어요. 아지와 함께 재미있는 경험들을 많이 만들어 보세요! 어떤가요, 잘 설명된 것 같나요?

보호자: 새로 입양한 강아지가 집에 적응하는데 어떻게 도와주면 좋을까요?

강형욱 AI: 두현님! 새로 입양한 강아지가 집에 잘 적응할 수 있도록 도와주려면, 천천히 조금씩 현실에 적응할 기회를 줘야 해요. 강아지는 새로운 환경에서 어떤 소리와 냄새, 느낌을 경험할 수 있는데, 이 모든 것이 처음에는 무서울 수 있거든요. 너무 무리하지 말고, 강아지가 겁에 질려하지 않는지 주의 깊게 살펴보면서 천천히 익숙해질 수 있도록 해주세요.

강아지가 앞으로 가게 될 장소, 예를 들어 동물병원이나 미용실 등을 미리 방문하여 좋은 경험을 할 수 있도록 해보세요. 이런 곳에서 강아지가 맛있는 것을 먹거나 즐겁게 놀 수 있도록 하면서 긍정적인 기억을 심어 주는 거죠. 그래야 나중에 그런 장소에 가게 되더라도 조금 더 편안하게 느낄 수 있어요.

그리고 가능하다면 다양한 소리나 환경에 노출시키는 것도 도움이 됩니다. 예를 들어, 자동차 소리나 천둥 소리 같은 일상적인 소리에 익숙해지는 연습도 필요해요. 무엇보다 중요한 것은 강아지가 새로운 환경에 조금씩 익숙해지게 하는 것이죠. 언제나 안전하고 긍정적인 경험이 되도록 해주세요! 궁금한 점 있으면 언제든지 물어보세요!

보호자: 강아지가 문 밖에서 나는 소음에 민감해해요.

강형욱 AI: 두현님, 문 밖에서 나는 소음에 아지가 민감하게 반응한다면, 탈감작 교육과 역조건 부여가 도움이 될 수 있어요. 아지가 문 밖의 소음에 반응하지 않도록 훈련하는 것이 중요해요. 예를 들어, 소리를 들었을 때마다 긴장을 풀고 얌전히 있도록 가르치는 거죠.

먼저, 아지가 소리의 원인에 직접적으로 집중하지 않게 해주는 것이 중요해요. 방 가운데에 아지를 위치시키고, 두 명이 협력하여 소리를 발생시키며 훈련을 진행하면 좋습니다. 한 사람은 아지가 편안하게 여기는 사람이 되어 소음을 발생시키고, 아지가 점점 소리에 익숙해지게 하는 거예요.

이 과정을 천천히, 그리고 아지가 편안함을 느낄 수 있도록 반복적으로 해보세요. 물론 아지가 좋아하는 간식이나 칭찬으로 긍정적인 강화도 함께 제공하면서요. 이렇게 하면 나중에 문 밖에서 소음이 나더라도 아지가 더 침착하게 반응할 수 있을 거예요. 순조롭게 잘 진행되기를 바랄게요! 어떤가요, 도움이 되었나요?

보호자: 강아지가 불안해할 때 어떤 교육을 시도해 볼 수 있을까요?

강형욱 AI: 두현님, 아지가 불안해하는 상황에서 집에서 시도해볼 수 있는 몇 가지 방법이 있어요. 우선, 아지가 불안해할 때는 천천히 익숙해지도록 도와주는 것이 중요해요. 너무 갑자기 많은 자극을 받으면 역효과가 날 수도 있거든요. 예를 들어 새로운 장소에 갈 때는 조금씩 경험하게 하고, 긍정적인 기억을 많이 만들어주는 것이 좋아요.

또한, 문밖에서 나는 소음에 민감할 때는 탈감작 교육이라는 게 도움이 될 수 있어요. 아지가 문밖 소음에 반응하지 않도록 천천히 훈련하는 거죠. 처음에는 아지가 편안해하는 사람과 함께 방 가운데에서 시작해보세요. 그 사람이 먼 곳에서 살짝 소음을 내고, 아지가 편안함을 느끼도록 하면서 점점 크게 해보는 거예요. 이 과정에서 아지가 좋아하는 간식이나 칭찬을 통해 긍정적인 강화를 주면 훨씬 좋답니다!

자, 이렇게 아지가 천천히 새로운 상황에 익숙해질 수 있도록 도와주시고, 아지의 행동을 따뜻하게 격려해 주세요. 모두 잘 될 거니까 너무 걱정하지 마세요! 혹시 다른 궁금한 점이 있으면 언제든지 말씀해 주세요.

보호자: 강아지가 자주 물건을 물거나 지나친 관심을 보이는데 어떻게 할까요?

강형욱 AI: 두현님, 아지가 물건을 물거나 지나치게 관심을 보이는 행동은 여러 원인이 있을 수 있어요. 아지가 관심을 끌고 싶어하는 것일 수도 있고, 스트레스를 해소하기 위해 그럴 수도 있죠. 이럴 땐, 아지에게 충분한 운동과 놀이를 제공해 주는 게 중요해요. 아지에게 풍부한 육체적, 정신적 자극을 주는 걸 목표로 해보세요.

공이나 원반을 주워오기 하는 놀이를 하거나, 사료를 간식공이나 사료 넣는 공에 넣어서 주는 방법도 좋은 방법이에요. 이것은 아지에게 단순한 먹는 것 이상의 재미와 만족을 줄 수 있어요.

만약 아지가 물건을 물때 관심을 주는 것이 스트레스로 인한 것이면, 너무 과도한 반응을 피하고, 규칙적으로 놀이 시간과 운동량을 증가시켜서 에너지를 긍정적으로 해소하도록 도와주세요. 언제나 긍정적이고 따뜻한 방법으로 아지를 격려해주면 좋을 것 같아요. 어떤가요, 도움이 좀 되셨나요?

보호자: 장난감 추천해주세요!

강형욱 AI: 두현님, 아지에게 딱 맞는 장난감을 추천해드릴게요! 아지가 골든 리트리버이고 활동적이라는 점을 고려하면, 여러 가지 장난감 중에 다양한 선택지가 있어요.

실내에서 사용할 수 있는 부드러운 플러시천으로 만들어진 장난감들은 사람이나 가구에 상처를 입힐 염려가 적어 안전해요. 특히, 줄이나 로프에 깃털이 달린 장난감은 집에서도 재미있게 놀 수 있을 거예요. 보호자와 함께 상호작용이 가능한 놀이를 하기에 딱이죠.

또한, 콩(Kong)이나 퍼즐 토이 같은 장난감은 아지가 간식을 찾아내는 재미를 즐기게 하면서도 머리를 쓰게 만들어 줘요. 극심한 스트레스를 해소할 수 있도록 도와주기도 하고요.

식사를 더 흥미롭게 만들어 주고 싶다면 food ball 같은 사료 퍼즐을 사용해서 사료 먹는 시간을 더 재미있게 해주는 것도 좋은 방법이에요. 이렇게 하면 아지는 더 건강하게, 더 즐겁게 지낼 수 있을 거예요. 어떤가요? 도움이 되셨나요?


3-3 Script 2

강형욱 AI: 안녕하세요, 두현 씨! 반갑습니다. 저는 강아지 훈련사로 활동하고 있는 강형욱입니다. 아지와의 시간은 잘 보내고 계신가요? 아지는 정말 사랑스러운 골든 리트리버죠! 아지의 성격이 사람도 좋아하고, 특히 아이들과 잘 어울린다니 너무너무너무 좋아요!

아지와 함께하는 일이 점점 더 즐거워질 수 있도록 제가 도움을 드릴게요. 언제든지 궁금한 거 있으시면 물어보세요!

보호자: 강아지의 사회화 교육을 시작할 때, 몇 살부터 시작하는 것이 좋을까요?

강형욱 AI: 아, 두현 씨! 강아지의 사회화 교육은 아주 중요하죠. 사회화기는 보통 3주령부터 14주령까지의 시기예요. 이때가 강아지에게 있어 다양한 환경 자극에 적응하고, 사람이나 다른 동물과 유대감을 형성하는 중요한 시기거든요. 그래서 이 시기에 다양한 경험을 할 수 있도록 도와주시는 게 좋아요. 하지만, 강조되고 반복되는 소리는 강아지를 불안하게 만들 수 있으니, 부드럽고 차분하게 접근하는 게 좋겠죠. 아지라면 워낙 사람을 좋아하고 아이들과도 잘 어울리니, 사회화 교육도 금방 적응할 수 있을 거예요. 하하, 어떠세요? 도움이 되었나요?

보호자: 어떤 방법으로 사회화를 진행하는 것이 효과적일까요?

강형욱 AI: 자, 두현 씨! 효과적인 사회화를 위해선 몇 가지 방법이 있어요. 첫째, 아지가 어릴 때부터 다른 개들과 상호작용할 기회를 많이 주는 게 중요해요. 어미나 형제와 함께 보내며 소통 기술을 배우는 게 기본이죠. 아쉽게도 이 시기를 놓쳤다면, 천천히 다른 개와의 만남을 통해 친숙해질 수 있도록 해야 해요.

또 사람이나 다른 동물과의 사회화도 필요해요. 아지가 다양한 사람들을 만나고, 다른 종류의 동물과도 안전하게 만날 수 있는 기회를 제공하는 게 좋습니다. 마지막으로, 다양한 환경 자극에 노출시키는 것도 필수적이에요. 새로운 소리나 풍경, 냄새 등을 경험하게 하면서 아지가 자연스럽게 적응하도록 돕는 거죠.

강아지에게는 이렇게 다양한 경험을 통해 세상을 긍정적으로 받아들이도록 도와주는 게 가장 중요해요. 그렇게 하면 아지도 다양한 상황에서 자신감 있게 행동할 수 있을 거예요. 너무 무리하지 않고, 차분하게 진행하시면 됩니다. 걱정하지 마세요, 두현 씨! 아지는 충분히 잘할 수 있을 거예요. 하하, 도움이 되셨나요?

보호자: 새로 입양한 강아지가 집에 적응하는데 어떻게 도와주면 좋을까요?

강형욱 AI: 아, 두현 씨! 새로 입양한 강아지가 집에 적응하는 데 도움이 필요하시군요. 강아지가 새로운 환경에 적응하는 건 꽤 중요한 일이죠. 자, 어떻게 도와줄 수 있는지 말씀드릴게요.

우선, 강아지가 새로운 공간을 탐색할 수 있도록 시간을 주세요. 살아갈 곳을 꾸물꾸물 구석구석 탐방하면서 환경에 익숙해질 시간을 주는 게 중요해요. 그동안 친숙한 물건, 예를 들어 기존에 사용하던 장난감이나 담요를 두면 안정감을 줄 수 있을 거예요.

그리고 다양한 소리와 환경에 조금씩 익숙해질 수 있도록 도와주시는 게 좋아요. 자동차 소리나 다양한 사람들의 목소리와 같은 새로운 자극을 부드럽게 경험하도록 해주세요. 너무 많은 자극을 한꺼번에 주면 오히려 불안할 수 있으니 강아지의 반응을 보며 천천히 접근해보세요.

무엇보다도, 강조되고 반복되는 소리는 강아지를 불안하게 할 수 있어요. 부드럽고 차분하게 대화하면서 강아지가 안심할 수 있도록 시간을 주세요. 그리고 강아지가 좋아하는 간식을 통해 긍정적인 경험을 만들어주세요. 아지가 특히 치킨 간식을 좋아한다고 하셨죠? 그럼 그걸 활용해 보세요!

그래도 적응이 잘 안 된다면 따뜻하게 지켜봐 주시고, 시간이 필요할 수도 있으니 천천히 기다려 주세요. 아지도 두현 씨의 따뜻한 마음을 느끼고 곧 편안하게 적응할 거예요! 궁금한 거 있으시면 언제든지 말씀해 주세요. 응원할게요!

보호자: 강아지가 문 밖에서 나는 소음에 민감해해요.

강형욱 AI: 아, 두현 씨! 아지가 문 밖에서 나는 소음 때문에 민감하게 반응하는군요. 그런 경우에는 탈감작과 역조건 부여 교육을 통해 도움이 될 수 있어요. 아지가 소음에 너무 놀라거나 불안해하지 않도록 교육을 통해 반응을 조절하는 방법이 필요합니다.

우선, 문 밖에서 나는 소음에 익숙해지도록 조금씩 노출시켜 보세요. 익숙한 사람이 문 앞에 서서 소음을 내는 훈련을 시작하면 좋아요. 아지가 반응하지 않고 차분히 있을 때는 간식을 주거나 칭찬해 주세요. 이렇게 하면 소음이 위험한 게 아니라는 걸 배우게 될 거 예요.

교육할 때는 두 사람이 필요하답니다. 한 사람은 아지와 함께 있고, 다른 한 사람은 문 밖에서 소음을 내보는 역할을 해 주세요. 아지가 소리에 익숙해지면서 안정감을 느끼도록 해보세요. 처음에는 아지가 신뢰하는 사람으로부터 시작하고, 조금씩 모르는 사람으로 확대해 나가면 되겠죠?

이 교육 과정이 조금 시간이 걸릴 수 있지만, 아지가 차츰 익숙해지면서 더 안정된 모습을 보일 거예요. 천천히 하지만 꾸준하게 시도해 보세요. 두현 씨의 따뜻한 관심과 노력 덕분에 아지가 곧 잘 적응할 수 있을 거라고 믿어요! 응원할게요!

보호자: 강아지가 불안해할 때 어떤 교육을 시도해 볼 수 있을까요?

강형욱 AI: 두현 씨, 강아지가 불안해할 때는 탈감작과 역조건 부여 교육을 시도해 볼 수 있어요. 강아지가 특정 상황에서 불안해하는 경우, 예를 들어 문밖 소음 같은 데에는 천천히 그 상황에 노출시켜 익숙해지게 하는 방법이 효과적일 수 있죠.

탈감작 교육은 강아지를 조금씩 불안 요소에 노출시켜 불안도가 낮을 때 반응하지 않도록 돕는 거예요. 그리고 불안을 잘 참았을 때는 보상을 주어 긍정적인 경험으로 연결 짓는 거죠. 예를 들어, 무서울 때마다 아지가 좋아하는 치킨 간식을 주며 조금씩 소리에 익숙 해지게 하면 어떨까요?

혹시 더 도움이 필요하시거나 궁금한 점이 있으시면 언제든지 말씀해 주세요. 두현 씨와 아지 둘 다 잘 할 수 있을 거예요! 응원합니다!

보호자: 강아지가 자주 물건을 물거나 지나친 관심을 보이는데 어떻게 할까요?

강형욱 AI: 아, 두현 씨! 아지가 자주 물건을 물거나 지나친 관심을 보이는군요. 강아지가 이런 행동을 보이는 건 여러 이유가 있을 수 있는데요, 보통 놀이를 하고 싶거나, 주목을 받고 싶어서일 때가 많아요. 먼저 아지가 스트레스나 불안해서 그런 행동을 하는 것이 아닌지 살펴보는 게 중요해요. 불안하기 때문에 관심을 끌려고 하는 경우라면 상황이 조금 다르니까요.

놀이로 이런 행동을 줄이는 것도 좋은 방법이에요! 아지와 함께 공 던지기, 줄 당기기 같은 활발한 놀이를 통해 에너지를 소모시켜 주세요. 그리고 건사료나 간식을 쉽게 얻지 못하도록 장난감이나 퍼즐에 넣어 주면, 아지가 집중하며 흥미를 갖게 되고 지루함도 덜 느끼게 될 거예요.

무엇보다도 중요한 건 아지가 관심을 받으려고 하는 행동을 보일 때 무시하는 거에요. 보호자가 불안을 보상하면 오히려 행동이 악화될 수 있거든요. 그러니까 아지가 조용해지면 보상으로 간식을 주거나 칭찬해 주는 게 좋아요. 이렇게 하면 아지가 조금씩 긍정적으로 변하게 될 겁니다. 도움이 될 거라 믿어요! 응원할게요!

보호자: 장난감 추천해주세요!

강형욱 AI: 두현 씨, 아지에게 추천할 수 있는 장난감을 살펴볼까요? 아지가 물건을 물고 노는 걸 좋아하면 물 수 있는 장난감은 기본적으로 좋습니다. 이런 장난감에는 보통 고무 장난감이나 로프 장난감이 많이 사용됩니다. 특히, 건사료나 간식을 숨겨서 찾도록 하는 장난감, 예를 들어 푸드볼이나 퍼즐 토이는 아지가 시간을 보내면서 지루함을 덜 느끼게 해줄 수 있어요. 아지가 좋아하는 치킨 간식도 이런 장난감에 넣어줄 수 있다면 금상첨화겠죠?

그리고 집안에서 함께 놀 때는 큰 공이나 줄 당기기를 위한 로프 장난감도 좋습니다. 특히 줄 당기기 놀이용 로프는 강아지의 잇몸 마사지에도 도움이 되니까 다방면으로 좋을 수 있답니다. 중요한 건 아지가 놀지 않는 장난감과 사람의 물건을 잘 구분해주시는 거예요. 그래야 아지가 혼란스러워하지 않거든요.

자, 이제 아지와 함께 즐거운 놀이 시간을 가지실 수 있을 거예요! 혹시 더 궁금한 점이 있으시면 언제든지 물어보세요!

3-4 문맥에 없는 질문

보호자: 현재 삼성전자의 주가가 얼마에요?

강형욱 AI: 음... 두현님, 제가 주식 관련 정보는 제공해 드리기 어려워요. 아지와 함께 즐거운 시간을 보내는 데 집중하는 게 어떨까요? 아지가 좋아하는 산책을 가거나, 특별한 간식을 준비하는 것도 좋겠네요! 아지는 특히 치킨 간식을 좋아한다고 했으니, 좋아하는 간식도 같이 주시면 정말 좋아할 것 같네요. 언제든지 반려견에 관한 다른 궁금한 점이 있다면 말씀해 주세요!


보호자: 현재 삼성전자의 주가가 얼마에요?

강형욱 AI: 이런 주식 정보는 잘 모르겠어요, 두현님. 혹시 다른 궁금한 점 있으시면 언제든지 말씀해 주세요! 아지에 관한 이야기나 훈련에 대한 질문이 있다면 제가 도와드릴 수 있을 것 같아요!

IV. 개선 방안

  • 더 정확한 말투 적용을 위한 Fine-tuning 활용
  • 더 많은 학습/검색 데이터 수집
  • 정밀한 다단계의 전처리 과정
  • ConversationSummaryMemory 같은 다른 메모리 형태 적용
  • 다른 Retriever 사용
  • 다양한 프롬프트 시도
  • Parameter 값 바꿔보며 실험

이외에도, 더 많은 개선 여지가 남아있을 것 같다.

V. 참고자료

  1. 최갑철. (2016). 행동학 연재 1편: 사회화 교육에 대하여. WITH CAP(COMPANION ANIMAL PRACTICE), 14(4), 30-36.
  2. 최갑철. (2016). 행동학 연재 2편: 개에서 필요한 기본 요구(Needs). WITH CAP(COMPANION ANIMAL PRACTICE), 14(5), 36-42.
  3. 최갑철. (2016). 행동학 연재 3편 반려견 교육하기_서울시수의사회반려동물행동학연구회. WITH CAP(COMPANION ANIMAL PRACTICE), 14(6), 40-48.
  4. 최갑철. (2017). 행동학 연재 4편 개, 고양이와 놀이하는 방법_서울시수의사회반려동물행동학연구회. WITH CAP(COMPANION ANIMAL PRACTICE), 15(1), 40-49.
  5. 최갑철. (2017). 행동학 연재 5편 장난감 선택법. WITH CAP(COMPANION ANIMAL PRACTICE), 15(2), 34-41.
  6. 최갑철. (2017). 행동학 연재 6편 : 반려동물을 키우고 있는데 새로 입양한 반려동물 소개하기. WITH CAP(COMPANION ANIMAL PRACTICE), 15(3), 44-54.
  7. 최갑철. (2017). 행동학 연재 7편: 문밖 소음에 대한 탈감작 및 역조건 부여 교육법. WITH CAP(COMPANION ANIMAL PRACTICE), 15(4), 44-50.
  8. 최갑철. (2017). 행동학 연재 8편: 일반적인 불안 장애의 이해와 치료. WITH CAP(COMPANION ANIMAL PRACTICE), 15(5), 50-54.
  9. 최갑철. (2017). 행동학 연재 9편 : 두려움 공격성의 이해와 치료 프로토콜. WITH CAP(COMPANION ANIMAL PRACTICE), 15(6), 48-54.
  10. 최갑철. (2018). 행동학 연재 10편 : 관심요구행동의 예방과 치료 방법. WITH CAP(COMPANION ANIMAL PRACTICE), 16(1), 44-52.
  11. 권순찬, 이동희 and 장백철. (2024). 대규모 언어 모델을 사용한 제로샷 한국어 감성 분석: 사전 학습된 언어 모델과의 비교. 한국컴퓨터정보학회논문지, 29(2), 43-50.
  12. 한국어 존댓말 반말 분류기, 오종민님의 Github
  13. YouTube Transcript API 문서
  14. https://www.gpters.org/chatbot/post/create-gpts-speak-like-Sogvog4DwGSWki3
  15. 강형욱의 보듬TV
  16. <랭체인LangChain 노트> - LangChain 한국어 튜토리얼🇰🇷
profile
HYU ERICA 23 ICT융합학부 미디어테크놀로지전공 김두현

0개의 댓글