Skip to content

feat: AI 품질 개선 - 프롬프트 라우팅, 컨텍스트 요약, 리랭크#64

Merged
jumdo12 merged 7 commits into
mainfrom
develop
May 19, 2026
Merged

feat: AI 품질 개선 - 프롬프트 라우팅, 컨텍스트 요약, 리랭크#64
jumdo12 merged 7 commits into
mainfrom
develop

Conversation

@jumdo12

@jumdo12 jumdo12 commented May 19, 2026

Copy link
Copy Markdown
Contributor

작업 내용

jumdo12 and others added 7 commits May 19, 2026 09:30
* feat: reset conversation history after session expiry (#52)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: 대화 컨텍스트 로딩 방식 개선 (개수/시간 임계값 기반 필터링)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: AI 응답 트레이싱 추가 (#54)

- GenerationResult 도입: model, latencyMs, token usage, 성공/실패 정보 포함
- AiGenerationLog 엔티티 및 비동기 이벤트 기반 DB 저장 구현
- promptTokens, completionTokens, totalTokens 컬럼 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: NoResourceFoundException ERROR 로그 제거

favicon.ico 등 정적 리소스 미존재 요청을 조용히 404로 처리

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* test: RelevancyEvaluator 기반 문장 품질 평가 테스트 추가 (#16)

- sentence-eval-dataset.json: 기호 수 1~6개 구간 20개 평가 케이스
- SentenceQualityEvalTest: 각 케이스별 생성 문장을 RelevancyEvaluator로 관련성 검증
- spring-ai-test 의존성 추가
- ./gradlew aiTest 로 실행 (API 키 필요)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: 평가 리포트 자동 생성 추가

- @afterall에서 build/reports/eval/ 에 JSON 리포트 파일 생성
- 전체 통과율, 평균 점수, 기호 수별 통계, 케이스별 상세 포함
- 실패 케이스 콘솔 요약 출력

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: RelevancyEvaluator → AAC 커스텀 평가 프롬프트로 교체

- 의미적 변환 허용 (물+먹고싶어 → 마시고싶어 등) 기준 반영
- 평가 결과에 reason 필드 추가, 리포트에도 포함
- spring-ai-test 의존성 제거

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: 대화 히스토리 포함 평가 케이스 5개 추가

- 데이터셋에 history 필드 추가 (id 21~25)
- 이전 대화 맥락 반영 여부 검증
- 리플렉션으로 ConversationMessage 생성 (User 의존성 우회)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: 이전 대화 욕구 중복 반영 방지 프롬프트 개선 (서브모듈 포인터 업데이트)

* test: 평가 프롬프트 조사/어미 허용 기준 명확화

- '랑', '에서', '도' 등 한국어 문법 요소는 추가로 허용
- 기호에 없는 명사/동사/개념 추가만 불허로 구체화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- SentenceReranker 컴포넌트: LLM 기반 최적 후보 선택
- WordSentenceGenerator: OpenAI n 파라미터로 N개 후보 생성 후 리랭크 적용
- generation.candidates 설정값으로 후보 수 조절 (기본값 3)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: 대화 컨텍스트 상황 요약 컴포넌트 구현 (#59)

- ConversationContextSummarizer: 이전 대화를 상황 설명문으로 요약
  - 현재 기호와 관련 있으면 "현재 ~한 상황이다." 형태로 압축
  - 무관하면 컨텍스트 배제 (Optional.empty)
- WordSentenceGenerator: 원문 히스토리 메시지 대신 요약 상황을 시스템 프롬프트에 주입

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: 컨텍스트 요약 트레이싱 추가 (#59)

- GenerationResult에 contextSummary 필드 추가
- AiGenerationLog에 context_summary 컬럼 추가
- 요약된 상황 설명이 DB에 저장되어 추적 가능

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: 무관 컨텍스트 배제 검증 케이스 추가 (id=26)

- 물/라면/사과 3턴 히스토리 후 공책 요청 케이스
- 이전 음식 컨텍스트가 문장에 스며들지 않는지 assertContextNotLeaked 검증

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: 기호 수 기반 프롬프트 라우팅 전략 적용 (#62)

- PromptRouter: 기호 1개 → sentence-single 프롬프트, 2개 이상 → 표준 프롬프트
- sentence-single: 행동 기호 없어도 의도 유추 허용
- WordSentenceGenerator: @value 직접 주입 대신 PromptRouter 사용

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: sentence-single 프롬프트 개선 (서브모듈 포인터 업데이트)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@jumdo12 jumdo12 merged commit fb82a9e into main May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant