← 전체 글 보기

캐릭터 일관성을 지키는 4+1 레이어: 프롬프트 초기화 아키텍처 실전

캐릭터형 에이전트 품질은 모델 선택보다 프롬프트 조립 구조에 더 크게 좌우된다. 특히 음성/대화 시스템에서는 “고정 정체성"과 “실시간 맥락"을 분리하지 않으면, 같은 캐릭터가 호출 시점마다 다른 인격처럼 응답하는 문제가 반복된다. 이 글은 4+1 레이어 구조를 기준으로 초기화 경로를 설계하고, 상태 정합성을 유지하는 방법을 기술적으로 정리한다.

기존 방식의 실패 원인

단일 프롬프트 텍스트에 캐릭터 설명, 사용자 정보, 통화 맥락, 미션 지시를 모두 합치면 다음 문제가 생긴다.

핵심 결함은 내용 부족이 아니라 구조 부재다.

4+1 레이어 모델

Layer 1: Core Character Prompt (불변 계층)

Layer 2: Situation Context (세션 계층)

Layer 3: Mission Behavior Prompt (행동 규칙 계층)

Layer 4: Mission JSON (데이터 계층)

Layer 5: Memory/State JSON (연속성 계층)

핵심은 “규칙"과 “데이터"를 분리해 변경 범위를 국소화하는 데 있다.

초기화 파이프라인

프롬프트 조립 전 단계에서 사용자와 세션을 먼저 고정한다.

identity -> user profile -> history fetch -> state compose -> layer assemble -> inference

1) Identity Resolution

2) State Hydration

3) Mode Selection

4) Prompt Assembly

데이터 계약(Schema Contract)

레이어가 늘어나면 데이터 계약이 사실상 시스템 경계가 된다.

필수 계약 항목:

계약 검증 실패 시 조치:

  1. 치명 필드 누락: 호출 중단 + fallback 응답
  2. 비치명 누락: 기본값 주입 + 경고 로그
  3. 스키마 불일치: 해당 계층 제외 후 degraded mode 실행

일관성 유지 전략

1) 버전 고정

2) 쓰기 경합 제어

3) 캐시 계층

관측 지표

구조 설계의 효과는 응답 품질이 아니라 변동성 감소로 확인한다.

in_character_rate 단독보다 context_mismatch_rate와 함께 봐야 원인을 분리할 수 있다.

트레이드오프

다음 단계

  1. Layer 5 최소 필드 집합과 만료 정책 고정
  2. 모드 전환(일반→미션, 미션→일반) 회귀 테스트 자동화
  3. 실패 유형별 fallback 문구를 정책화해 사용자 체감 불안정 최소화

참고 및 인용

참고: OpenAI 프롬프트 엔지니어링 가이드는 지시/구조/검증 분리 방식의 기본 원칙을 제시한다. Prompt engineering

참고: JSON Schema는 계층별 입력 계약을 기계적으로 검증할 때 널리 쓰이는 표준이다. What is JSON Schema?

참고: Structured Outputs 가이드는 스키마 기반 출력 강제를 통해 계층별 데이터 계약 검증을 구현하는 실무 패턴을 제공한다. Structured outputs