프롬프트 체인 패턴으로 복잡한 AI 작업 분해하기

문제 상황

사내 문서 자동 생성 도구를 개발하면서, 하나의 긴 프롬프트로 모든 작업을 처리하려다 일관성 없는 결과물이 나오는 문제가 있었다. 특히 기술 스펙 문서 작성 시 구조 분석, 내용 생성, 포맷팅이 뒤섞이면서 품질이 들쭉날쭉했다.

체인 패턴 적용

복잡한 작업을 명확한 단계로 분리하는 프롬프트 체인 패턴을 적용했다.

class PromptChain {
  async execute(input) {
    // 1단계: 구조 분석
    const structure = await this.analyzeStructure(input);
    
    // 2단계: 섹션별 내용 생성
    const sections = await this.generateSections(structure);
    
    // 3단계: 통합 및 포맷팅
    const document = await this.formatDocument(sections);
    
    return document;
  }
  
  async analyzeStructure(input) {
    const prompt = `다음 요구사항을 분석하여 문서 구조를 JSON으로 출력:
${input}

출력 형식: {"sections": [{"title": "", "type": ""}]}`;
    return await callLLM(prompt);
  }
}

개선 효과

각 단계마다 검증 로직을 추가할 수 있어서 오류 추적이 용이해졌다. 특정 단계만 수정하거나 재실행할 수 있어 비용도 절감되었다. 무엇보다 각 프롬프트가 단일 책임을 가지면서 결과물의 일관성이 80% 이상 개선되었다.

중간 결과를 로깅하면서 어느 단계에서 문제가 발생했는지 명확히 파악할 수 있게 된 것도 큰 장점이었다. 프롬프트 엔지니어링도 결국 소프트웨어 설계 원칙과 같다는 걸 다시 확인했다.