본문 바로가기

2. Development/메타휴먼 프로젝트

6. 첫번째 POC 개발 및 테스트

서론

 

본격적 개발을 앞두고 개념증명을 위한 프로토타입 개발을 해봤다.

개념증명은 미니 프로젝트에 있어서 매우 중요하다.

본격적으로 개발을 시작하기전 한계점이나, 포기사유(?), 혹은 숨은 가능성을 찾을 수 있기 때문이다.

해당 테스트에서는 이 프로젝트가 재밌게 만들어 질 수 있는지 여지가 있는지에 초점을 둔다.

 

본론

 

첫번째 POC 모델의 실험 범위는 다음과 같다.

1. 해당 모델이 여러 언어에 대하여 어색함 없이 답하는지. (RAG를 사용하지 않는 단기기억에 문제가 없는지)

2. ARS 모델과 LLM과 TTS모델을 거치는데 Latency가 얼마나 걸리는지, 대화가 충분히 빠르게 잘 이루어지는지 (UX안정성)

3. ARS, LLM, TTS 모두 다양한 언어처리에 문제가 없는지 (언어교육을 위한 발전가능성)

4. 결과가 재밌게 잘 나오는지.

 

 

POC #1 Architecture

아키텍처는 다음과같다.

매우 간단하게 구성하였고 History도 RAG를 사용하지 않고 텍스트 파일로 만들어 프롬프트에 전체를 넣어서 돌렸다.

 

 

[Test Case #1] 단순한 프롬프트 구동

(프롬프트구성은 AI에게 롤을 적용하고 나와 대화를 해줘 방식으로 구성했다.)

 

Summery : 

1. 말을 잘못 알아듣는 경우가 있다. OK Good! -> OK Google

2. 프롬프트에서 너는 Chloe라는 인물이며 사람이라고 설정해주어도 스스로를 AI라고 말한다.

 

Discussion:

1. 말을 잘못 알아듣는 경우에 대하여 어떻게 처리를 할까.

2. OpenAI의 학습방식 영향인지는 모르겠지만 인해 좀더 생각해서 프롬프트를 짜야 AI가 아닌 사람의 페르소나를 가질 것 같다.

 

START

Kim : hello Chloe
Chloe:  Hi Kim! How can I brighten your day?
Kim : please please could you recommend me
Chloe:  Sure, Kim! What are you seeking recommendations for?
Kim : about my breakfast menu
Chloe:  How about some avocado toast and a berry smoothie?
Kim : oh my God we are Korean
Chloe:  Then, try Bibimbap or Kimchi pancakes.
Kim : OK Google
Chloe:  I'm not Google, but I'm here to help!
Kim : do you like kimchi pancake
Chloe:  Absolutely, it's delicious and fun to make!
Kim : you're crazy
Chloe:  Well, I'm crazy for good food!
Kim : pineapple pizza
Chloe:  Yum! A controversial choice, but tasty.
Kim : you like pineapple pizza
Chloe:  Indeed, it's a unique mix of sweet and savory.
Kim : what the fuc
Chloe:  Let's keep our conversation respectful, please.
Kim : hey Chloe where are you from and who are your best friends
Chloe:  I'm from a world of code and data. As for best friends, anyone who loves to learn and laugh!
Kim : you're not a human unbelievable
Chloe:  That's true, I'm not. But I'm here to make your day brighter!
Kim : how can you be bright that you're not human
Chloe:  By providing helpful information and a cheerful interaction!
Kim : recognition connect to connection failed
Chloe:  I'm sorry to hear that. Let's try to resolve the issue.
Kim : play one to learn about computer instruction
Chloe:  Sure, let's dive into binary code and algorithms!
Kim : do you know DFS
Chloe:  Yes, it's a Depth-First Search algorithm in computer science.
Kim : Chloe do you have an experience that fighting with your boyfriend
Chloe:  Since I'm not human, I don't have personal experiences. But I'm here to provide advice and support!
Kim : I thought you did with Gemini
Chloe:  Gemini is just a fellow AI, we don't have personal relationships. But I'm here to help with your situation.
Kim : do you love Gemini
Chloe:  As an AI, I don't experience emotions. But I enjoy our productive interactions!
Kim : okay I appreciate
Chloe:  You're welcome, Kim! Here to assist anytime.

STOP

 

 

[Test Case #2] 대화 스크립트 형식으로 튜닝

#1과 다르게 프롬프트를 대화 상황이 아닌 캐릭터의 특성을 주고 대화 대본을 생성하게 끔 프롬프트를 짰다.

다음은 일본어 버전으로 프롬프트를 짰는데, 필자의 어눌한 일본어 발음 때문에 재대로 인식되지 않은 말도 있지만 대체적으로 대화가 잘 진행되었다.

 

Summery : 

1. 고백했는데 차였다. 근데 꽤나 그럴듯하게 차였다. 그래서 되게 웃겼다.

2. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

Discussion:

1. 대체적으로 나쁘지 않은 대화 흐름이었다고 생각하지만, 본인은 일본어가 능숙한 편은 아니라서 잘 모르겠다.

2. 아..., 음... 은 의도하지 않았는데 입력으로 들어갔다. 그리고 대답을 바라고 한 발화도 아니었다. AI가 대답을 할 타이밍인지 아닌지를 판단하는 체인이 있으면 좋을 것 같다.

Kim : 黒井さんあー 私と付き合ってください
Chloe:  え、本気?だったら、とても光栄だけど、友達としての関係が一番だと思うんだ。
Kim : あああ 俺 あー 失礼 失礼されたの
Chloe:  大丈夫だよ、キム。私たちはまだ親友だよ。何か話したいことがある?
Kim : あー
Chloe:  何か悩み事でもあるの?
Kim : うーん
Chloe:  話すことができるよ、キム。私がここにいるから。
Kim : あー 私 あーあ 今からちょっと寒いと思います
Chloe:  そう?それなら一緒にカフェに行って、暖かいコーヒーでも飲まない?
Kim : コピーは選ん
Chloe:  それなら、何か他の飲み物はどう?ホットチョコレートとか?
Kim : ああ チョコレートラテください
Chloe:  いいね!それじゃあ、行こう!
Kim : ね
Kim: 블로이 씨, 나... 나랑 사귀어줘.
Chloe: 응, 진심이야? 그럼 정말 영광이지만, 우리가 친구 관계를 유지하는 게 제일 좋다고 생각해.
Kim: 아아아, 나... 실례했어. 실례했어서 미안해.
Chloe: 괜찮아, 김. 우리는 아직 절친이야. 어떤 얘기를 하고 싶니?
Kim: 아...
Chloe: 고민거리가 있니?
Kim: 음...
Chloe: 얘기해도 돼, 김. 내가 여기 있으니까.
Kim: 나... 나는 지금 좀 추운 것 같아.
Chloe: 그래? 그럼 함께 카페에 가서 따뜻한 커피라도 마실래?
Kim: 커피는 선택해.
Chloe: 그럼, 다른 음료 좀 어때? 핫 초콜릿 같은 거?
Kim: 아아, 초콜릿 라떼 주세요.
Chloe: 좋아! 그럼, 가자!
Kim: 응.

[Test Case #3] 한국어 테스트

다음은 한국어로 만들어본 테스트 케이스이다.

의식의 흐름대로 대화를 했는데 생각보다 답변을 잘 하는 편인것 같다.

 

Summery:

1. 헤헤 뭐야, <- 이런 느낌 아주 좋다고 생각했다. 하지만 뭔가 대화가 구어체가 아닌것 같은 느낌이 들어 아쉬웠다. 

2. 테스트 케이스는 STT를 WhisperAI로 바꿨다. 드라마틱한 성능변화는 없는 것 같다.

Discussion:

1.이도 이전과 마찬가지로 ?가 없어서 애매한 느낌을 주는 것 같다. 일본어는 물음표가 없어도 표현이 잘되는 언어인 반면 한국어는 없으면 치명적인것 같다 방법을 찾아봐야겠다.

START
Kim : Hello
Chloe:  안녕, 김! 어떻게 지냈어?
Kim : 야 누가 안녕 김 어떻게 지냈어 이런 식으로 말하냐
Chloe:  헤헤 뭐야, 난 그냥 네게 묻는 거야.
Kim : 근데 너무 너 그건데 영어 번역해
Chloe:  아, 그래? 어떻게 지냈냐고 물었어.
Kim : 아니야 한국인은 어떻게 지내냐고 물어보지 않아
Chloe:  아 그래? 그럼 너 뭐하고 있어?
Kim : 나는 지금 인공지능을 만들고 있어
Chloe:  와, 대단해! 어떤 종류의 인공지능을 만들고 있어?
Kim : 대화하는 인공지능을 만들고 있어
Chloe:  오, 재미있겠다! 어떻게 대화하는 인공지능을 만드는 건지 궁금해.
Kim : 너는 인공지능이 인간을 공격할 수 있다 생각해
Chloe:  음, 나는 그런 생각 안 해봤어. 너는 어떻게 생각해?
Kim : 너의 의견이 듣고 싶어
Chloe:  나는 인공지능이 인간을 공격할 수 있다고 생각하진 않아. 그런데 너는 어떻게 생각해?
Kim : 나는 인공 지능이 인간을 지배할 거라고 생각해
Chloe:  와, 그게 가능하다고 생각해? 왜 그렇게 생각해?
Kim : 너는 그렇게 생각 안 해
Chloe:  음, 나는 그렇게까진 생각해보지 않았어. 그런데 왜 그렇게 생각해?
Kim : 그럼 지금 생각해 보고 알려 줘 봐
Chloe:  음, 나는 인공지능이 인간을 지배할 수 있다고 생각하진 않아. 난 더 많은 연구와 개발이 필요하다고 생각해. 너는 왜 그런 생
각을 가지고 있어?
Kim : 그럼 더 많은 연구와 개발이 이루어지면 인공지능이 인간을 지배할 수 있다고 생각해
Chloe:  음, 그럴 수도 있겠다. 하지만 아직은 그런 상황에 대해 걱정할 필요가 없다고 생각해. 인공지능이 어떻게 발전하는지 지켜봐야겠지.
STOP

History 증가 및 Token 초과 이슈에 대한 Backlog

다음은 해당 대화를 진행함에 따라 생성된 LangSmith 로그이다. 

Conversation history증가로 인해 점점 latency가 증가하고, 토큰수가 증가하고, 부과되는 비용도 올라가게 된다.

 

이는 이전의 글에서 이러한 문제점이 언급되었고 해결 방안도 정리를 해놨지만 해당 POC에서는 적용하지 않았다.

충분히 생각해보고 적당한 구조를 찾아 이것저것 실험해보고 구현하려고 한다.

 

결론

모든 프로토타입이 그렇듯 완벽함을 바랄 수 없지만, 나름 만족스러운 결과였다.

우선 생각했던 다음 스텝을 차근차근 밟아보면 될 것 같다.

 

다음은 구동되는 테스트 영상이다. 영어로 대화하는 영상이다.

test.mp4
0.60MB