"한 번 더 검토하라"는 반성이 아니라면, 진짜 반성이란 무엇인가
← 전체 목차 · 이전: 같은 모델인데 대화는 멀쩡하고 Agent만 환각을 일으키는 이유는 무엇인가 · 다음: 표 QA는 LLM이 읽게 할까, 코드가 계산하게 할까?
"모델에게 답을 다시 한번 검토하게 한다"는 대부분의 사람이 반성이라고 믿는 것이지만, 실은 한 번 더 비싼 추론일 뿐이다. 판별 질문은 하나다: 이번에 고친 뒤 무언가가 남았는가? 오류 원인·수정 방안·회피 규칙이 어디에도 기록되지 않으면, 다음번 같은 입력은 똑같은 우회로를 또 탄다. 진짜 반성은 당장 고치기 + 사후 복기 + 영구 축적 + 다음번 회피가 전부 갖춰진 폐루프여야 한다.
단순 검토와 반성 폐루프의 차이
| 단순 검토 | 반성 폐루프 |
|---|
| 동작 | 모델이 스스로 한 번 더 점검, 답 수정 | 당장 고치기 → 사후 복기 → 영구 축적 → 다음번 회피 |
| 작용 범위 | 단발 출력 최적화 | 폐루프 능력, 작업을 넘나들며 유효 |
| 결과 | 하고 나면 사라짐, 경험이 남지 않아 다음에도 똑같이 틀림 | "왜 틀렸는지, 어떻게 고쳤는지, 다음엔 어떻게 안 틀릴지"를 기억하며 지속적으로 진화 |
Self-Refine — 즉시 반복 반성, 실시간 교정
Agent 최초 답 생성 / 도구 실행
↓
자동으로 "비평 검증" 모드 진입
↓
논리 허점 · 파라미터 오류 · 내용 환각 식별
↓
즉시 반복 재작성
↓
최대 반복 횟수 제한 → 기준 도달 시 즉시 종료
당장 실시간으로 단발 오류를 고치는 데 강하고, 질의응답·문안·코드 생성에 적합하다. 단점은 이번 결과만 최적화할 뿐 장기 경험을 축적하지 않는다는 것 — 당장 자가 점검은 하지만 자동으로 다음번 경험이 되지는 않는다.
Reflexion — 기억형 반성, 장기 진화
1. 작업 종료 후 전체 실행 궤적을 일괄 복기
2. 오류 원인을 추출
3. 최적 흐름을 정리
4. 범용 규칙을 축적
5. 장기 기억(벡터 장기 기억)에 기록
6. 다음번 유사 시나리오 → 이력 반성 경험을 우선 조회 → 근원에서 오류를 회피
사후 복기처럼 작동해 한 번의 교훈을 장기적으로 재사용 가능한 능력으로 바꾼다. 반성의 산출물이 "더 나은 답 하나"(Self-Refine)가 아니라 "재사용 가능한 규칙 하나"(Reflexion)라는 점이 핵심이며, 규칙은 작업·세션·사용자를 넘나들며 효과를 낸다.
반성 없는 Agent의 네 가지 생산 치명 약점
| # | 약점 | 표현 |
|---|
| 1 | 같은 함정에 계속 빠짐 | 도구 파라미터 오류, 규칙 이해 편차, 흐름 순서 착오가 매번 같은 시나리오에서 반복됨 |
| 2 | 출력 품질이 들쭉날쭉함 | 모델 단발 무작위 추론에만 의존, 검증·교정 메커니즘 없음 |
| 3 | 복잡 작업의 내결함성이 극히 낮음 | 다단계 긴 체인에서 한 스텝이 틀리면 스텝마다 틀림, 복기·수정 메커니즘 없이 그대로 붕괴 |
| 4 | 영원히 정적, 진화 불가 | 흐름과 능력이 고정, 아무리 써도 경험이 쌓이지 않음 |
생산급 계층 반성 방안
| 층 | 방안 | 트리거 대상 | 목적 |
|---|
| 1 | 경량 즉시 반성 | 질의응답, 문안, 단순 도구 호출 | 단발 검증·교정만: 환각·형식·규정 준수 검사, 비용을 통제하며 정확도만 올림 |
| 2 | 배치 사후 복기 | 복잡한 긴 작업, 실패 작업, 사용자 혹평 작업 | 실행 링크 복기 → 오류 유형 정리 → 범용 규칙 추출 → 장기 기억에 저장 |
| 3 | 반성 가중치 등급화 | 전체 작업, 결과별로 등급 부여 | 성공 작업은 가볍게, 실패 작업은 중점적으로, 고빈도 오류는 높은 가중치로 축적 |
| 4 | 안전망(제한 설정) | 반성 메커니즘 자체 | 최대 반복 횟수, 반성 타임아웃 임계값, 트리거 조건을 정해 간단한 작업은 반성을 덧대지 않고 복잡한 작업만 필요 시 깊게 복기 |
4층이 없으면 반성 자체가 새로운 장애 원인이 된다 — 상한 없는 반성은 토큰 폭증·인터페이스 눈사태·작업 정체로 이어진다.
결과 검증 → 오류 복기 → 반복 수정 → 축적 총괄, 4단계 실행 체인
| 단계 | 내용 |
|---|
| 결과 검증 | "사용자 목표"와 "현재 실행 결과"를 대조, 데이터 완전성·논리 정확성·답변 규정 준수 세 차원으로 공백 결과·오류 결과·잔결 결과를 식별 |
| 오류 복기 | 파라미터 오류인가 / 도구 선택 오류인가 / 검색 부족인가 / 논리 결손인가 / 컨텍스트 정보 부족인가 다섯 후보에서 근본 원인을 특정 |
| 반복 수정 | 근본 원인에 맞춰 파라미터 수정 / 도구 교체 / 검색 보완 / 스텝 재규획 중 대응 동작을 실행, 2차 실행 |
| 축적 총괄 | 오류 경험과 수정 논리를 장기 기억에 저장, 다음 동류 문제 발생 시 곧장 회피 |
덧붙이면, 3대 착지 시나리오는 도구 호출 교정(파라미터 자동 수정 후 재시도, 사람 개입 불필요), 추론 논리 교정(흐름을 다시 정리하고 빠진 단계를 보완), 답변 내용 교정(재검증 후 답을 재작성)이다.
핵심 통찰
- "다시 한번 검토하라"는 반성이 아니라 더 비싼 추론이다 — 반성인지 아닌지는 "무언가가 남았는가"로 판별한다. 오류 원인·수정 방안·회피 규칙이 남지 않으면 다음번 같은 입력이 같은 우회로를 또 탄다.
- 반성의 가치 단위는 "답 하나"가 아니라 "규칙 하나"다 — Self-Refine의 산출물은 더 나은 답이고, Reflexion의 산출물은 재사용 가능한 규칙이다. 규칙은 작업·세션·사용자를 넘나들며 효과를 내므로 여기가 한계 수익이 체증하는 지점이다. Agent가 진화하는지는 규칙 라이브러리의 증가량과 명중률로 판단해야지 단발 답변 품질로 판단하면 안 된다.
- 반성 자체가 비용이 드는 서비스이므로 서비스처럼 다스려야 한다 — 온라인 즉시 사고의 상당수는 반성을 안 해서가 아니라 반성에 경계가 없어서다. 최대 반복 횟수·타임아웃 임계값·트리거 조건이 없으면 단순 작업도 심층 복기에 빠져 순환 사고로 이어진다.
- 오류에는 가중치가 있고, 반성 자원은 가중치대로 분배해야 한다 — 성공 작업은 가볍게, 실패 작업은 중점적으로, 고빈도 오류는 높은 가중치로 축적한다. 전부 똑같이 무작정 반복하면 비싸고 정작 중요한 경험이 희석된다.
- 긴 체인 작업의 취약성은 곱셈식이지 덧셈식이 아니다 — 다단계 작업에서 한 스텝이 틀리면 스텝마다 틀리며, 롤백·복기 메커니즘이 없으면 앞의 작은 오류가 뒤에서 작업 붕괴로 증폭된다. 그래서 복잡 작업은 매 스텝 경량 검사가 아니라 전체 궤적을 사후에 통째로 복기하는 쪽이 맞다.
- 정적 Agent의 문제는 "덜 똑똑해서"가 아니라 "안 변해서"다 — 흐름과 능력이 고정된 시스템은 사용자가 아무리 많이 써도 아무 것도 쌓이지 않고, 업무가 바뀌면 전체가 어긋난다. 상용 가능성의 판단 기준은 "돌아가는가"가 아니라 **"실패 후 같은 실수를 반복하지 않는가"**다.
- 도구 능력은 출발선을 정하고, 반성 능력은 상한선을 정한다 — 자료를 찾고 인터페이스를 부르고 흐름을 실행하는 것은 입장권일 뿐이다. 실패에서 개선할 수 있는가가 진입 장벽이며, 이것이 "죽은 흐름 Demo"와 "상용 지능체"를 가르는 선이다.
엔지니어링 실전 Tips
- Self-Refine의 반복 조건에는 반드시 상한과 출구를 동시에 넣을 것: 기준 도달 시 즉시 종료가 없으면 모델이 자기 비평 속에서 무한히 맴돈다. 이것이 가장 흔한 시간 초과 정체의 원인이다.
- 심층 복기는 반드시 비동기·사후에 할 것: Reflexion의 자리는 작업 종료 후 전체 궤적을 일괄 복기하는 것이지, 메인 링크에 끼워 넣는 것이 아니다. 메인 링크에는 경량 검증만 남겨야 사용자 체감 지연이 통제된다.
- "사용자 혹평"을 공짜 트리거 신호로 쓸 것: 혹평 작업을 복잡 작업·실패 작업과 나란히 심층 반성 트리거 대상으로 두라. 혹평은 비용이 가장 낮고 신호 대 잡음비가 가장 높은 실패 라벨이다.
- 기억 라이브러리는 조회 가능해야지 기록만 되면 안 된다: 장기 기억은 벡터 장기 기억으로 저장하고 "다음 유사 시나리오에서 우선 조회"가 짝을 이뤄야 한다. 쓰기만 하고 안 읽는 기억 라이브러리는 로그와 다를 바 없다.
- 경험 항목에는 가중치를 주고 감쇠를 허용할 것: 고빈도 오류는 가중치를 높여 상단에 두고, 저빈도는 감쇠시킨다. 그렇지 않으면 일회성 우발 오류가 라이브러리를 부풀려 조회 품질을 떨어뜨린다.
- 분층의 반대말은 "전역 무작정 반복"이며 그 결과는 서비스 눈사태다: 자체 방안을 검토할 때 "심층 반성을 면제받은 작업이 있는가"를 직접 물어보라. 답이 안 나오면 분층이 안 된 것이다.
- 면접·설계 답변은 "구분 → 시나리오 → 다스림" 3단으로 갈 것: 단순 검토와 반성의 본질 차이(기억 축적 여부)를 먼저 말하고, Self-Refine과 Reflexion의 적용 시나리오를 말한 다음, 마지막으로 분층·안전망을 능동적으로 보충하라 — 세 번째 단이 가장 자주 빠지는 부분이다.