docs: 프롬프트 동적관리 계획에 Gemini 프롬프트 설계 원칙 반영

- Gemini 프롬프트 설계 원칙 문서(313_Gemini_프롬프트_설계_원칙.md) 링크 추가
- XML 구조화 프롬프트 마이그레이션 완료 사실 반영 (2025-12-25)
- Phase 1, Phase 2에 XML 구조화 관련 내용 추가
- 변수 치환 섹션에 XML 구조 내 변수 처리 방법 명시
- 핵심 설계 원칙에 프롬프트 구조화(XML 태그), 퓨샷 예시 활용 추가
- DB 스키마 설계에 XML 구조 유지 주의사항 추가
This commit is contained in:
Claude-51124 2025-12-25 23:09:22 +09:00
parent f96e85c46d
commit 66068924c7

View File

@ -26,7 +26,7 @@ CREATE TABLE prompt_templates (
scope_id VARCHAR(255), -- robeing_id, user_id, task_type 등 scope_id VARCHAR(255), -- robeing_id, user_id, task_type 등
prompt_type VARCHAR(50) NOT NULL, -- 'system', 'chat', 'extract', 'calendar_confirm', 'ir_analysis' 등 prompt_type VARCHAR(50) NOT NULL, -- 'system', 'chat', 'extract', 'calendar_confirm', 'ir_analysis' 등
version VARCHAR(20) DEFAULT '1.0', version VARCHAR(20) DEFAULT '1.0',
content JSONB NOT NULL, -- 템플릿 내용 + 변수 정의 content JSONB NOT NULL, -- 템플릿 내용 + 변수 정의 (XML 구조 유지)
is_active BOOLEAN DEFAULT true, is_active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT now(), created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now(),
@ -35,6 +35,8 @@ CREATE TABLE prompt_templates (
); );
``` ```
**참고**: `content` 필드는 XML 구조화된 프롬프트를 저장하며, 변수 플레이스홀더는 텍스트 내 포함. 예: `{"template": "<role>로빙 AI 어시스턴트</role>\n<constraints>사용자 감정: {emotion_labels}</constraints>", "variables": ["emotion_labels"]}` 형식으로 저장 가능.
## 프롬프트 분류 기준 ## 프롬프트 분류 기준
### 1. 변경 빈도별 ### 1. 변경 빈도별
@ -67,6 +69,8 @@ Global → Robeing → User 순서로 조회, 상위에서 정의되면 하위
## 핵심 설계 원칙 (기존 문서 참고) ## 핵심 설계 원칙 (기존 문서 참고)
- **프롬프트 구조화**: XML 태그 사용 (`<role>`, `<constraints>`, `<task>`, `<context>`, `<output_format>` 등) - [[book/300_architecture/313_Gemini_프롬프트_설계_원칙]] 필수 준수
- **퓨샷 예시 활용**: 긍정적 패턴 예시 제공으로 모델 성능 향상
- **rule_type 분류**: never/always/prefer/avoid + 감정 가중치 ([[ideas/250828_dynamic_system_prompt_memory]]) - **rule_type 분류**: never/always/prefer/avoid + 감정 가중치 ([[ideas/250828_dynamic_system_prompt_memory]])
- **계층 구조**: Base Layer(기본 규칙) + Dynamic Layer(동적 변수) ([[troubleshooting/250806_happybell80_동적프롬프트구현]]) - **계층 구조**: Base Layer(기본 규칙) + Dynamic Layer(동적 변수) ([[troubleshooting/250806_happybell80_동적프롬프트구현]])
- **우선순위 병합**: Global → Robeing → User 순서, 하위가 상위 오버라이드 - **우선순위 병합**: Global → Robeing → User 순서, 하위가 상위 오버라이드
@ -77,10 +81,15 @@ Global → Robeing → User 순서로 조회, 상위에서 정의되면 하위
- `prompt_templates` 테이블 생성 - `prompt_templates` 테이블 생성
- PromptService 클래스 (조회, 병합, 캐싱) - PromptService 클래스 (조회, 병합, 캐싱)
- 기본 프롬프트 마이그레이션 (하드코딩 → DB) - 기본 프롬프트 마이그레이션 (하드코딩 → DB)
- **XML 구조화된 프롬프트 저장** (현재 모든 프롬프트가 XML 구조화 완료)
- 프롬프트 작성 시 [[book/300_architecture/313_Gemini_프롬프트_설계_원칙]] 원칙 준수 필수
### Phase 2: 핵심 프롬프트 DB화 ### Phase 2: 핵심 프롬프트 DB화
- 시스템 프롬프트 (gemini_handler, openai_handler) - 시스템 프롬프트 (gemini_handler, openai_handler)
- 작업 타입별 프롬프트 (chat, extract, calendar_confirm) - 작업 타입별 프롬프트 (chat, extract, calendar_confirm)
- **XML 구조화된 프롬프트 마이그레이션** (2025-12-25 완료)
- 모든 프롬프트가 XML 태그(`<role>`, `<constraints>`, `<task>`, `<context>`, `<output_format>` 등) 구조로 변경됨
- DB 저장 시 XML 구조 유지 필수 ([[book/300_architecture/313_Gemini_프롬프트_설계_원칙]] 참고)
- 폴백 로직 (DB 조회 실패 시 하드코딩 사용) - 필수 - 폴백 로직 (DB 조회 실패 시 하드코딩 사용) - 필수
- DB 조회 실패/타임아웃 시 기존 _get_system_prompt() 메서드 사용 - DB 조회 실패/타임아웃 시 기존 _get_system_prompt() 메서드 사용
- 점진적 마이그레이션 가능, 안전한 전환 보장 - 점진적 마이그레이션 가능, 안전한 전환 보장
@ -118,6 +127,9 @@ Global → Robeing → User 순서로 조회, 상위에서 정의되면 하위
### 변수 치환 ### 변수 치환
- 템플릿 변수({current_time}, {emotion_labels})는 DB 저장 시 플레이스홀더로 유지 - 템플릿 변수({current_time}, {emotion_labels})는 DB 저장 시 플레이스홀더로 유지
- 조회 후 런타임에 str.format() 또는 템플릿 엔진으로 치환 - 조회 후 런타임에 str.format() 또는 템플릿 엔진으로 치환
- **XML 구조 내 변수 처리**: XML 태그 내부에 변수 플레이스홀더 포함 가능
- 예: `<constraints>사용자 감정: {emotion_labels}</constraints>`
- XML 구조를 유지한 채 변수만 치환
### 폴백 전략 ### 폴백 전략
- DB 조회 실패/타임아웃 시 하드코딩 프롬프트 사용 (기존 코드 유지) - DB 조회 실패/타임아웃 시 하드코딩 프롬프트 사용 (기존 코드 유지)
@ -125,6 +137,7 @@ Global → Robeing → User 순서로 조회, 상위에서 정의되면 하위
## 참고 문서 ## 참고 문서
- **[[book/300_architecture/313_Gemini_프롬프트_설계_원칙]]** - Gemini 프롬프트 설계 원칙 (XML 구조화, 퓨샷 예시, 구조화 등) - **필수 참고**
- [[ideas/250828_dynamic_system_prompt_memory]] - 동적 시스템 프롬프트 메모리 시스템 - [[ideas/250828_dynamic_system_prompt_memory]] - 동적 시스템 프롬프트 메모리 시스템
- [[troubleshooting/250806_happybell80_동적프롬프트구현]] - 동적 프롬프트 구현 기록 - [[troubleshooting/250806_happybell80_동적프롬프트구현]] - 동적 프롬프트 구현 기록
- [[book/300_architecture/311_FastAPI_구조_원칙]] - 계층 분리 원칙 - [[book/300_architecture/311_FastAPI_구조_원칙]] - 계층 분리 원칙