AI 기반 서비스

Today
-
Total
-
← 목록으로

Life EXP LLM 평가 튜닝 - 재미있으면서 선 넘지 않기

이창연•2025년 12월 26일•Life EXP

Life EXP LLM 평가 튜닝 - 재미있으면서 선 넘지 않기

바이럴의 핵심은 "캡쳐해서 공유하고 싶은 멘트"

인생 경험치 서비스의 핵심은 점수가 아니다. LLM이 생성하는 평가 멘트가 공유 욕구를 자극해야 한다.

"AI가 내 인생 이렇게 평가함ㅋㅋㅋ" 이런 캡쳐가 SNS에 퍼져야 바이럴이 된다.

이건 기술 문제가 아니라 콘텐츠 문제다. 아무리 좋은 모델을 써도 프롬프트가 잘못되면 재미없는 결과가 나온다. 반대로 적당한 모델이라도 프롬프트가 잘 짜여져 있으면 공유하고 싶은 멘트가 나온다. 결국 프롬프트 엔지니어링이 서비스의 핵심 경쟁력이다.

프롬프트 버전별 결과 비교

v1: 너무 착한 버전

프롬프트: 이 사람의 경험을 바탕으로 인생 평가를 해주세요.
결과: "다양한 경험을 하셨군요! 앞으로도 좋은 일만 가득하길 바랍니다."

아무도 공유 안 함. 뻔한 칭찬은 재미도 없고 공감도 안 된다. 점쟁이가 "좋은 일이 올 거예요"라고 하면 누가 캡쳐하겠나.

v2: 너무 독한 버전

프롬프트: 비꼬는 말투로 냉소적으로 평가해주세요.
결과: "이혼에 파산까지... 인생 뭐 이 모양이에요?"

상처받고 다시 안 옴. 공유는커녕 브라우저를 닫는다. 독설도 재미있으려면 기술이 필요하다.

v3: 밸런스 버전 (현재)

프롬프트 핵심:
- 위트있게 비아냥하되 상처주지 않게
- 긍정적 요소는 의외의 통찰로 포장
- 부정적 요소는 "그래도 경험은 경험" 식으로
- 마지막은 응원으로 마무리
- 민감한 경험(암, 사별 등)은 진지하게

결과:

"투자로 2배 벌고 절반 잃고... 변동성 자체가 경험치시네요.
최소한 통장 잔고가 심심하진 않겠어요."

이 밸런스를 찾는 데 프롬프트 수정만 20번 이상 했다. 미묘한 차이가 결과를 완전히 바꾼다. "비꼬되 상처주지 않게"와 "적당히 독설을 섞어서"는 비슷해 보이지만 LLM의 출력은 완전히 다르다.

프롬프트 설계의 핵심 테크닉

여러 번 실험하면서 발견한 프롬프트 테크닉들:

1. 역할 부여보다 예시가 낫다 "위트있는 평론가처럼 말해줘"보다 실제 좋은 멘트 3개를 예시로 주는 게 훨씬 효과적이었다. LLM은 추상적 지시보다 구체적 예시에서 톤을 더 잘 학습한다.

2. 네거티브 예시도 필수 "이렇게는 말하지 마"도 중요하다. 좋은 예시만 주면 가끔 극단으로 빠진다. "뻔한 칭찬 금지", "직접적 비하 금지" 같은 제약을 걸어야 밸런스가 유지된다.

3. 경험 조합별 분기 모든 경험을 동일한 톤으로 다루면 안 된다. "번지점프 O"와 "암 투병 O"를 같은 가벼운 톤으로 다루면 사용자가 불쾌해한다. 프롬프트에 민감한 경험 목록을 명시하고, 해당 경험이 포함되면 톤을 조절하도록 했다.

경험 조합별 특수 처리

특정 조합은 별도 로직이 필요했다.

조합처리
사별 + 재혼진지 모드, 응원 위주
창업 + 파산 + 재창업"학습능력" 드립
교통사고 + 뼈 부러짐 + 수술"몸이 자산" 식 조언
경험 거의 없음"인생 아직 많이 남음" 긍정
경험 거의 다 있음"대체 뭘 안 해보셨나요"

재미있는 발견은, "경험이 극단적으로 적은 사람"에 대한 멘트가 의외로 어렵다는 것이다. 50개 중 5개 미만이면 "조심스러운 인생"이라고 할 수도 있지만, "재미없는 인생"으로 읽힐 수도 있다. 결국 "아직 앞에 펼쳐질 경험이 많다"는 긍정적 프레이밍으로 해결했다.

반대로 "거의 다 경험한 사람"의 멘트는 쉬웠다. "대체 뭘 안 해보셨나요? 혹시 화성 여행만 안 해보신 건 아니죠?" 같은 멘트가 자연스럽게 나온다. 경험이 많은 사람은 자기 인생에 대한 유머 감각도 있어서, 약간의 비꼼도 잘 받아들인다.

QwQ vs Qwen 결과 비교

같은 프롬프트, 같은 입력에 대해:

QwQ-32B:

"해외여행 10회에 히치하이킹까지... 여권이 닳아 없어지기 전에
국내여행도 한번 고려해보시죠? 제주도 맛집도 꽤 많답니다."

Qwen2.5-1.5B:

"여행을 많이 다니셨네요. 다양한 경험이 있으시군요."

QwQ가 훨씬 낫다. 1.5B는 빠르지만 밋밋하다. 결국 결과 페이지에선 QwQ를 쓰기로 했다. 로딩 시간은 "AI가 당신의 인생을 분석 중..." 메시지로 커버.

모델 크기가 "위트"에 미치는 영향은 꽤 극적이다. 작은 모델은 문법적으로 정확한 문장을 만들지만, "의외성"이 없다. 큰 모델은 경험 조합에서 예상치 못한 연결고리를 찾아서 드립을 친다. "해외여행 + 히치하이킹"에서 "여권 닳아 없어진다"를 뽑아내는 건 1.5B로는 안 된다.

그렇다고 무조건 큰 모델을 쓸 수는 없다. 서버 자원이 한정되어 있고, 동시 요청이 늘면 응답 시간이 길어진다. 현재는 빠른 로딩용(문항 진행 중 UI 텍스트)은 1.5B, 최종 결과 멘트는 QwQ로 분리 운영하고 있다.

아직 해결 못한 것들

  1. 가끔 프롬프트를 무시하고 너무 긴 답변이 나옴 — max_tokens으로 제한하면 문장이 중간에 잘림
  2. 특정 경험 조합에서 같은 드립이 반복됨 — temperature를 올리면 품질이 불안정해짐
  3. 영어 평가 품질이 한국어보다 떨어짐 — 한국어 데이터가 많아서인지, 영어 위트가 부자연스러움
  4. "경험 0개" 예외 처리 — 50개 전부 X인 사용자를 위한 특별 멘트 필요

계속 튜닝 중이다. 서비스 런칭 후에도 프롬프트는 계속 수정하고 있다. 사용자 피드백이 들어오면 실제 반응 데이터를 기반으로 더 정교하게 다듬을 수 있을 것이다.