프롬프트 체이닝으로 LLM 응답 품질 개선하기
문제 상황
사내 문서 요약 도구를 만들면서 Claude에게 "문서를 읽고 핵심 내용을 추출한 뒤 3줄 요약과 액션 아이템을 작성하라"는 단일 프롬프트를 사용했다. 결과물이 매번 달랐고, 때로는 요약이 빠지거나 액션 아이템이 모호했다.
프롬프트 체이닝 적용
작업을 3단계로 분리했다.
1단계: 핵심 내용 추출
다음 문서에서 핵심 사실과 의사결정 내용만 추출해주세요.
불필요한 배경 설명은 제외하고, bullet point로 나열하세요.
2단계: 요약 생성
위에서 추출한 내용을 바탕으로 3줄 요약을 작성하세요.
각 문장은 한 가지 주제만 다루어야 합니다.
3단계: 액션 아이템 도출
추출된 핵심 내용에서 실행 가능한 액션 아이템을 찾아주세요.
담당자, 기한, 구체적 행동이 명확한 것만 포함하세요.
구현
Node.js로 간단히 구현했다.
const Anthropic = require('@anthropic-ai/sdk');
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
async function chainPrompts(document) {
// 1단계
const extraction = await client.messages.create({
model: 'claude-3-5-sonnet-20250219',
max_tokens: 1024,
messages: [{
role: 'user',
content: `다음 문서에서 핵심 사실과 의사결정 내용만 추출해주세요:\n\n${document}`
}]
});
const keyPoints = extraction.content[0].text;
// 2단계
const summary = await client.messages.create({
model: 'claude-3-5-sonnet-20250219',
max_tokens: 512,
messages: [{
role: 'user',
content: `다음 내용을 3줄로 요약하세요:\n\n${keyPoints}`
}]
});
// 3단계
const actions = await client.messages.create({
model: 'claude-3-5-sonnet-20250219',
max_tokens: 512,
messages: [{
role: 'user',
content: `다음에서 액션 아이템을 도출하세요:\n\n${keyPoints}`
}]
});
return {
summary: summary.content[0].text,
actions: actions.content[0].text
};
}
결과
- 응답 일관성이 눈에 띄게 향상됨
- 각 단계별 출력을 검증하기 쉬워짐
- API 비용은 약 2배 증가했지만 품질 개선이 더 중요했음
- 중간 결과를 캐싱하면 비용 최적화 가능
교훈
복잡한 작업은 하나의 프롬프트로 해결하려 하지 말고, 단계를 나눠서 처리하는 게 답이었다. 각 단계의 출력이 다음 단계의 입력이 되도록 설계하면 LLM이 더 집중된 결과를 낸다.