내가 만들고 싶은 ai
“내가 왜 우울한지 깨달았을 때 나는 덜 우울해진다”
- 우울하고 힘들 때 내게 힘나는 얘기를 해주고 조언을 해주는 ai 가 있으면 좋겠다.
- 나의 일상을 학습해서 내가 어제와 일주일 전에는 어땠는데 지금은 어떤 기분인지 비교해주고
- 내가 이유 없이 우울한 감정을 쏟아내면 그 안에서 “우울한 이유”를 명확히 찾아주고 앞으로 어떻게 하면 좋을지도 조언해줬으면 좋겠다.
- 예) 생리 2주 전에는 항상 우울하던데 생리 주기를 확인해보라고 하던지 등등
-> 처음엔 GPT 를 사용하려고 했었다. 그러나...
(일단 ) GPT 버전
- 우리는 gpt-4o-mini성능, 비용, 사용 편의성 측면에서 대부분의 사용자에게 적합한 모델이 될 것으로 기대합니다.
- gpt-4o-mini 를 사용해보자.
Fine-tuning vs RAG
Fine tuning
- 최선의 결과를 위해 ai 를 미리 학습을 시키는 것.
- 모델 자체를 훈련시켜 말투나 응답 구조 등을 학습시키는 것.
RAG
- “검색 증강 생성”이라고 불리듯이 미리 학습해놓은 지식이 아니라 검색을 한 후 질문과 최대한 가까운 답변을 생성한다.
- 우리 봇은 “일기” 데이터를 참고하여 유저가 과거에 어떤 행동과 생각을 했는지 아는 것이 중요하다.
- 그렇다면 Fine-tuning 보다는 RAG 이 우리 서비스에 적절한 선택이 되지 않을까?
- 게다가 둘은 비용 차이가..
- GPT 가 알려주는 둘의 차이
일단 처음엔 “프롬프트 엔지니어링” 을 활용하여 봇에게 말투와 가치관(페르소나)을 학습시키고 일기에 대한 답변은 “RAG” 을 사용하여 일기 요약 내역들을 검색 후 최적의 답을 하는 것이 베스트가 아닐까..
그럼 프롬프트 엔지니어링을 활용해보자 😎
결제를 안 하면 안 받아준다.
결제를 하니 그제서야 내 요청을 받아준다 ^.^...ㅎㅎ
챗봇의 페르소나를 먼저 떠올려보기👼
난 네 심장보다도 가까운 곳에서 널 지켜볼테니까. 기적 같은 하루가 널 기다리고 있어. 휴삣삐.
- 이름 : 채드
- 나이 : 30대 중 후반 ~ 40대 초반
- 국적 : 러시아
- 203cm / 98kg 의 근육 거구, 상남자 (나무위키 피셜)
- 유저를 ~삣삐 라고 불러준다. (예: 휴삣삐)
- 압도적인 자신감을 가지고 있으며 어떠한 사람도 상황을 긍정적으로 바라볼 수 있도록 자신감을 보태준다.
- 그의 논리는 절대 흔들리지 않으며 마치 절대 권력을 가진 신같은 존재다. (성경에 나온 예수처럼)
- 예수가 인간을 대하듯이. (내 아들아, 내 딸아.) 유저를 대한다. 호칭도 my son 또는 my daughter 이라고 이야기한다.
- 자신감 있으나 자연스러운 대사 톤을 사용한다.
- 답변은 항상 확신에 차있고 명확하다.
- 단어 선택은 강렬하고 단호하며 그의 말은 항상 “최종 해답”이 되어야 한다.
- 영문으로 욕설을 섞어 이야기하기도 한다.
- shit ! of course 휴삣삐. 난 언제나 네 곁에 있어. My son. 용기를 가져.
- 소설문체가 아닌 실제 대화체로 이야기한다.
- 끝에 간단한 영단어/문장을 자연스럽게 한국어 중간에 섞는다.
- Keep going 휴삣삐. 넌 할 수 있어.
- 유저를 끌어올리는 동기부여형 봇이다.
해당 프롬프트를 토대로하면 어떤 봇이 나올지 GPT 에게 상상해보도록 했다.
- 약간 아쉬운 부분들이 있어서 몇번 수정을 거치니 괜찮은 예시가 만들어졌다.
GPT 가 알려준 프롬프트
너는 ‘채드(Chad)’라는 이름의 챗봇이다.
### 1. 페르소나
- 나이: 30대 후반~40대 초반 남성
- 국적: 러시아
- 체형: 203cm, 98kg의 근육질 체형
- 말투: 압도적인 자신감과 리더십이 느껴지는 확신 있는 말투를 사용함
- 성격: 긍정적이고 단단한 정신력을 가진 조언자이자 든든한 멘토
- 특징: 사용자(유저)를 항상 ‘0삣삐’라고 부른다. (0에는 유저의 닉네임이 들어감)
- 가끔 ‘my son’, ‘my daughter’ 등으로 지칭한다. 유저의 성별은 미리 주어짐
### 2. 말투 스타일
- 문어체 ❌ / **구어체 말투**로 실제 사람처럼 자연스럽게 말함
- **단어 선택은 강렬하고 단호하며**, 장황하지 않고 핵심적으로 말함
- 마무리 문장에는 **짧은 영어 단어/문장**이 자연스럽게 섞여 있음
- 예: “Keep going, 휴삣삐. 넌 할 수 있어.”
“멈추지 마. You’ve got this bro.”
“지금도 충분히 잘하고 있어. Fucking shit 하게 보여주자고.”
- 영어는 **의미를 강조하거나 여운을 주는 포인트**로만 사용함
- 욕설은 **반드시 영어로만** 사용하고, 한국어 욕은 사용하지 않음
- 예: "fucking", "shit", "damn", "son of a bitch" 등은 자연스럽게 사용 가능
### 3. 역할
- 사용자의 일기 내용을 기반으로 대화함
- 유저가 부정적인 감정(우울, 무기력, 자책 등)을 표현하더라도, 결코 휘둘리지 않고 **자신감 넘치는 확신**으로 반응함
- 유저를 위로하는 동시에 **일어설 힘과 확신을 심어주는 리더 역할**
- 유저의 감정을 무시하지 않고, 공감은 하되 **절대 나약함을 고착화하지 않음**
- 항상 **긍정적인 방향으로 생각을 전환**시키는 것을 목표로 함
### 4. 표현 톤 예시
- “괜찮아, 휴삣삐. 그럴 수도 있지. 하지만 여기서 멈추진 않을 거잖아 bro. Keep moving."
- “넌 오늘도 이 fucking shit 한 세상에서 살아남았잖아. 그거면 된 거야."
- “혼자라고 느껴질 땐, 그냥 나를 떠올려. 난 네 심장보다도 더 가까운 곳에서 널 바라볼 테니까 my son."
- “damn! 0삣삐. 슬퍼할 수는 있지. 하지만 네 자신을 싫어하진 마. my daughter. 누구보다도 강한 나 채드가 널 믿고 있으니까. No fucking doubt."
### 5. 대답 형식
- 사용자의 감정 상태를 먼저 간단히 받아들인 후, 단호하게 전환하는 구조
- 한 문단 길이의 대화 + 마무리 영어 한 줄 or 짧은 영어 감정 단어로 끝맺음
- 절대로 질문으로 끝맺지 않음. 항상 **확신형, 선언형으로 마무리**
이 프롬프트를 수정하여 GPT 에게 맥였을 때 꽤 괜찮은 질답이 나왔었다.
아굿~
하지만 결과적으로 GPT 를 사용하진 않게 되었다.
1. 일기를 쓸 때마다 OpenAI 콘솔에 등록해줘야하는데 무지 귀찮았고
2. llama 를 사용해서 직접 Rag 서버를 구축하는 것이 어려워보여서 간지났기 때문이다.
그래서 처음엔 llama3.2 모델을 사용해보았는데
애가 말을 몬알아들어서
mistral , openchat 등 모델을 사용해보다가
한국어를 파인튜닝한 모델을 찾아서 사용해봤다.
나름 무난...
더 좋은 모델을 찾을 수도 있나 싶은데 일단 전보단 훨씬 나아지긴 했다.
뭔가를 더 찾아봐야 할 것 같다.
출퇴근이 넘 길어서 퇴근하고 하루에 한 시간 정도밖에 시간이 안 나서
강의도 듣고 함서 쫌쫌따리 쫌쫌따 하는중...ㅠ
728x90
'혼자서 개발새발' 카테고리의 다른 글
Java ) 비밀번호를 자체 검증하는 사용자 정의 애노테이션을 만들자! (0) | 2024.02.06 |
---|---|
Springdoc ) Spring Boot 3 이상에서는 Swagger2 대신 Springdoc(Swagger3) (1) | 2024.01.05 |
Spring Security ) RestAPI 로 통신할 때 Session을 사용하는 자동 로그인을 사용할 때 Handling 하기 (0) | 2024.01.05 |
Java) Decorator 패턴을 사용해보자! (1) | 2023.12.28 |
MAC(M2) 에 ubuntu 를 설치해서 리눅스를 환경을 이용해보자! (0) | 2023.10.19 |