feat: 대화 컨텍스트 상황 요약 컴포넌트 구현#60
Merged
Merged
Conversation
- ConversationContextSummarizer: 이전 대화를 상황 설명문으로 요약 - 현재 기호와 관련 있으면 "현재 ~한 상황이다." 형태로 압축 - 무관하면 컨텍스트 배제 (Optional.empty) - WordSentenceGenerator: 원문 히스토리 메시지 대신 요약 상황을 시스템 프롬프트에 주입 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- GenerationResult에 contextSummary 필드 추가 - AiGenerationLog에 context_summary 컬럼 추가 - 요약된 상황 설명이 DB에 저장되어 추적 가능 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 물/라면/사과 3턴 히스토리 후 공책 요청 케이스 - 이전 음식 컨텍스트가 문장에 스며들지 않는지 assertContextNotLeaked 검증 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jumdo12
added a commit
that referenced
this pull request
May 19, 2026
* refactor: 대화 컨텍스트 로딩 방식 개선 (#53) * 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 응답 트레이싱 추가 (#55) * 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: AAC 문장 품질 평가 테스트 추가 (#56) * 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> * feat: AI 응답 리랭크 전략 적용 (#57) (#58) - SentenceReranker 컴포넌트: LLM 기반 최적 후보 선택 - WordSentenceGenerator: OpenAI n 파라미터로 N개 후보 생성 후 리랭크 적용 - generation.candidates 설정값으로 후보 수 조절 (기본값 3) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: 대화 컨텍스트 상황 요약 컴포넌트 구현 (#60) * 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> * chore: prod ddl-auto validate → update (서브모듈 포인터 업데이트) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
작업 내용
ConversationContextSummarizer: 이전 대화를 "현재 ~한 상황이다." 형태로 요약WordSentenceGenerator: 원문 히스토리 메시지 대신 요약 상황을 시스템 프롬프트에 주입GenerationResult/AiGenerationLog:contextSummary필드 추가 — 트레이싱 가능변경 이유
이전 대화 원문 전달 시 욕구 중복 반영 문제 해결, 토큰 절감
배포 전 DB 마이그레이션
Closes #59