식물요정 앱 제작기 (5) - AI 응답 품질 잡기

< 소개 >

안녕하세요~~ 🌱

20기 안드로이드 앱 스터디에서 공부하는 하이호라고 합니다.

제가 이번에 만들고 있는 것은 식물요정과 소통하는 앱!!

  • 카메라로 식물 비추고

  • 식물과 대화하고 (채팅)

  • 식물의 표정이 바뀌는 걸 관찰합니다.

이번엔 AI 응답 품질 문제를 다뤄볼게요.

식물요정 앱은 AI랑 대화하는 게 핵심인데,

응답이 이상하면 앱 전체가 망하는 거잖아요... 🌱

겪었던 문제 3가지예요:

  1. JSON이 채팅에 그대로 노출됨

  2. 답변이 짧거나 중간에 잘림

  3. 식물 이름이 "새싹"인데 AI가 "콩이"라고 함

(이거 작성에 AI한테 한 80% 도움받음)


< 문제 1: JSON이 채팅에 노출됨 >

✅ 증상

채팅 테스트를 하는데 ..

한국어 문자 메시지 앱 스크린샷

json이 계속 나왔어요 🌱🌱

사용자한테 이게 보이면 안 되죠;;

✅ 원인 찾기

처음엔 제 파싱 코드가 잘못된 줄 알았어요.

근데 아무리 고쳐도 계속 발생해서, 혹시나 하고 검색해봤더니...

Gemini 2.5 Flash에 알려진 버그가 있었어요!

JSON 형식으로 응답해달라고 설정해도 모델이 무시하고 "Here is the JSON requested:" 같은 말을 앞에 붙여버려요.

구글 AI 포럼에도 같은 문제로 글이 올라와 있더라고요.

(그렇구나....?)

✅ 해결: 다층 방어

외부 API 버그는 제가 고칠 수 없으니까, 우리 쪽에서 방어하기로 했어요.

1단계 - 입구에서 잡기

"Here is the JSON", "Sure,", "I'll respond" 같은 흔한 프롤로그 패턴 7개를 정해서, 응답 받자마자 잘라냈어요.

2단계 - 중간에서 잡기

JSON 파싱을 3단계로 시도해요. 하나 실패하면 다음 방법으로.

3단계 - 출구에서 잡기

그래도 실패하면? JSON 흔적이 감지되면 "(잠깐 멍해졌어요...)" 같은 안전한 메시지로 대체해요.

최악의 경우에도 사용자한테 {"message": 같은 게 안 보이게요!


< 문제 2: 어려운 질문에 답변 못함 >

✅ 증상

철학적인 질문을 하면 제대로 대답을 못 해요.

그냥 질문해도 가끔 반응을 못했어요.

답변이 전반적으로 짧고 성의 없어 보였어요.

✅ 원인

토큰 제한이 300이었어요.

토큰이 뭐냐면, AI가 한 번에 생성할 수 있는 글자 수 제한 같은 거예요.

300이면 한국어로 대략 150자 정도밖에 못 써요.

철학적인 질문처럼 긴 답변이 필요한 건 중간에 잘릴 수밖에 없었던 거죠.

✅ 해결

300 → 1000으로 올렸더니 해결됐어요.

휴대폰에 한국어 문자 메시지 두 개

여전히 바보지만, 캐릭터에 맞는 바보라서 OK.


< 문제 3: "콩이" 버그 >

✅ 증상

제 식물 이름은 "새싹"인데,

AI가 자꾸 "콩이가 좋아!" 이러는 거예요.

콩이가 누구야?? 🌱

✅ 원인

프롬프트 파일을 열어봤더니...

예시 문장이 이렇게 되어 있었어요:

(예: "콩이가 좋아!")

AI가 이 예시를 보고 "아 내 이름이 콩이구나" 하고 학습해버린 거죠.

프롬프트에 있는 예시가 AI 행동에 이렇게 큰 영향을 주는 줄 몰랐어요.

✅ 해결

예시를 동적으로 바꿨어요:

(예: 이름이 "새싹"이면 "새싹이는 기뻐!")

이제 식물 이름에 맞게 예시가 바뀌니까 문제 해결!


< 문제 4: "API 한도" 오류>

이런 식으로 좀만 써도 한도 때문에 오류가 났어요.

그래서 다른 AI도 추가 가능하도록 해놓고,

모든 API가 한도가 나갈 경우 귀여운 에러 메시지가 뜨도록 해놨어요.

이거에서

...

이거네요? 반영이 안되었나봅니다 ㅠㅠ


< 🌱 핵심 교훈 >

  1. 외부 API 버그는 내가 방어해야 해요

    • 구글이 고쳐줄 때까지 기다릴 수 없어요

    • 다층 방어로 최악의 상황 대비

  2. 프롬프트 예시 = AI의 행동 템플릿

    • 예시에 "콩이"라고 쓰면 AI도 "콩이"라고 해요

    • 예시는 패턴만 보여주고 실제 값은 동적으로

  3. 설정값 한 번 확인하세요

    • 토큰 300이 문제였는데 한참 삽질했어요

    • 기본적인 설정부터 체크하는 습관 필요

캬컄캬컄컄컄컄캬컄ㅋ컄컄컄캬



< 🌱 결과 >

  • JSON 노출 문제 완전 해결 (다층 방어)

  • 답변 길이 정상화 (토큰 1000)

  • 콩이 버그 수정 (동적 예시)

  • 다중 API 지원

이제 AI 응답 품질은 믿을 만해졌어요 🌱 아마도.....? ㅇ_ㅇ;;


< 액션플랜 >

  1. 응답 테스트

    1. API 무료 모델의 답변은 어디까지 가능한가. 성능 어디까지 끌어올릴 수 있는가

    2. 응답 테스트는 어떻게 할까

    3. 저성능 모델은 같은 말을 반복하는 경향이 있다... 이건 어떻게 해결해야 하나?

  2. 더 많은 API 지원 하기

  3. 그러고 보니 기본 식물인 '새싹이'는 최신대화 시간도 안뜨고, 프사도 없는데 이건 어쩌지? -> 삭제하면 실기기 외엔 테스트가 어려워진다...

  4. 식물 삭제 기능 넣을까?

  5. API 가이드를 넣을 것인가...


< 다음 사례글 예고 >

사례글 6: 앱 출시 준비 + 사례글 작성 도움 받기

  • Play Store 출시 체크리스트

  • 패키지명 정하는 과정

  • 클로드한테 사례글 초안 받은 후기

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요