728x90
AI 원픽은 데이터용량 오류가 심해서 100개로 제한해서 엄선된걸 보냈고
로직을 좀 더 엄격하게 해서 다른 글자가 못들어오게 막았다.
Flutter/Dart AI 추천 시스템 버그 해결 과정
문제상황:
- AI 추천 기능에서 타입 에러 발생
- JSON 파싱 실패 ("Unterminated string" 에러)
- OpenAI API 토큰 제한 초과
원인 분석:
- 데이터 타입 불일치와 안전하지 않은 타입 변환
- OpenAI API 응답의 불완전한 JSON 형식
- 대용량 데이터 전송으로 인한 토큰 제한(16,385) 초과
해결 방법:
- 타입 안전성 강화
// 안전한 타입 변환 메서드 구현
Map<String, String> _safelyParseReasonMap(dynamic rawReasons)
List<String> _safelyParseProductIds(dynamic rawProducts)
JSON 파싱 개선
// 엄격한 프롬프트 형식 지정
'content': '''쇼핑 추천 AI입니다. 정확한 JSON 형식으로만 응답하세요:
{
"products":["id1","id2","id3"],
"reasons":{"id1":"simple reason","id2":"simple reason","id3":"simple reason"}
}'''
데이터 최적화
// 데이터 크기 축소
final productsForAI = availableProducts
.take(30) // 100개 → 30개
.map((p) => {
'id': p.productId,
'categoryId': p.categoryId,
'brandName': p.brandName,
})
개선 결과:
- 안정적인 타입 처리로 타입 에러 해결
- 명확한 JSON 형식으로 파싱 오류 감소
- 데이터 최적화로 토큰 제한 문제 해결
학습점:
- API 통신에서 데이터 최적화의 중요성
- 타입 안전성 확보를 위한 방어적 프로그래밍
- AI 모델 사용 시 명확한 프롬프트 엔지니어링의 필요성
기술 스택: Flutter, Dart, Firebase, OpenAI API
CopyRetry
Claude does not have the ability to run the code it generates yet.
728x90