Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

AI 에이전트 시작하기

Cursor, Claude Code, Codex를 사용하여 코드를 작성하고, 코드를 검색하고, 파일을 편집하고, 테스트가 통과할 때까지 반복 실행하는 모습을 지켜본 적이 있다면 이미 AI 에이전트를 사용해 본 것이다. AI 에이전트들은 다영한 형태를 갖고 있지만, 공통적인 특징이 있다. 질문하면 답변하는 대화 방식이 아니라 자체적으로 실행 단계를 계획하고, 각 작업에 필요한 도구를 호출하여 결과가 나오게 만들고, 그 과정속에 전략을 조정한다. AI 에이전트는 컴퓨터와 상호 작용하는 새로운 방식이다.

현대 에이전트 = LLM + Context + 도구

현대 에이전트 시스템의 핵심은 공식 하나로 표현될 수 있다.

에이전트 = LLM + Context + 도구

에이전트는 추론 엔진 + 작업 컨텍스트 + 액션 인터페이스의 조합이다. 모델은 추론하고 결정을 내리고, 컨텍스트는 이런 결정에 필요한 정보들을 제공하고, 도구는 결정이 외부 세계에 영향을 미치는 인터페이스를 제공한다.

직관에이전트 구성요소역할
추론 엔진LLM현재 정보를 바탕으로 가능한 모든 선택지 중에서 가장 적절한 행동을 선택하며 "다음에 무엇을 해야 할지"를 결정하는 의사결정 논리
업무 환경Context에이전트가 이용할 수 있는 모든 정보, 즉 에이전트가 관찰하고, 읽고, 기억할 수 있는 정보와 접근할 수 있는 시스템에 대한 정보
액션 인터페이스도구에이전트가 수행할 수 있는 모든 작업, 즉, 메시지 전송부터 코드 실행, 인터페이스 제어에 이르기까지 사용 가능한 모든 수단을 설명

다음은 다양한 유형의 에이전트가 위에서 언급한 세 가지와 어떻게 다른지 비교해본다.

에이전트 제품업무 환경액션 인터페이스전략
코딩 에이전트요구사항 문서, 코드 리포, 터미널 환경개방형 과제(내부 추론, 코드 검색, 읽기/쓰기, 명령어 실행 등)점진적 개발: 요구사항 이해 -> 관련 코드 검색 -> 코드 수정 -> 테스트 및 검증 -> 디버깅 및 수정
검색 에이전트웹 자료, 학술 데이터베이스, 로컬 파일개방형 문제(내부 추론, 검색 쿼리, 웹 읽기, 요약 생성)반복적 심화: 기존 정보를 바탕으로 검색 방향을 조정하고, 점진적으로 완전한 보고서를 종합한다.
컴퓨터 제어 에이전트컴퓨터 화면, 브라우저 페이지, 파일 시스템개방형(내부 추론, 입력, 클릭, 스크롤, 스크린샷, 코드 실행 등)시각적 인지 + 조작: 화면 관찰 -> 목표 요소 식별 -> 동작 수행 -> 결과 확인
전화 도우미 상담원휴대폰 화면, 설치된 앱개방형(내부 추론, 클릭, 스와이프, 타이핑, 앱 실행 등)의도 파악 + 앱 제어: 사용자 요구사항 파악 -> 대상 앱 찾기 -> 작업 수행 -> 완료 확인
개인 작업 에이전트사용자 계정 정보, 과거 청구서, 서비스 제공업체 지식 기반개방형 과제(내부 추론, 전화 걸기, 이메일 보내기, 양식 작성, 사용자 확인)단계별 작업 실행: 정보 수집 -> 협상 전략 수립 -> 서비스 제공업체 연락 -> 협상 -> 결과보고

이런 시스템들은 세 가지 공통된 특징을 가지고 있다.

  1. 고정된 세트에서 선택하는 것이 아니라 임의의 자연어와 코드를 생성할 수 있는 개방적인 실행 공간이다.

  2. 행동하기 전에 계획을 세우는 내부 추론 기능이다.

  3. 피드백에 따라 전략을 조정하는 지속적인 상호 작용 기능이다.

이런 기능들은 추론 엔진, 작업 컨텍스트 그리고 액션 인터페이스 즉, LLM, Context, 도구의 상호 작용에서 비롯된다.

도구: 에이전트의 액션 인터페이스

도구는 에이전트와 외부 세계를 연결하는 다리 역할을 한다. 도구를 통해 에이전트는 수동적인 관찰자에서 검색, 파일 작성, 코드 실행, API 호출, 메시지 전송, 인터페이스 조작 등을 수행할 수 있느 능동적인 시스템을 변모한다. 도구가 없다면 에이전트는 텍스트 생성에만 국한되게 되고, 도구를 사용하면 외부 시스템에 대한 조작이 가능해진다.

에이전트가 세상과 상호작용하는 방향에 따라 5가지 유형으로 도구를 분류할 수 있다. 각 유형의 대표적인 시나리오를 살펴보자.

  1. 인지 도구: 에이전트가 정보에 접근할 수 있게 해준다. 검색 엔진은 실시간 웹 데이터를 제공하고, 파일 시스템은 로컬 문서를 읽으며, API와 데이터베이스는 외부 서비스 및 기업 핵심 데이터에 연결된다.

  2. 실행 도구: 에이전트가 외부 시스템에서 작업을 수행할 수 있게 해준다. 코드 실행, 파일 작업, 시스템 명령 및 외부 API 호출을 통해 구체적인 행동으로 옮길 수 있다.

  3. 협업 도구: 에이전트가 다른 에이전트와 작업을 분담할 수 있다. 예를 들어, 전문적인 작업을 서브 에이전트에게 위임하거나, 주요 의사 결정 지점에서 사람의 확인을 요청하거나, 다중 에이전트 시스템에서 작업을 조정할 수 있다.

  4. 이벤트 트리거 도구: 에이전트가 직접 호출하는 것이 아니라, 외부 입력으로 전달되어 에이전트가 작업을 시작하도록 트리거하는 역할을 한다. 예를 들어 새로운 이메일이 수신되거나, 예약된 시간이 도래하거나, 다른 시스템에서 웹훅 콜백이 발생하는 경우, 이러한 이벤트가 에이전트를 활성화하고 추론 및 조치를 시작하게 한다. 에이전트를 도구를 직접 호출하지는 않지만, 외부 세계와 상호 작용하는 채널 역할을 하므로 포괄적인 도구 시스템에 포함된다.

  5. 사용자 커뮤니케이션 도구: 에이전트와 사용자가 소통하는 채널이다. 실행 도구가 외부 세계를 변화시키는 반면, 커뮤니케이션 도구는 정보를 전달한다. 즉, 문자 메시지, 음성 통화, 이메일 등을 통해 에이전트의 진행 상황이나 사전에 점검할 메시지를 전달하는 역할을 한다.

그외 함수 호출이 있는데, 이것은 LLM 에이전트의 핵심 기능이다. 이 기능을 통해 모델은 구조화된 방식으로 외부 도구를 호출할 수 있으며, LLM을 단순한 텍스트 생성기에서 외부 인터페이스를 통해 작동할 수 있는 지능형 시스템으로 변화시킨다.

날씨를 조회하기 위한 API 수준의 4단계 프로세스를 간략하게 표현하면 아래와 같다.

1단계: 도구 정의
모델이 사용할 수 있는 외부 도구(함수)의 이름과 입력 매개변수 형식을 정의하여 전달한다.
tools: [{
  name:"get_weather",
  parameters: {
    city:"string"
  }
}]

2단계: 도구 호출 결정
사용자의 요청을 분석 한 후, 필요한 도구를 실행하기 위해 함수 이름과 인수를 지정하여 요청.
assistant: {
  tool_calls" [{
    function: "get_weather",
    arguments: {city:"Seoul"}
  }]
}

3단계: 실행 결과를 대화에 추가
시스템이 실제로 해당 외부 API나 함수를 실행하고, 그 결과값을 다시 AI의 대화 문맥(Context)에 전달.
tool: {
  tool_call_id:"call_1",
  content:'{"temp":28, "sky":"clear"}'
}

4단계: 최종 응답 생성
전달받은 실행 결과를 바탕으로 사용자가 이해하기 쉬운 최종 답변을 작성하여 응답.
assistant: {
  content: "오늘 서울 날씨는 28°C."
}

개발자는 도구를 정의하고 호출을 실행하기만 하면 된다. 모델 자체가 호출 여부, 호출할 도구, 전달할 인수를 결정한다.

에이전트용 도구를 설계할 때는 범용성을 유지하고 LLM에 유연성을 제공해야 한다. 예를 들어 이런것이다. 작업 노트를 기록하는 도구 대신에 파일 읽기/쓰기 도구를 제공하고, 숫자 계산을 위한 전용 계산기 대신에 파이썬 코드 인터프리터를 제공한다. 범용 도구를 통해 에이전트는 기본적인 기능을 조합하여 문제를 창의적으로 해결할 수 있다.