LangChain Agent와 Tool — 스스로 도구를 쓰는 AI

📌 3줄 요약
· Agent는 "무엇을 할지 스스로 판단해 필요한 도구(Tool)를 골라 쓰는" LLM 활용 방식입니다.
· 체인이 정해진 순서대로 흐른다면, 에이전트는 생각 → 도구 선택 → 실행 → 관찰을 반복하며 스스로 길을 찾습니다.
· LangChain은 계산기·검색·API 같은 기능을 Tool로 등록해 두면, 모델이 상황에 맞게 꺼내 쓰도록 연결해 줍니다.
질문 도착 → 생각(Reasoning) → 도구 선택 → 실행·관찰 → 최종 답변

지금까지의 시리즈에서는 정해진 흐름을 따라가는 체인을 주로 다뤘습니다. 그런데 실제 문제는 "이번엔 검색이 필요하고, 다음엔 계산이 필요한" 식으로 상황마다 해야 할 일이 다릅니다. 이번 글에서는 모델이 스스로 어떤 도구를 언제 쓸지 판단하는 Agent(에이전트)와, 그 손발이 되어 주는 Tool(도구)의 개념을 정리해 보겠습니다.


🧭 체인만으로는 부족한 순간

체인은 단계가 미리 정해져 있을 때 강력합니다. "번역한다 → 요약한다"처럼 순서가 고정된 작업은 체인으로 깔끔하게 처리되죠. 하지만 사용자가 "오늘 서울 날씨 알려주고, 화씨로 바꿔서 보여줘"라고 물으면 이야기가 달라집니다. 날씨를 검색해야 하고, 그 값을 계산도 해야 합니다.

에이전트의 발상은 이렇습니다. 순서를 미리 짜지 말고, 무엇을 할지 모델이 매번 스스로 결정하게 하자.

즉 어떤 도구를 몇 번, 어떤 순서로 쓸지 실행 도중에 판단하는 것이 에이전트입니다. 덕분에 예측하기 어려운 요청에도 유연하게 대응할 수 있습니다.


🧩 Agent와 Tool, 무엇이 다른가

둘은 짝을 이루지만 역할이 분명히 다릅니다. Tool은 모델이 호출할 수 있는 하나의 기능이고, Agent는 그 도구들을 지휘하는 두뇌라고 보면 이해가 쉽습니다.

Tool (도구)
계산기, 웹 검색, 데이터베이스 조회처럼 실제 일을 수행하는 함수입니다. 이름과 설명이 붙어 있어 모델이 "언제 써야 하는지" 알 수 있습니다.
Agent (에이전트)
질문을 보고 어떤 도구를 쓸지 판단하고, 결과를 관찰해 다음 행동을 정합니다. 필요하면 도구를 여러 번 반복 호출합니다.

정리하면, 도구는 능력이고 에이전트는 그 능력을 언제 어떻게 쓸지 결정하는 판단력입니다. 좋은 도구 설명을 붙여 두는 것이 곧 에이전트의 판단 품질로 이어집니다.


🔍 에이전트가 생각하는 순서

많은 에이전트는 생각(Reasoning)과 행동(Action)을 번갈아 하는 방식으로 동작합니다. 사람이 문제를 풀 때 "일단 이걸 해보고, 결과를 보고 다음을 정하는" 과정과 닮아 있습니다.

단계 하는 일 예시
① 생각무엇이 필요한지 판단"날씨를 먼저 알아야겠다"
② 도구 선택알맞은 Tool과 입력값 결정검색("서울 날씨")
③ 실행도구를 호출해 결과를 받음"기온 20℃"
④ 관찰결과를 보고 다음을 판단"이제 화씨로 계산하자"
⑤ 반복·종료충분하면 최종 답변 작성"20℃는 68℉입니다"

핵심은 ①~④가 필요한 만큼 반복된다는 점입니다. 도구를 한 번만 쓸 수도, 여러 번 이어 쓸 수도 있으며, 그 판단을 매 순간 모델이 직접 내립니다.


💻 코드로 조립하기

버전에 따라 이름은 조금씩 다르지만, 조립 흐름은 대체로 아래와 같습니다. 도구를 정의하고 → 목록으로 묶어 → 에이전트에 넘기는 세 걸음입니다.

# 1) 도구 정의 — 이름과 '설명'이 매우 중요
def calculator(expr: str) -> str:
    """수식을 계산할 때 사용. 예: '20 * 9/5 + 32'"""
    return str(eval(expr))

def web_search(query: str) -> str:
    """최신 정보나 사실 확인이 필요할 때 사용."""
    return search_api(query)

# 2) 도구들을 목록으로 묶기
tools = [calculator, web_search]

# 3) 에이전트에 도구와 LLM을 연결
agent = create_agent(llm, tools)

# 4) 질문만 넣으면, 도구 선택은 에이전트가 알아서
answer = agent.run("서울 기온을 찾아서 화씨로 바꿔줘")

주목할 부분은 도구의 설명(docstring)입니다. 모델은 이 설명을 읽고 "이 도구를 언제 써야 하는지" 판단하므로, 설명이 모호하면 엉뚱한 도구를 고릅니다. 코드보다 설명 문장이 에이전트 품질을 좌우한다고 해도 지나치지 않습니다.


⚠️ 자주 부딪히는 문제

에이전트는 유연한 만큼 통제가 어렵습니다. 잘 돌다가도 아래 지점에서 자주 새는 편입니다.

도구를 잘못 고름
설명이 겹치거나 애매하면 모델이 헷갈립니다. 도구마다 역할을 분명히 나누고 설명을 구체적으로 씁니다.
무한 반복
답을 못 찾고 도구 호출을 계속 돕니다. 최대 반복 횟수를 정해 안전장치를 둡니다.
위험한 실행
코드 실행·삭제 같은 도구는 잘못 쓰면 피해가 큽니다. 권한을 최소한으로 제한합니다.

🔧 실무 팁

  • 도구 설명을 정성껏 — "언제 쓰는지"를 한 문장으로 분명히 적어야 모델이 제대로 고릅니다. 예시 입력을 곁들이면 더 좋습니다.
  • 도구 수는 적게 시작 — 처음부터 도구를 잔뜩 주면 판단이 흔들립니다. 꼭 필요한 몇 개로 시작해 늘려 가세요.
  • 반복 한도를 걸기 — 최대 스텝 수를 정해 두면 무한 루프와 비용 폭주를 막을 수 있습니다.
  • 중간 과정을 로깅 — 어떤 생각으로 어떤 도구를 골랐는지 남겨 두면, 오작동의 원인을 훨씬 빨리 찾습니다.

❓ 자주 묻는 질문 (FAQ)

Q. 에이전트는 체인을 완전히 대체하나요?
A. 아니요. 순서가 정해진 작업은 체인이 더 안정적이고 예측 가능합니다. 상황에 따라 할 일이 달라질 때만 에이전트가 유리합니다. 둘을 섞어 쓰는 경우도 많습니다.

Q. Tool은 꼭 함수여야 하나요?
A. 대체로 함수 형태지만, 외부 API 호출이나 데이터베이스 조회처럼 결과를 돌려주는 것이면 무엇이든 도구가 될 수 있습니다. 핵심은 이름과 설명을 붙여 모델이 알아보게 하는 것입니다.

Q. 도구를 잘못 골라 이상한 답을 하면 어떻게 하나요?
A. 대개 도구 설명이 모호한 탓입니다. 설명을 더 구체적으로 다듬고, 역할이 겹치는 도구를 정리하면 선택 정확도가 눈에 띄게 좋아집니다.


마무리

정리하면, Tool은 모델이 쓸 수 있는 개별 능력이고, Agent는 그 능력을 언제 어떻게 쓸지 스스로 판단하는 두뇌입니다. 생각 → 도구 선택 → 실행 → 관찰을 필요한 만큼 반복하며 답을 찾아가죠. 정해진 흐름이면 체인, 상황마다 달라지는 문제면 에이전트 — 이 구분만 잡아 두면 어디에 무엇을 쓸지 훨씬 선명해집니다. 다음 편에서는 에이전트에게 여러 종류의 문서를 불러다 주는 Document Loader 이야기를 이어 가겠습니다.

댓글

이 블로그의 인기 게시물

지하철 노선도로 이해하는 LangGraph (분기·반복 설계)

LangGraph State란 무엇인가? 상태 관리 개념 쉽게 이해하기

LangGraph Node와 Edge 개념 쉽게 이해하기 (초보자 완전 정리)