에이전트 루프
모델이 한 번 응답을 생성하고 끝나는 단순 호출과 달리, 환경에서 받은 피드백을 다음 입력으로 되먹여 스스로 멈출 때까지 관찰 → 추론 → 행동을 반복하는 실행 구조입니다. 기준 시점: 2026-10
왜 필요한가
단순 LLM 호출은 입력을 한 번 받아 출력을 한 번 내놓는 것으로 끝입니다. 중간에 툴을 호출해 얻은 결과가 잘못되었거나 부족해도, 모델이 그 사실을 알고 다시 시도할 방법이 없습니다.
에이전트 루프는 매 단계마다 툴 실행 결과나 코드 실행 결과 같은 "환경의 응답"을 모델에 다시 넣어줘서, 모델이 자신의 이전 행동이 맞았는지를 그 결과로 판단하게 만듭니다. 이 피드백이 있어야 모델은 계획을 수정하거나 실패를 인지하고 재시도할 수 있습니다. 질의응답처럼 한 번의 출력으로 끝나는 작업에는 이 반복이 필요 없고, 여러 단계의 중간 결과를 봐야 다음 행동을 정할 수 있는 작업에만 루프가 의미를 가집니다.
동작 과정
[단순 LLM 호출]
입력 ──▶ 모델 ──▶ 출력 (한 번에 끝)
[에이전트 루프]
┌─────────────────────────┐
▼ │
입력 ──▶ 관찰(Observe) ──▶ 추론(Reason) ──▶ 행동(Act)
│ │
│ 종료 조건 미충족 │ 툴 호출, 코드 실행 등
└───────────────◀───────────────────┘
환경 피드백(실행 결과)을
다음 관찰 입력으로 되먹임
종료 조건 충족 시 루프 탈출 ──▶ 최종 출력
한 턴의 흐름은 다음과 같습니다.
- 관찰: 사용자 요청과, 있다면 이전 행동의 실행 결과를 입력으로 받는다
- 추론: 지금 상태에서 무엇을 해야 하는지 모델이 판단한다
- 행동: 툴 호출, 코드 실행 등 환경에 영향을 주는 동작을 수행한다
- 행동의 결과가 다음 턴의 관찰 입력이 되어 1로 돌아간다
- 종료 조건을 만족하면 루프를 빠져나와 최종 응답을 반환한다
종료 조건
루프는 스스로 멈추지 않으면 끝나지 않습니다. 실무에서 흔히 쓰는 종료 조건은 다음과 같습니다.
- 작업 완료 판단: 모델이 스스로 "목표를 달성했다"고 판단해 더 이상 행동을 생성하지 않는 경우
- 최대 반복 횟수: 턴 수나 툴 호출 횟수에 상한을 두어, 모델이 완료를 판단하지 못해도 강제로 종료
- 사람 개입 지점: 되돌리기 어려운 행동이나 불확실한 분기 앞에서 루프를 멈추고 승인을 기다림
최대 반복 횟수 같은 상한이 없으면 모델이 같은 실패를 반복하며 툴 호출만 계속 쌓는 상황을 막을 수 없습니다.
단순 LLM 호출과의 경계
둘을 가르는 기준은 "누가, 몇 번 판단을 내리는가"입니다.
- 단순 LLM 호출: 입력 한 번에 출력 한 번. 중간 결과를 모델에 되돌려줄 지점이 없다
- 에이전트 루프: 모델이 직접 다음 행동을 정하고, 그 행동의 결과를 받아 다시 판단한다. 각 단계마다 모델이 스스로 제어 흐름을 결정한다
툴을 호출하더라도 호출 순서와 횟수가 코드에 미리 정해져 있다면(고정된 파이프라인), 그 결과를 모델이 다시 보고 다음 행동을 바꾸지 않는 한 에이전트 루프라고 보기 어렵습니다. 핵심은 모델이 매 단계 환경 피드백을 보고 스스로 다음 수를 정한다는 점입니다.
핵심 정리
- 단순 호출은 입력-출력 1회, 에이전트 루프는 관찰-추론-행동을 환경 피드백과 함께 반복
- 루프를 도는 이유는 중간 결과를 모델이 직접 보고 다음 행동을 바꿀 수 있어야 하기 때문
- 종료 조건(완료 판단, 최대 반복 횟수, 사람 개입 지점) 없이는 루프가 무한히 돌 수 있다
- 모델이 매 단계 스스로 제어 흐름을 정하는지가 고정된 파이프라인과의 경계