에이전트 루프

모델이 한 번 응답을 생성하고 끝나는 단순 호출과 달리, 환경에서 받은 피드백을 다음 입력으로 되먹여 스스로 멈출 때까지 관찰 → 추론 → 행동을 반복하는 실행 구조입니다. 기준 시점: 2026-10

왜 필요한가

단순 LLM 호출은 입력을 한 번 받아 출력을 한 번 내놓는 것으로 끝입니다. 중간에 툴을 호출해 얻은 결과가 잘못되었거나 부족해도, 모델이 그 사실을 알고 다시 시도할 방법이 없습니다.

에이전트 루프는 매 단계마다 툴 실행 결과나 코드 실행 결과 같은 "환경의 응답"을 모델에 다시 넣어줘서, 모델이 자신의 이전 행동이 맞았는지를 그 결과로 판단하게 만듭니다. 이 피드백이 있어야 모델은 계획을 수정하거나 실패를 인지하고 재시도할 수 있습니다. 질의응답처럼 한 번의 출력으로 끝나는 작업에는 이 반복이 필요 없고, 여러 단계의 중간 결과를 봐야 다음 행동을 정할 수 있는 작업에만 루프가 의미를 가집니다.

동작 과정

[단순 LLM 호출]
입력 ──▶ 모델 ──▶ 출력        (한 번에 끝)

[에이전트 루프]
          ┌─────────────────────────┐
          ▼                         │
입력 ──▶ 관찰(Observe) ──▶ 추론(Reason) ──▶ 행동(Act)
          │                                   │
          │   종료 조건 미충족                 │ 툴 호출, 코드 실행 등
          └───────────────◀───────────────────┘
                   환경 피드백(실행 결과)을
                   다음 관찰 입력으로 되먹임

          종료 조건 충족 시 루프 탈출 ──▶ 최종 출력

한 턴의 흐름은 다음과 같습니다.

  1. 관찰: 사용자 요청과, 있다면 이전 행동의 실행 결과를 입력으로 받는다
  2. 추론: 지금 상태에서 무엇을 해야 하는지 모델이 판단한다
  3. 행동: 툴 호출, 코드 실행 등 환경에 영향을 주는 동작을 수행한다
  4. 행동의 결과가 다음 턴의 관찰 입력이 되어 1로 돌아간다
  5. 종료 조건을 만족하면 루프를 빠져나와 최종 응답을 반환한다

종료 조건

루프는 스스로 멈추지 않으면 끝나지 않습니다. 실무에서 흔히 쓰는 종료 조건은 다음과 같습니다.

최대 반복 횟수 같은 상한이 없으면 모델이 같은 실패를 반복하며 툴 호출만 계속 쌓는 상황을 막을 수 없습니다.

단순 LLM 호출과의 경계

둘을 가르는 기준은 "누가, 몇 번 판단을 내리는가"입니다.

툴을 호출하더라도 호출 순서와 횟수가 코드에 미리 정해져 있다면(고정된 파이프라인), 그 결과를 모델이 다시 보고 다음 행동을 바꾸지 않는 한 에이전트 루프라고 보기 어렵습니다. 핵심은 모델이 매 단계 환경 피드백을 보고 스스로 다음 수를 정한다는 점입니다.

핵심 정리

참고

CSLOG에서 보기