Skip to content

[feat] 댓글 생성 프롬프트에 과거 요약(pastSummary) 실제 연동 #16

Description

@kite707

배경 / 문제

현재 댓글 생성 로직은 pastSummary를 전달받지만, 실제 과거 대화 요약을 연결하는 스펙이 없어 빈 값(기록 없음.)으로 처리되고 있습니다.

기획 변경에 따라 현재 대화방의 요약과 이전 대화방의 요약을 구분해 댓글 생성 컨텍스트로 활용합니다.

목표

LLM이 현재 대화 흐름을 이해하고, 이전 대화방에서 저장된 요약 중 일부를 참고해 사용자와 자연스럽게 이어지는 댓글을 생성하도록 합니다.

과거 대화를 항상 언급하는 것이 아니라, 현재 대화와 관련성이 있을 때만 다음과 같이 자연스럽게 언급할 수 있어야 합니다.

“너 지난번에도 비슷한 얘기 했잖아!”

요약 데이터 구분

현재 대화방 요약

사용자가 댓글을 작성할 때마다 프론트가 현재 대화방 전체를 짧은 문장으로 압축합니다.

프론트는 댓글 생성 요청에 다음 값을 전달합니다.

  • 새로 작성한 사용자 댓글
  • currentConversationSummary: 현재 대화방 전체의 임시 요약

currentConversationSummary는 댓글 생성 컨텍스트로만 사용하며 서버에 저장하지 않습니다.

과거 대화방 요약

카드 생성 또는 대화방 종료 시 프론트가 현재 대화 전체를 짧게 요약하고, 서버에 전달합니다.

서버는 이 값을 해당 conversation 행의 summary 컬럼에 저장합니다.

conversation.summary

저장된 요약은 이후 다른 대화방에서 과거 대화 컨텍스트로 활용합니다.

댓글 생성 흐름

  1. 사용자가 현재 대화방에 댓글을 작성합니다.
  2. 프론트가 현재 대화방 전체를 currentConversationSummary로 압축합니다.
  3. 프론트가 댓글과 currentConversationSummary를 서버에 전달합니다.
  4. 서버는 저장된 과거 대화방 요약(conversation.summary) 중 일부를 조회합니다.
  5. 현재 댓글, 현재 대화방 요약, 선택된 과거 요약을 LLM 프롬프트에 전달합니다.
  6. LLM이 현재 대화에 자연스럽게 반응하는 댓글을 생성합니다.
  7. 생성된 댓글을 프론트에 반환합니다.

현재 대화방 요약은 요청 처리 중에만 사용하며 저장하지 않습니다.

프롬프트 요구사항

LLM은 다음 정보를 컨텍스트로 사용할 수 있어야 합니다.

  • 새로 작성된 사용자 댓글
  • currentConversationSummary
  • 서버에서 선택한 과거 대화방 요약 목록

LLM은 과거 요약을 반드시 언급하지 않습니다.

현재 대화와 관련성이 있는 경우에만 과거 내용을 자연스럽게 언급하고, 관련성이 낮거나 확신하기 어려운 경우에는 현재 대화에 집중합니다.

API / 데이터 변경

  • GenerateCommentsRequestcurrentConversationSummary 추가 또는 기존 pastSummary 대체
  • conversation 테이블에 summary 컬럼 추가
  • 카드 생성 또는 대화방 종료 시 최종 요약을 전달받아 conversation.summary에 저장
  • 댓글 생성 시 저장된 과거 conversation.summary 중 일부를 조회해 프롬프트에 전달
  • 현재 대화방의 currentConversationSummary는 저장하지 않음

완료 조건 (DoD)

  • GenerateCommentsRequestcurrentConversationSummary 연결
  • 프론트가 전달한 현재 대화방 요약을 댓글 생성 프롬프트에 반영
  • conversation 테이블에 summary 컬럼 추가
  • 카드 생성 또는 대화방 종료 시 전달받은 최종 요약을 conversation.summary에 저장
  • 댓글 생성 시 과거 대화방의 summary 일부를 조회해 프롬프트에 전달
  • 현재 대화방의 요약은 서버에 저장하지 않음
  • 과거 요약을 항상 언급하지 않고, 현재 대화와 관련 있을 때만 자연스럽게 활용하도록 프롬프트 구성
  • 과거 요약 선택 개수 및 랜덤 선택 방식 확정
  • 과거 요약의 조회 범위 확정
  • 현재 요약을 활용한 댓글 생성 테스트 추가
  • 과거 요약을 자연스럽게 언급하는 댓글 생성 테스트 추가
  • 최종 요약 저장 테스트 추가

미정 사항

  • 과거 요약을 몇 개 선택할지 결정
  • 과거 요약 선택 주체 및 랜덤 선택 방식 결정
  • 과거 요약 조회 범위 결정
    • 같은 사용자
    • 최근 대화방
    • 전체 대화방
    • 기타 기준
  • 카드 생성과 대화방 종료 시 최종 요약 저장 API 확정

연관 이슈

관련 #4

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions