AI Agents는 어떻게 동작하는가.
AI Agent가 task를 받고, 도구를 사용하며, 결과를 다시 판단하는 기본 루프에 대한 짧은 정리.
AI Agent는 결국 유저에게서 task를 받고, 그 task를 달성하기 위해 가능한 수단을 동원하는 시스템이다.
단순히 한 번 답변을 생성하고 끝나는 것이 아니라, 목표를 향해 계속 상태를 갱신한다. 현재 상황을 보고, 필요한 행동을 고르고, 도구를 실행하고, 그 결과를 다시 다음 판단의 입력으로 넣는다. 이 흐름이 반복되면서 agent는 task에 가까워진다.
ReAct Loop
많은 agent는 ReAct loop에 가까운 방식으로 동작한다.
- 현재 목표와 컨텍스트를 읽는다.
- 다음에 해야 할 행동을 판단한다.
- 필요한 도구를 호출한다.
- 도구의 결과를 관찰한다.
- 그 결과를 다음 루프의 컨텍스트로 다시 넣는다.
이 과정에서 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의 동작 방식이 훨씬 구체적으로 보인다.