헷개정 - 헷갈리는 개념 정리/더 탐구해보쟛!

Agentic AI 탐구일지 2편: Tools는 뭐야?

cch8ii 2025. 11. 11. 12:19

지금까지 살펴본 AI Agent에 대해 이렇게 정리할 수 있을 것이다. 

 

일반 ChatGPT AI Agent
질문 → 답변 목표 → 계획 → 실행 → 검증 → 결과
사람이 계속 지시 스스로 다음 행동 결정
텍스트만 출력 실제 작업을 수행
1회성 반복 자동화

 

 

AI Agent 를 어떻게 사용하는지 알아보기 전에 AI Agent가 어떤 식으로 실행되는지에 대해 이해할 필요가 있다. 

 

Tools

LLM이 학습한 데이터 외에 다른 기능을 수행하려면 Ai Agent는 쿼리에 알맞는 tool을 사용할 줄 알아야 한다. 예를 들면 이러한 tool 들이 있을 것이다. 

  • 웹 검색: 인터넷에서 최신 정보를 가져오는 tool
  • 이미지 생성: 텍스트 설명을 기반으로 이미지를 생성하는 tool
  • 검색: 특정 외부 소스에서 정보를 검색하는 tool
  • API 인터페이스: 외부 API와 상호작용하는 tool
  • ... 등등

출처: https://huggingface.co/learn/agents-course/en/unit1/tools

tool을 사용하게 된다면 기존 LLM만으로 답변할 수 없어 정보를 제공하지 않거나 할루시네이션으로 잘못된 정보를 제공하지 않고 올바른 tool을 골라 답변할 수 있게 된다. 

 

Tools를 AI Agent에게 넘겨줄 땐 다음과 같은 것이 포함되어야 한다. 

  1. 함수의 기능에 대한 텍스트 설명: AI가 무슨 tool인지 알아야 실행할 수 있기 때문이다. 
  2. 작업을 수행할 수 있는 객체: 진짜 호출했을 때 실행이 가능해야 한다. 
  3. 입력값에 대한 정의: 입력값에 대한 정의가 있어야 명확한 입력값이 들어간다. 

좀 더 자세히 살펴보자. 

만약 사용자가 '2*4는 뭐야?' 라고 묻는다면 이에 맞는 tool을 호출해야 한다. 

def calculator(a: int, b: int) -> int:
    """Multiply two integers."""
    return a * b
    

Tool Name: calculator, Description: Multiply two integers., Arguments: a: int, b: int, Outputs: int

위와 같이 tool을 정의해둔다면 모델은 이를 tool로 인식하고 입력으로 전달해야 할 내용과 출력으로 나올 내용을 알게 된다. 

우리가 AI Agent하면 LangChain이나 LangGragh를 많이 듣는데 여기서 tool을 등록한다는 것이 이 말인 것이다. 이렇게 각 tool이 어떤 역할을 하고 어떤 입출력을 가진다를 정의해두면 AI Agent는 필요하나 tool을 선택해 실행할 수 있게 되는 것이다. 

 

(LangChain이나 LangGragh는 나중에 개념을 다 훑은 후에 정리해보도록 하겠다. 지금은 단지 AI Agent를 만들기 위한 구현 도구? 라고만 이해하면 좋을 것 같다.)

 

Tools를 어떻게 호출해?

일단 먼저 LLM이 무슨 작업이 필요한지 생각한 후 그에 맞는 tool을 찾아서 호출하면 끝이다! 그 tool이 작업을 수행하고 결과를 반환하면 결과를 LLM이 받아서 후속 행동을 결정하는 것이다. 

 

하지만 여기서 문제가 발생한다. 

막상 굉장히 간단할 것 같지만 실제 개발을 할 때에는 구현 프레임워크마나 tool 등록/호출 방식이 달라서 같은 tool을 여러 곳에 붙이려면 재사용이 어려웠다. 또한 Chat GPT API를 쓰다가 내부 LLM으로 바꾸면 또 함수의 스키마를 바꿔야 했다. ~ 했기 때문이다. 

또한 

MCP!

출처: https://docs.openg2p.org/utilities-and-tools/unified-conversation-agent/uca-research-and-development/modal-context-protocol-mcp

 

여기서 그렇게 유명한 MCP (Model Context Protocol) 가 나온다. 

MCP를 쉽게 USB라고 표현한다. 즉, USB만 맞으면 어떤 것이들 다 꼽아서 사용할 수 있다는 것이다. LLM과 tool 간의 표준 프로토콜을 제공함으로써 기존의 한계를 해결한다. 

한 번 정의하고 여러 군데에서 재사용할 수 있으며 모델과 독립적이라 tool을 새로 짜지 않아도 된다. 또한 인증, 보안과 같은 것을 MCP에서 통합 관리를 할 수 있다. 

 

예시를 들자면 다음과 같다. MCP가 존재하지 않을 때는 tool 하나를 만들더라도 LangChain에서는 Tool() 형식으로 등록하고 ChatGPT API는 fuctions 스키마로 변환해야 하고... 등등 해야 했찌만 MCP를 사용하게 되면 tool을 공통 스키마로 정의하면 

LangChain이든, OpenAI든, Claude든, Local LLM이든 같은 방식으로 호출이 가능하게 된 것이다. 

 

MCP의 목적은 다음과 같다. 

  • Tool을 재사용 가능하게 표준화 → 한 번 만들면 어디서든 쓸 수 있음 
  • LLM 공급자(Model Provider)와 독립적  → 모델이 OpenAI든, Anthropic이든, Local 모델이든 같은 Tool 형식을 사용
  • 안전한 기업 환경 통합  → 인증, 권한, 로깅, 데이터 보안 같은 엔터프라이즈 요구를 공식 구조에 포함

 

그럼 전체적으로 어떻게 진행되는 거지? 

에이전트의 작업은 생각(Thought) → 행동(Act) → 관찰(Observe) 의 연속적인 순환이다. 

서울의 날씨는 어때?

 

만약 서울의 날씨가 어떤지 AI Agent에게 물어본다면..

1. Thought

AI가 생각 중입니다.

내부적으로 추론을 하게 된다. 

" 사용자는 서울의 현재 날씨 정보를 원합니다. 저는 날씨 데이터를 가져오는 도구를 사용할 수 있습니다. 먼저 날씨 API를 호출하여 최신 정보를 얻어야 합니다."

이때 이미 tool은 등록되어있을 것이고 tool 리스트를 확인한 후 사용해야 할, 사용할 수 있는 걸 AI Agent은 이미 알고 있다. 

2. Act

이제 tool이 실행된다. 

날씨 API를 활용할 때 입력에 만약 location을 꼭 넣어야 한다면 AI Agent는 location에 서울이라고 넣을 것이다. 그러고 날씨 API tool이 실행되면 날씨 정보를 받게 된다. 

3. Observe

tool이 호출된 후 결과값을 받고 raw 날씨 데이터는 다음과 같다. 

한국의 현재 날씨: 기온 5도, 습도 60%.

 

이렇게 tool을 통해 얻은 정보는 LLM의 프롬프트에 추가적인 맥락으로 추가된다. 

여기서 실제로 결과가 원하는대로 잘 왔는지 확인할 수도 있다.

출처: https://aimatters.co.kr/ai-tool/ai-tool-how-to/15827/

이렇게 받은 정보를 활용해 AI Agent는 '이제 서울의 날씨 데이터가 있으니 사용자에게 답변을 작성할 수 있따.' 라고 생각하게 되고 최종 응답을 생성하게 된다. 

 

다음 편에서는 AI Agent가 어떻게 추론하는지 내부 작동 방식에 대해서 살펴보겠다.