프롬프트 체인 패턴으로 복잡한 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% 이상 개선되었다.
중간 결과를 로깅하면서 어느 단계에서 문제가 발생했는지 명확히 파악할 수 있게 된 것도 큰 장점이었다. 프롬프트 엔지니어링도 결국 소프트웨어 설계 원칙과 같다는 걸 다시 확인했다.