루프가 폭주하지 않게 — 가드레일
무한루프·비용 폭증·환각 누적을 막는 종료 조건, 반복 상한, 검증 게이트 등 루프 안전장치(가드레일) 설계를 다룹니다.
자동으로 도는 것의 대가
5~6장에서 우리는 루프에서 손을 뗐습니다. 사람이 매 바퀴를 누르지 않아도 도구가 알아서 돌게 만들었죠. 편합니다. 그런데 편한 만큼 위험도 같이 커집니다.
브레이크가 사라진다는 것
수동 루프는 결과가 이상하면 사람이 그 자리에서 멈춥니다. 자동 루프에는 그 브레이크가 없습니다. 밤사이 조용히 돌다가 아침에 사고를 확인하는 식이죠. 재시도가 끝없이 돌거나, 틀린 출력이 쌓이거나, 요금이 불어나 있거나.
반복 고유의 위험
이 시리즈의 형제 격인 AI 에이전트 만들기 7장도 "가드레일"을 다룹니다. 다만 그쪽은 도구를 실행하는 에이전트의 위험, 그러니까 위험한 명령이나 잘못된 API 호출을 막는 이야기입니다. 이 장의 초점은 다릅니다. 같은 작업을 여러 바퀴 반복하기 때문에 생기는 위험, 즉 멈추지 않는 루프와 스스로 만든 거짓이 불어나는 문제에 집중합니다.
실패 모드를 먼저 이름 붙이기
막으려면 먼저 무엇이 어떻게 터지는지 알아야 합니다. 자동 루프가 폭주하는 방식은 크게 넷입니다. 멈추지 않는 무한루프, 조용히 새는 비용, 거짓이 불어나는 환각 누적, 그리고 나아지지 않고 제자리를 도는 품질 정체. 이 넷을 한눈에 정리하면 이렇습니다.
| 실패 모드 | 증상 | 처방 |
|---|---|---|
| 무한루프 | 종료 지점을 못 찾고 계속 돎 | 횟수 상한 + 정체 종료 |
| 비용 폭증 | 호출이 쌓여 요금·한도 소진 | 총 호출/일일 실행 상한 |
| 환각 누적 | 지어낸 내용이 다음 바퀴 전제가 됨 | 매 바퀴 원본 고정 |
| 품질 정체 | 바퀴는 도는데 개선이 없음 | 개선폭 임계값 종료 |
무한루프 — 멈출 줄 모르는 루프
가장 흔한 사고입니다. 종료 조건이 없거나 애매하면 루프는 영원히 돕니다.
애매한 지시가 지뢰다
"만족스러울 때까지 고쳐 줘" 같은 지시가 대표적인 지뢰예요. AI는 "만족"의 기준을 모르니 멈출 지점을 못 찾습니다. 사람이라면 적당히 손을 털 지점을 알지만, 루프는 그 감각이 없습니다.
세 겹으로 못 박기
2장에서 종료 조건을 다뤘습니다. 여기선 그걸 안전장치로 못 박습니다. 품질 기준 하나만 믿지 말고, 반드시 "횟수 상한"을 겹쳐 거세요.
종료 조건 예시 (세 개를 함께 건다)
- 품질: 정해둔 체크리스트 3개를 모두 통과하면 멈춘다
- 상한: 통과 못 해도 4바퀴에서 무조건 멈춘다
- 정체: 직전 바퀴보다 나아진 게 없으면 "STOP"이라고 답하고 멈춘다
셋을 함께 걸면 어느 쪽으로든 반드시 멈춥니다. 품질 기준으로 잘되면 일찍 끝나고, 안 되면 상한에서 강제로 서고, 그 전에 개선이 멎으면 정체 조건이 잡아챕니다.
상한은 짧게
상한은 짧게 잡으세요. 대부분의 작업은 3~4바퀴 안에 개선이 멈추니 그 언저리면 충분합니다. 상한이 곧 안전벨트입니다.
검증 게이트 — 나쁜 출력을 다음 바퀴로 안 넘기기
루프의 진짜 위험은 오류가 눈덩이처럼 불어난다는 데 있습니다. 한 바퀴의 잘못된 결과가 다음 바퀴의 입력이 되면, 실수 위에 실수가 쌓입니다. 처음의 작은 오타 하나가 세 바퀴 뒤엔 문서 전체를 비틀어 놓기도 하죠.
바퀴 사이에 관문 세우기
그래서 바퀴와 바퀴 사이에 검증 게이트를 둡니다. "이 조건을 통과 못 하면 다음으로 못 넘어간다"는 관문입니다.
무엇을 볼 것인가
보통 세 가지를 봅니다.
- 형식 검증 필수 항목과 형식이 맞는가. 표를 만드는 루프라면 "필수 열 5개가 다 있는가"를 통과 조건으로 겁니다.
- 사실 검증 지어낸 수치나 출처는 없는가. "근거 없는 숫자가 있으면 통과 실패로 처리해"라고 못 박습니다.
- 안전 검증 민감정보나 금지어가 섞이지 않았는가. 고객 데이터를 다루는 루프라면 빠뜨리면 안 됩니다.
실패한 바퀴는 버린다
게이트를 통과 못 하면 그 바퀴 결과는 버립니다. 그리고 무엇이 부족했는지만 짚어 다시 생성하게 하죠. 나쁜 출력이 다음 바퀴의 발판이 되는 걸 여기서 끊는 겁니다.
노코드에도 이미 있었다
6장에서 넣었던 "최대 2회 재시도 후 사람에게"가 바로 이 게이트의 노코드 버전이었습니다. 개념은 같고, 도구만 달랐던 셈입니다.
환각 누적 — 거짓이 쌓이는 것
루프를 오래 돌리면 AI가 앞서 지어낸 내용을 "사실"로 착각하고 그 위에 더 쌓는 일이 생깁니다.
추측이 전제로 굳는 과정
2바퀴째의 그럴듯한 추측이 3바퀴째엔 확정된 전제가 되어버리는 식이죠. 처음엔 "약 30% 정도로 추정"이던 게 몇 바퀴 뒤엔 "정확히 30%"로 둔갑합니다. 무서운 건 교정 루프가 오히려 이걸 굳힌다는 점입니다. 스스로 다듬을수록 문장이 매끄러워지고, 매끄러운 거짓은 더 사실처럼 보입니다.
원본을 매 바퀴 다시 들이대기
막는 방법은 의외로 단순합니다. 매 바퀴 원본을 고정해 다시 들이대는 겁니다.
"네가 앞서 만든 요약 말고, 아래 원문을 기준으로 다시 확인해 줘. 원문에 없는 내용은 쓰지 마."
이렇게 붙들어 두면 AI가 자기 출력에 기대는 대신 원본으로 돌아옵니다.
검증 게이트와 짝을 이룬다
사실이 중요한 작업이라면 앞의 검증 게이트에 "출처 없는 수치는 삭제"를 함께 넣어두세요. 원본 고정이 새로운 거짓을 막고, 게이트가 이미 스며든 거짓을 걷어냅니다.
리서치 루프의 급소
특히 리서치 루프에서 중요합니다. 출처를 다루는 작업일수록 환각 한 줄이 결과 전체의 신뢰를 무너뜨리니까요. 이 장치는 8장 레시피에서 그대로 다시 씁니다.
품질 정체와 비용 — 조용히 새는 것들
폭주가 요란한 사고라면, 정체와 비용은 조용한 손실입니다.
도는데 나아지지 않을 때
바퀴는 도는데 결과가 제자리를 맴돌 때가 있습니다. 매번 표현만 조금 바뀌고 실질은 그대로인 경우죠. 이럴 땐 "직전 바퀴보다 나아진 점을 한 줄로 말하고, 없으면 STOP"을 조건으로 걸어 개선폭이 임계값 아래로 떨어지면 스스로 멈추게 합니다.
자동 루프는 조용히 돈을 쓴다
바퀴 수만큼 호출이 늘어나니, 잘못 걸린 무한루프는 하룻밤 새 요금 폭탄이 되기도 합니다. 무료 요금제라면 한도가 순식간에 바닥나고요.
실행 자체에 천장 걸기
그래서 실행 자체에 상한을 겁니다. 노코드 도구라면 "하루 실행 횟수"를, 코드라면 "총 호출 상한"을 걸어두세요. 6장에서 넣은 사람 검토 칸도 훌륭한 비용 방어선입니다. 애매한 것만 사람에게 넘기면, 불필요한 반복이 그 앞에서 걸러지거든요.
붙이기 전 훑는 체크리스트
루프를 자동으로 풀어놓기 전, 아래를 순서대로 확인하세요.
- 종료 조건이 품질·상한·정체 세 겹으로 걸려 있는가
- 반복 상한이 3~4바퀴 언저리로 짧게 잡혀 있는가
- 바퀴 사이에 형식·사실·안전 검증 게이트가 있는가
- 매 바퀴 원본을 다시 들이대 환각 누적을 막는가
- 총 호출 또는 일일 실행 상한이 걸려 있는가
- 애매한 판단은 사람에게 넘기는 통로가 있는가
정리하면 가드레일은 거창한 게 아닙니다. 종료 조건, 검증 게이트, 상한. 이 셋만 챙겨도 루프는 폭주하지 않고 안전하게 돕니다. 자동화의 편리함은 이 안전장치가 있어야 비로소 마음 놓고 누립니다.
다음 챕터에서는 지금까지 배운 걸 모아, 글쓰기·리서치·코딩·데이터 작업에 복사해서 바로 쓰는 완성형 루프 레시피 5종으로 시리즈를 마무리하겠습니다.
