콘텐츠로 이동

Refactor 기록

이 페이지는 대화 품질과 runtime 구조를 개선한 과정을 찾기 위한 역사 문서 인덱스입니다. 각 상세 문서는 변경 당시의 문제, 판단과 검증을 보존합니다.

현재 기본값과 구현 계약은 Graph Builder Runtime, Scenario 규칙은 Scenario v2 작성 가이드를 기준으로 확인합니다. 이 기록의 과거 코드와 기본값을 현재 동작으로 해석하지 않습니다.

개선 방향

리팩터링은 다음 책임을 분리하는 방향으로 진행했습니다.

개념 답하는 질문 현재 표현
Dialog act 사용자가 현재 발화로 무엇을 하는가? NLUResult.dialogue_act
Intent 사용자가 무엇을 이루려 하는가? NLUResult.intent
Slot 여러 턴에 걸쳐 어떤 값을 수집하는가? 전역 slots + collect_slots
Policy 지금 어떤 처리가 필요한가? Global·Task·Post Policy
Executor 현재 node를 어떻게 실행하는가? General·Task·Skill Executor
Routing 최종적으로 어디로 이동하는가? TransitionEngine

공통 원칙:

  1. 흐름과 도메인 문구는 Scenario가 소유합니다.
  2. NLU 해석, Policy 판단, 응답 표현과 routing을 분리합니다.
  3. 종료와 재개는 명시적인 state와 transition으로 표현합니다.
  4. 최종 문장뿐 아니라 NLU, state와 routing을 함께 검증합니다.

단계별 기록

1. 실행 책임 분리

2. 대화 품질과 slot 정확도

3. 종료와 fallback 경계

4. 재개와 session 종료 권한

5. 런타임 프롬프트와 죽은 파라미터

현재 문서로 연결

과거 문제를 읽은 뒤 현재 동작은 아래 기준 문서에서 확인합니다.

주제 현재 기준 문서
전체 실행 구조 Architecture
한 턴의 함수 흐름 DSTManager
Fallback·Safety·Task 판단 Policy
Executor와 응답 생성 Executor
Node 이동과 종료 우선순위 Transition
Counter와 context field State
Scenario schema Scenario v2 작성 가이드
회귀 검증 Testing

기록을 읽는 방법

각 상세 문서의 코드 예시는 해당 시점의 snapshot입니다. 다음 항목은 특히 현재 코드와 다를 수 있습니다.

  • 기본 fallback retry 횟수
  • Policy와 Executor class 이름
  • Scenario field와 condition namespace
  • 종료 node와 transition 우선순위
  • Prompt source와 응답 template

현재 동작을 판단할 때는:

  1. 현재 테스트
  2. 현재 코드
  3. docs/graph_builder/docs/scenario/
  4. 이 Refactor 기록

순으로 확인합니다.