Self-Refine: 반복적 자기 개선
같은 모델에게 피드백을 요청하고, 그 피드백을 바탕으로 답변을 반복 개선합니다
2026년 2월 1일·5 min read·
ai
ai-agent
llm
self-refine
iteration
improvement
반복적 자기 개선
개념
Self-Refine은 같은 모델에게 피드백을 요청하고, 그 피드백을 바탕으로 답변을 반복 개선하는 기법입니다.
동작 구조
생성 (Generation)
↓
피드백 요청 (같은 모델에게)
↓
개선 (Refinement)
↓
더 나아졌는가?
├─ 아니오 → 반복
└─ 예 → 최종 답변
예시
[1차 생성]
"AI는 높은 지능을 보유하고 있다."
[피드백 요청]
"위 문장에서 개선할 점을 지적해주세요."
[피드백]
"'높은 지능'의 범위가 모호합니다.
어떤 종류의 지능인지 구체화가 필요합니다."
[2차 개선]
"인공지능은 자연어 처리 및 이미지 인식에서
인간 수준의 성능을 달성했다."
[최종 평가]
"훨씬 구체적이고 명확합니다. ✓"
코드 리팩토링 예시
[1차 생성]
def calc(a, b, c):
return a + b * c
[피드백 요청]
"위 코드에서 개선할 점을 지적해주세요."
[피드백]
1. 함수명이 모호함 (calc → ?)
2. 매개변수명이 불명확함
3. 연산 우선순위가 명시적이지 않음
[2차 개선]
def calculate_total_with_multiplier(base, quantity, multiplier):
"""기본값에 (수량 × 배수)를 더한 총합을 계산합니다."""
return base + (quantity * multiplier)
[피드백]
훨씬 명확합니다. ✓
Reflexion과의 차이
| Reflexion | Self-Refine | |
|---|---|---|
| 트리거 | 실패 후 반성 | 지속적 개선 |
| 실패 신호 | 명확한 실패 필요 | 실패 없이도 개선 |
| 메모리 | 장기 메모리에 저장 | 즉시 반영 |
| 적용 분야 | 코딩, QA | 글쓰기, 요약 |
핵심 차이
Reflexion:
시도 → 실패 → "왜 실패했나?" → 개선
Self-Refine:
시도 → "더 좋게 할 수 있나?" → 개선
적용 분야
Self-Refine은 "정답이 명확하지 않은" 작업에 특히 유용합니다:
| 분야 | 예시 |
|---|---|
| 글쓰기 | 에세이, 이메일, 보고서 |
| 코드 품질 | 리팩토링, 가독성 개선 |
| 요약 | 문서 요약, 핵심 추출 |
| 번역 | 자연스러운 표현 |
동작 알고리즘
def self_refine(task, max_iterations=3):
# 1차 생성
output = llm.generate(task)
for i in range(max_iterations):
# 피드백 요청
feedback = llm.generate(
f"다음 결과물의 개선점을 지적해주세요:\n{output}"
)
# 개선 필요 여부 판단
if "개선 불필요" in feedback or "충분합니다" in feedback:
break
# 피드백 기반 개선
output = llm.generate(
f"피드백: {feedback}\n"
f"기존 결과: {output}\n"
f"피드백을 반영하여 개선해주세요."
)
return output
피드백 품질 향상
구체적인 피드백 요청
[나쁜 예]
"개선점을 알려주세요."
[좋은 예]
"다음 관점에서 개선점을 지적해주세요:
1. 명확성: 독자가 쉽게 이해할 수 있는가?
2. 구체성: 추상적인 표현이 있는가?
3. 문법: 문법적 오류가 있는가?
4. 구조: 논리적 흐름이 자연스러운가?"
역할 지정
"당신은 10년 경력의 기술 문서 편집자입니다.
다음 문서의 개선점을 전문가 관점에서 지적해주세요."
종료 조건
Self-Refine의 종료 조건 설정:
| 방법 | 설명 |
|---|---|
| 고정 반복 | 3회 반복 후 종료 |
| 피드백 기반 | "충분합니다" 응답 시 종료 |
| 변화량 | 개선 폭이 작으면 종료 |
| 점수 기반 | 품질 점수가 임계값 초과 시 종료 |
한계
- 주관적 판단: 모델 자체의 편향에 의존
- 과도한 수정: 불필요한 변경 가능
- 무한 루프: 종료 조건 설정 필요
- 팩트 검증 불가: CRITIC 필요
CRITIC과의 조합
팩트 확인이 필요한 경우:
Self-Refine (품질 개선)
↓
CRITIC (팩트 검증)
↓
최종 결과
관련 개념
- Reflexion: 실패 기반 학습
- CRITIC: 외부 도구 검증
- Multi-Agent Debate: 다른 에이전트의 피드백