AI Agents는 어떻게 동작하는가.

AI Agent가 task를 받고, 도구를 사용하며, 결과를 다시 판단하는 기본 루프에 대한 짧은 정리.

AI Agent는 결국 유저에게서 task를 받고, 그 task를 달성하기 위해 가능한 수단을 동원하는 시스템이다.

단순히 한 번 답변을 생성하고 끝나는 것이 아니라, 목표를 향해 계속 상태를 갱신한다. 현재 상황을 보고, 필요한 행동을 고르고, 도구를 실행하고, 그 결과를 다시 다음 판단의 입력으로 넣는다. 이 흐름이 반복되면서 agent는 task에 가까워진다.

ReAct Loop

많은 agent는 ReAct loop에 가까운 방식으로 동작한다.

  1. 현재 목표와 컨텍스트를 읽는다.
  2. 다음에 해야 할 행동을 판단한다.
  3. 필요한 도구를 호출한다.
  4. 도구의 결과를 관찰한다.
  5. 그 결과를 다음 루프의 컨텍스트로 다시 넣는다.

이 과정에서 agent는 단순한 텍스트 생성기가 아니라, 생각하고 행동하고 관찰하는 작은 실행 루프처럼 움직인다.

User Input

모든 판단을 agent가 혼자 끝낼 수 있는 것은 아니다.

중간에 유저의 확인이 필요한 순간이 있다. 예를 들어 위험한 변경을 하기 전, 선택지가 여러 개라 의도가 불분명할 때, 혹은 외부로 무언가를 보내야 할 때 agent는 멈춰서 유저에게 입력을 요청한다.

좋은 agent는 모든 것을 자동화하려고만 하지 않는다. 멈춰야 할 때 멈추고, 확인해야 할 때 확인한다.

Harness

AI Agent는 보통 LLM 하나만으로 동작하지 않는다. LLM을 감싸는 harness가 있고, 이 harness가 agent의 실행 환경을 만든다.

대표적인 구성 요소는 다음과 같다.

  • 메모리 관리
  • 컨텍스트 관리
  • 다양한 LLM provider 지원
  • tools 호출
  • user input 처리
  • commands 실행
  • sandbox 또는 격리 환경
  • eval과 품질 측정

LLM은 판단과 생성을 담당하지만, harness는 그 판단이 실제 작업으로 이어질 수 있게 실행 구조를 제공한다.

배울 수 있는 예시

이런 구조는 Smolagents나 Pi Coding Agent 같은 프로젝트를 통해 살펴볼 수 있다.

작은 agent 구현을 직접 읽어보면, agent가 거대한 마법이 아니라 꽤 명확한 실행 루프라는 것을 알 수 있다. task, context, tool, observation, user input이 어떻게 연결되는지 보면 agent의 동작 방식이 훨씬 구체적으로 보인다.