Agent 실전

실수 방지 설계: 루프가 스스로 멈추게 하는 방법

Agent가 어떻게 교착 상태에 빠지는지 파악했다면, 다음 단계는 방어 설계입니다. 좋은 실수 방지는 3겹의 그물로, 시스템이 제어 불능 상태에 빠지지 않으면서 쉽게 포기하지도 않게 합니다.

세 가지 방어 전략
하드 리밋
어떤 상황에서도 작동하는 무조건적인 제동 장치
반복 횟수 상한
최대 루프 횟수를 설정하고(예: 50회), 도달하면 강제 중지합니다. 단순하지만 효과적인 마지막 방어선입니다.
펼치기
전체 타임아웃
작업 최대 실행 시간을 설정합니다(예: 3분). 몇 번을 돌았든 시간이 초과되면 중단하여 무한 리소스 점유를 방지합니다.
펼치기
도구별 호출 횟수 상한
동일 도구는 최대 N회 호출 가능(예: 동일 API 최대 5회). Agent가 특정 도구에 집착하는 것을 방지합니다.
펼치기
감지
실행 상태를 모니터링하고 비정상 패턴 발견 시 경보 발생
동일 파라미터 감지
동일 도구를 완전히 같은 파라미터로 N회 연속 호출하는지 확인합니다. 그렇다면 Agent가 제자리를 맴돌고 있는 것입니다.
펼치기
동일 도구 반복 감지
최근 N 라운드에서 동일한 도구만 호출되고 있는지 확인합니다. 그렇다면 집착 상태일 수 있으므로 다른 방법을 시도하도록 유도해야 합니다.
펼치기
수확 체감 감지
최근 몇 라운드의 산출물 증분을 비교합니다. 10 라운드를 실행했는데 새 내용이 50자 미만이면 비효율적인 공회전으로 판정합니다.
펼치기
다운그레이드
손상된 상태로 계속하거나 우아하게 종료, 즉각적인 중단은 최후 수단
수정 Prompt 주입
컨텍스트에 시스템 메시지를 주입합니다: "이미 3번 반복했습니다 — 다른 방법을 시도하세요." 모델이 스스로 전략을 조정하게 합니다.
펼치기
오류 도구 비활성화
특정 도구가 연속으로 실패할 때 사용 가능 목록에서 일시적으로 제거합니다. Agent가 다른 경로를 통해 작업을 완수하도록 강제합니다.
펼치기
현재 진행 상황 강제 요약
트리거 조건이 충족되면 Agent가 지금까지 한 일과 얻은 결과를 요약하고, 불완전한 진행 상황을 가지고 사용자에게 돌아가도록 강제합니다.
펼치기
세 겹 방어의 계층 관계

실수 방지는 하나의 벽이 아니라 세 겹의 그물입니다

다운그레이드 — 우아하게 계속, 가능한 한 작업 완수
이상 감지 → 자가 수정 시도
감지 — 신속 발견, 조기 경보
패턴 모니터링 → 다운그레이드 트리거
하드 리밋 — 최후의 백스톱, 절대 제어 불능 없음
무조건 제동 → 안전 보장
설계 원칙: 먼저 다운그레이드로 자가 수정 시도 → 자가 수정 실패 시 감지 레이어가 보고 → 최종적으로 하드 리밋이 백스톱.
대부분의 경우 Agent는 부드럽게 수정되어야 합니다. 강제 종료는 최후 수단입니다. 사용자 입장에서는 불완전한 결과를 가지고 돌아오는 것이 빈손으로 돌아오는 것보다 훨씬 낫습니다.
실수 방지는 하나의 벽이 아니라 세 겹의 그물입니다: 하드 리밋 백스톱, 감지 조기 경보, 다운그레이드로 계속. 좋은 방어 설계는 Agent가 제어 불능에 빠지지 않으면서 쉽게 포기하지도 않게 하여, 가능한 한 결과물을 가지고 돌아오게 합니다.