DOCS/journey/troubleshooting/260326_ir_eval_empty_response_resolved.md
happybell80 886bd42ae3 docs: 신규 스킬 7개 SKILL.md + 원칙 문서 중복 제거 + 구현 결과 문서
- session-logs, blogwatcher, summarize, whisper, gitea, himalaya, skill-creator SKILL.md
- SKILL.md 인덱스 업데이트 (16개 스킬)
- 311/314/315 상위 SSOT 중복 제거 + 링크 수정
- Phase 1-3 결과 + 테스트 결과 + evaluation 트러블슈팅

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 01:23:15 +09:00

2.2 KiB

date, subject, status, closed_date, closed_reason
date subject status closed_date closed_reason
2026-03-26 IR Deck 평가 빈 응답 문제 해결 closed 2026-03-26 max_tokens + response_format + pending/failed 상태 저장 적용으로 해결

IR Deck 평가 빈 응답 문제 해결

현상

  • LLM evaluation이 빈 응답 반환 → 평가 실패
  • 프런트 3분간 무한 폴링 (404)
  • "평가 처리 중 오류가 발생했습니다" 표시 불가

근본 원인

  • max_tokens=1000: IR 평가 JSON은 수천 토큰 필요한데 기본값 1000으로 응답 잘림
  • response_format 미사용: LLM이 서두/마크다운 혼입 가능
  • DB에 상태 없음: 실패 시 행 자체가 없어 404 무한 폴링
  • LLM 원문 미로깅: 뭐가 잘려서 실패했는지 알 수 없음

수정 내용

백엔드 (rb8001)

  • ir_analyzer.pycall_llmmax_tokens, response_format 파라미터 추가
  • ir_deck_analyzer.py_evaluate_comprehensive에서:
    • max_tokens=4000 (env: IR_EVAL_MAX_TOKENS)
    • response_format={"type": "json_object"} (JSON 강제)
    • json.loads 직접 파싱 (extract_json_from_text 제거)
    • JSON 파싱 실패 시 원문 첫 500자 로그
  • ir_valuation_repository.pystatus + error_message 컬럼 추가, create_evaluation_pending, update_evaluation_status 함수
  • ir_deck.py — POST /evaluate에서 즉시 pending INSERT, 실패 시 failed UPDATE, GET에서 pending/failed/completed 분기

프런트 (frontend-ir-valuation)

  • useEvaluation.ts — status 필드 분기 (pending→폴링, failed→중단+"평가 실패", completed→표시)
  • 404 3회 연속 시 폴링 중단

DB

  • ALTER TABLE ir_deck_evaluations ADD COLUMN status VARCHAR(20) DEFAULT 'completed'
  • ALTER TABLE ir_deck_evaluations ADD COLUMN error_message TEXT

설정

  • /home/admin/robeing/.envDEFAULT_LLM_MAX_TOKENS=1000, IR_EVAL_MAX_TOKENS=4000

원칙 반영

  • coding-principles.md — "비동기 작업의 상태 추적" 원칙 추가
  • infrastructure-ssot-principle.md — "프로젝트 루트 env 원칙" 추가

검증

  • evaluation_id=1efaf078 테스트: pending→completed 12초, 67점 C등급
  • 이전: 빈 응답 2회 재시도 후 failed
  • 이후: JSON 강제 + 4000 토큰으로 정상 완료