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