휴리봇 이야기 #2: AI가 사람처럼 말하게 만드는 5가지 프롬프트
저번 아티클에서는 실무에서 AI를 실제로 잘 활용하기 위해 필요한 것들을 소개해 드렸어요. 이번 글에서는 사용자 처럼 말하는 휴리봇을 만들며 얻은 AI 프롬프팅 팁을 공유해보려 해요.
여러분은 프롬프트 엔지니어링 경험이 있으신가요?
봇을 만들기 위한 프롬프팅은 쉽게 말해 페르소나를 만드는 과정이라고 생각하시면 돼요. ‘너는 OOO한 역할이고, OO상황에서 OO라고 이야기하고…’ 이런 식으로 내가 원하는 상을 AI에게 주입 시키는 거죠. *프롬프트(prompt)란? 생성형 AI에 특정 작업을 수행하도록 지시하는 자연어 텍스트로, 고품질의 아웃풋을 생성하기 위해 프롬프트를 최적화하는 프로세스를 ‘프롬프트 엔지니어링’이라고 함
한 번이라도 프롬프팅을 시도해 보셨다면, 어디서부터 시작해야 할지 막막했던 경험이 있으실 거예요. AI가 하는 답변이 너무 당연하거나 추상적일 때도 있어서 진짜 똑똑한 게 맞는지 의심이 들 때도 있었을 것 같고요.
효율적으로 프롬프팅을 하기 위해서는 우선 AI를 이해하는 것이 중요해요. AI는 어떻게 질문하는지에 따라 천차만별의 결과를 뱉는데, AI를 잘 이해하고 있어야 그들이 잘 이해할 수 있는 질문을 던질 수 있어요.
저 역시도 휴리봇을 만들기 전까지는 챗GPT도 거의 써본 적이 없을 정도로 AI와는 거리가 먼 사람이었는데요. 그런 저의 입장에서, 휴리봇처럼 ‘사람처럼 말하는 봇’을 만들고 싶으신 분이라면 쉽게 이해하실 수 있게 설명해 드릴게요.
내가 해결하고자 하는 문제, AI로 해결하기에 적합할까?
프롬프팅을 시작하기 전, 지금 해결하고자 하는 문제가 AI로 해결하기에 적합한 문제인지부터 생각해 봐야 해요. AI에 학습시킬 수 있는 데이터가 아주 방대하고 정확한 경우가 아니라면 AI는 정해진 답변보다는 창의성 있는 답변이 필요한 경우에 더 적합할 수 있어요.
가장 큰 이유는 생성형 AI에서는 종종 발생하는 할루시네이션 현상 때문인데요, 정확한 정보를 기반으로 답변을 줘야 하는 봇을 만드는 상황에서는 거짓된 정보를 주는 이 현상이 치명적일 수 있어요. *할루시네이션(Hallucination)이란? AI 환각 현상. 생성형 AI가 실제로 존재하지 않거나 사실이 아닌 정보를 사실인 것처럼 말하는 현상
실제로 팀 내에서 채널에 오는 반복 문의에 대응하는 데에 많은 리소스가 드는 문제가 있었고, 이 문의에 대신 답변해 주는 CS 봇을 만들었던 경험이 있어요. 오랜 시간 많은 데이터를 학습시켰지만, 가끔 뜬금없는 소리를 하거나 틀린 답변을 그럴싸하게 하기도 해서 문의하시는 분들에게 혼란을 주는 문제가 있었고, 잘못된 답변을 정정하느라 오히려 더 많은 리소스가 들게 되어 결국 없애게 되었어요. 혹시 여러분도 위와 같은 형태의 문제를 고민 중이시라면, AI가 아닌 다른 해결책을 더 고민해 보시는 것도 추천해 드려요.
사람처럼 말하는 봇 프롬프트 쓰는 팁
1. 규칙이나 예시 답변보다는 명확한 역할과 상황 부여하기
휴리봇처럼 자유도가 높은 답변을 주는 봇의 경우엔 예시 답변을 학습시키기 보다는 명확한 역할과 상황을 부여하는 것이 더 효과적이에요. 휴리봇의 역할은 토스 화면을 보고 실제 사용자 같은 피드백을 주는 것이에요. 사용자는 사람이고, 사람의 말에는 정답이 없죠. 그렇기 때문에 토스 사용자 특성을 일반화하는 것도 어려울 뿐더러 그것을 봇에게 학습시키는 것은 매우 위험하고, 오히려 봇의 창의성을 가두는 일이에요.
대신에 휴리봇에게 상황과 역할을 알려줬어요. 일반화된 규칙과 예시 답변만 학습시켰다면 그것에 갇혀서 답변하기 쉬운데, 상황과 역할을 알려줬더니 휴리는 그 역할에 몰입하여 그 상황에서 할 법한 자연스러운 답변을 해줬어요.
신기한 점은 아래 실제 휴리 사용 사례들 처럼 실제 사람이 할 법한 사고를 하고 답변하는 부분이었어요.
2. 사람처럼 말하게 하기
AI 봇을 실제 사람처럼 말하게 하는 방법은 아주 간단해요. 말 그대로 ‘실제 만나서 대화하는 것처럼 사람처럼 자연스럽게 말해달라’는 문장을 추가하는거죠. 이 문장을 추가했더니 휴리는 ‘음’,’아’ 등의 추임새를 쓰기도 하며 매우 자연스러운 구어체로 답변을 해줬어요.
3. Don’t보다 Do에 집중하기
봇이 하지 말아야 할 일들보다는 해야 할 일을 지시하는 것이 더 효과적이에요. 똑같은 의미의 문장일지라도 AI는 부정어보다 긍정어를 사용하여 명령했을 때 더 직관적으로 그 뜻을 이해하고 답변해 줘요.
적절한 비유일지는 모르겠지만, 사람에게 ‘지금부터 고양이를 생각하지 말고, 호랑이만 생각해’라고 하면 고양이가 자꾸 연상되지만 ‘지금부터 호랑이를 생각해’라고 하면 바로 호랑이가 그려지는 것과 비슷한 느낌인 거죠.
4.OCR 기능 활용하기
이미지에 있는 텍스트를 인식하고 그것을 기반으로 답변해야 하는 봇이라면 외부 OCR 기능을 활용해 볼 수도 있어요. *OCR(Optical Character Recognition:광학 문자 인식)이란? 스캔한 이미지나 사진에서 문자를 인식하여 컴퓨터에서 사용 가능한 텍스트로 변환하는 기술 휴리봇의 작동 구조는 아래와 같은데요, (2)첨부한 이미지를 기반으로 (3)질문에 대한 답변을 줘야하기 때문에 이미지를 인식하는 기능은 필수적이에요.
그런데 당시 사용했던 AI 모델에는 이미지에 있는 글자를 정확하게 인식하는 기능이 내장되어 있지 않기 때문에 글자를 인지하는 정확성이 떨어졌어요. ‘캐시백 한도 없는’을 ‘거절할 이유가 없는’으로 읽고 엉뚱한 답변을 하기도 하고, ‘점수’를 ‘전화’로 읽고 무슨 말인지 잘 이해가 안 된다는 답변도 했어요. (현재 모델에서는 약간 개선되었으나, 휴리봇 제작 초기 당시엔 정확도가 매우 떨어졌어요.) 이는 휴리봇의 답변 퀄리티와 제품 자체의 신뢰를 떨어트리는 가장 큰 원인이었죠.
이를 해결하기 위해 외부 OCR 솔루션을 가져와 활용했어요. 휴리봇과 대화를 시작하기 전 이미지를 첨부하면 OCR로 이를 보냈고, 이미지 내에 있는 텍스트를 모두 인식하여 휴리에게 모든 글자 알려준 후에 대화를 시작하는 방식으로 변경했어요. 그리고 프롬프트 마지막에는 이런 문장을 추가했어요. ‘본격적으로 인터뷰를 시작하기 전에 모바일 또는 PC 화면 이미지와 그 이미지에 표시된 모든 텍스트를 제공할 거야’
5. 문자 덜 꼼꼼하게 읽게 하기
OCR 기능을 활용하니 휴리가 엉뚱한 단어나 문장을 말하는 문제는 해결되었지만, 너무 똑똑한 답변을 하는 문제가 생겼어요. 실제 사용자를 대상으로 UT 해보면, 어떤 서비스인지에 따라 다르지만 대부분의 사용자가 이용약관 등 모바일 화면 내에 있는 아주 작은 텍스트까지 하나도 빠짐없이 꼼꼼히 읽지 않는 편이에요. 저도 마찬가지고요. 반면에 휴리는 화면에 있는 모든 텍스트를 다 읽고 이를 기반으로 질문에 답하기 때문에 너무 화면을 잘 이해하는 답변을 줬어요. 그래서 모바일 환경에서 사용자의 특성을 알려주며 사람처럼 보고 생각하게 했어요. OCR기능을 통해 글자를 정확하게는 인지하되, 정밀하게 읽지는 않도록 모바일 텍스트 인지 레벨을 의도적으로 낮춘 거죠.
그 외 소소 팁들
AI와 프롬프트 같이 짜기 저는 프롬프트 테스트를 많이 하면서 AI에게 프롬프트를 직접 수정해달라는 요청도 종종 했어요. 틀린 답변을 했을 때는 왜 방금 그렇게 답변했는지 물어보고, 앞으로 그 점을 유의해서 답변하려면 처음에 입력했던 프롬프트를 어떤 식으로 수정하면 좋을지 생각해서 수정해달라고 했어요. 테스트를 한참하고 나서 지금까지 했던 답변들이 실제 사용자와 몇 퍼센트 정도 비슷하다고 생각하는지, 어떤 점이 미흡했는지 물어보고, 그 부분을 개선해서 다시 제안해달라 하기도 하고요.
테스트용 데이터 세트 준비하기 휴리봇 프롬프트 엔지니어링 작업을 할 때, 테스트용 토스앱 화면 이미지와 질문 셋을 10~20가지 정도 준비했어요. 프롬프트를 수정할 때마다 똑같은 질문을 하고, 답변이 유의미하게 개선되었는지 비교하며 수정해 나갔어요. 여러분도 비교할 수 있는 테스트용 데이터를 준비하시면 프롬프트가 실제로 개선되었는지 파악하기 좀 더 편리하실 거예요.
적용해보기
지금까지 사람처럼 이야기 하는 ‘휴리봇’을 만들면서 얻은 몇 가지 프롬프팅 팁들을 이야기해봤는데요. 혹시 여러분도 휴리봇 같은 AI봇을 고민 중이라면, 알려드린 팁을 활용해서 프롬프트 엔지니어링에 도전해보세요.