4.0 KiB
4.0 KiB
tags
| tags | |||||
|---|---|---|---|---|---|
|
프롬프트 DB 응답생성 폐루프 미연결
날짜: 2026-03-10
작성자: Codex
관련 파일: rb8001/app/services/message_tracking_service.py, rb8001/app/router/message_endpoint.py, rb8001/app/state/prompt_management_repository.py
상위 원칙: 문서 작성 원칙, Backend Coding Principles
관련 문서
이 문서의 범위
- 이 문서는
DB에 저장된 활성 프롬프트가 실제 응답 생성 전에 반영되지 않는 문제만 다룹니다. - 즉 핵심은
실행 경로 연결,폐루프,주입 시점문제입니다. - 아직 DB로 옮기지 않은 하드코딩 프롬프트 범위는 별도 문서 프롬프트 DB 부분 도입 상태와 하드코딩 프롬프트 잔존 으로 분리합니다.
문제 정의
- 프롬프트 DB와 자기개선 DB의 저장/조회 API, 적재 테이블,
run_id추적 골격은 이미 구현돼 있다. - 하지만 현재
/api/message응답 생성 경로는 활성 프롬프트 버전을 읽어 실제 답변 생성 규칙에 반영하지 않는다. - 그 결과 프롬프트 DB에서 버전을 바꿔도, 사용자는 응답 품질 변화나 규칙 반영을 직접 체감할 수 없다.
재현 조건
- 유효한 JWT로
POST /api/message호출 X-Run-Id지정- 같은 사용자로
message_chat프롬프트를 DB에서 새 버전으로 생성/활성화 후 다시 호출
확인된 사실
message_chat템플릿에v2를 생성하고 active로 전환하는 API 호출은 정상 동작했다.- DB 조회 결과
message_chat의 기존v1은retired, 새v2는active상태로 바뀌었다. - 같은 시점
/api/message호출은 정상 응답했고, 해당run_id에 대한prompt_events.version_id는v2를 가리켰다. - 그러나 실제
bot_response에는v2내용(always answer with prefix TEST-V2)이 반영되지 않았다. - 코드상
message_tracking_service.py는 응답 생성 후get_active_prompt_version()을 호출해 이벤트를 기록하지만, 응답 생성 이전에 프롬프트 버전을 주입하는 경로는 없다.
영향 범위
- 프롬프트 DB는 현재 기준으로
운영 버전 저장소 + 추적 로그역할에 머문다. - 사용자 입장에서는 프롬프트 버전을 바꿔도 실제 답변 개선이 즉시 일어나지 않는다.
- 자기개선 루프도 현재는
run_id기준 추적은 되지만, 추적 결과가 다음 응답 품질을 바꾸는 폐루프까지는 연결되지 않았다.
닫힘 기준
message_chat등 최소 1개 운영 경로에서 활성 프롬프트 버전이 응답 생성 전에 실제로 주입된다.- DB에서 활성 버전을 바꾸면 사용자가 실제 응답 변화로 이를 체감할 수 있다.
prompt_events.version_id와 실제 응답 내용이 같은 버전을 가리킨다는 운영 검증 증거가 남는다.
미확정 항목
- 실제 응답 생성 경로에서 어느 계층에 프롬프트 버전 병합을 넣을지가 아직 확정되지 않았다.
message_chat외의 task별 템플릿(meeting_summary,clarify등)을 어떤 우선순위로 적용할지도 아직 미확정이다.- 프롬프트 DB를 읽는 순간 기존 하드코딩 프롬프트와 어떤 fallback 규칙으로 공존시킬지도 미확정이다.