플러팅 AI

📌 플러팅 AI – GPT 프롬프트 최적화 & WebSocket 연결 안정화 (React Native & 서버 수정)

Solo.dev 2025. 2. 6. 22:00

2025년 2월 6일, 서비스 중인 플러팅 AI의 GPT 프롬프트와 WebSocket 연결 관련하여

서버와 React Native 앱을 최적화하는 작업을 진행했다. 이번 수정은 더 자연스러운 플러팅 멘트 생성

앱 사용 중 WebSocket 연결 안정화에 초점을 맞췄다.

계기는 인스타 릴스로 홍보중 멘트가  최악의 멘트라는 댓이 달려서 

수정할 필요가 있다고 생각이 들어서 급하게 수정했다

Gcloud run이라 그런지 상당히 편하게 수정했다 원래 이러나...? 


✅ 1. GPT 프롬프트 최적화 (서버 수정)

1) 전체적인 프롬프트 개선

🔹 수정 전:

  • GPT가 대화를 참고하지 않고 각 섹션별로 독립적으로 응답을 생성
  • 플러팅 멘트 섹션에 불필요한 설정이 많아 응답이 과하게 설명적이거나 부자연스러움

🔹 수정 후:

  • 모든 GPT 응답이 대화를 참고하여 생성되도록 수정
  • 플러팅 멘트 섹션에서 불필요한 설정을 제거, 보다 자연스럽고 현실적인 멘트 생성

✨ 기대 효과:
✅ 대화 흐름을 고려한 자연스러운 분석 제공
✅ 플러팅 멘트가 덜 인위적이고 더 Z세대 감성에 맞는 스타일로 변경


✅ 2. React Native – SavedResultsScreen에서 GPT 플러팅 멘트 생성 방식 변경

1) 플러팅 멘트 생성 프롬프트 변경

🔹 수정 전:

  • GPT 프롬프트가 단순히 "플러팅 멘트를 생성해줘" 라는 일반적인 요청을 기반으로 동작
  • 응답이 스타일이 비슷하거나, 너무 직설적이거나 뻔한 멘트가 생성되는 경우가 많았음

🔹 수정 후:

const examplePrompt = 'Z세대 감성으로, 부담스럽지 않은 플러팅 멘트 1줄만 만들어줘.  짧고 담백하게, 매번 스타일을 다르게 해줘.(예: 장난스럽게, 은근하게, 직설적으로, 칭찬형, 반전 있는 스타일 중 하나로!)';
  • 스타일을 매번 다르게 생성하도록 설정하여 보다 다양한 유형의 플러팅 멘트 제공

✨ 기대 효과:
✅ Z세대 감성에 맞춰 더 자연스러운 플러팅 멘트 생성
✅ 같은 요청을 반복해도 매번 다른 느낌의 플러팅 멘트 출력
✅ 너무 직설적이거나 부담스러운 멘트가 생성되는 문제 해결


✅ 3. WebSocket 연결 안정화 – 앱 종료 시 서버가 즉시 꺼지는 문제 해결

1) 기존 WebSocket 연결 문제

🔹 기존 문제점:

  • disconnect 이벤트 발생 시 클라이언트를 큐에서 제거한 후, 즉시 서버를 종료하도록 설정됨
  • 이로 인해 앱을 껐다가 바로 다시 실행하면 서버는 종료된 상태이지만 WebSocket은 다시 연결되는 상황 발생
  • 사용자가 앱을 정상적으로 사용 중이어도 서버 종료 Alert이 뜨는 문제가 있었음

🔹 수정 후:

if (!isSocketConnected) {
  Alert.alert(
      '연결 끊김',
      '서버와의 연결이 끊어졌습니다. 앱을 다시 시작해주세요.',
      [{ text: '확인' }]
  );
  return;
}
  • WebSocketProvider에서 Alert을 제거하고, MainScreen에서 isSocketConnected 상태를 체크하여 Alert을 띄우도록 변경
  • 이제 서버 연결이 끊어졌을 때 사용자가 사진을 선택하면 Alert이 뜨도록 수정됨
 

✨ 기대 효과:
✅ 앱을 재시작할 때 불필요한 Alert이 뜨는 문제 해결
✅ WebSocket 연결이 실제로 끊어진 상태에서만 Alert을 띄우도록 개선
✅ 사용자가 실제로 작업을 진행하려고 할 때만 연결 상태를 체크하도록 변경