LangChain Agent와 Tool — 스스로 도구를 쓰는 AI
· Agent는 "무엇을 할지 스스로 판단해 필요한 도구(Tool)를 골라 쓰는" LLM 활용 방식입니다.
· 체인이 정해진 순서대로 흐른다면, 에이전트는 생각 → 도구 선택 → 실행 → 관찰을 반복하며 스스로 길을 찾습니다.
· LangChain은 계산기·검색·API 같은 기능을 Tool로 등록해 두면, 모델이 상황에 맞게 꺼내 쓰도록 연결해 줍니다.
지금까지의 시리즈에서는 정해진 흐름을 따라가는 체인을 주로 다뤘습니다. 그런데 실제 문제는 "이번엔 검색이 필요하고, 다음엔 계산이 필요한" 식으로 상황마다 해야 할 일이 다릅니다. 이번 글에서는 모델이 스스로 어떤 도구를 언제 쓸지 판단하는 Agent(에이전트)와, 그 손발이 되어 주는 Tool(도구)의 개념을 정리해 보겠습니다.
🧭 체인만으로는 부족한 순간
체인은 단계가 미리 정해져 있을 때 강력합니다. "번역한다 → 요약한다"처럼 순서가 고정된 작업은 체인으로 깔끔하게 처리되죠. 하지만 사용자가 "오늘 서울 날씨 알려주고, 화씨로 바꿔서 보여줘"라고 물으면 이야기가 달라집니다. 날씨를 검색해야 하고, 그 값을 계산도 해야 합니다.
에이전트의 발상은 이렇습니다. 순서를 미리 짜지 말고, 무엇을 할지 모델이 매번 스스로 결정하게 하자.
즉 어떤 도구를 몇 번, 어떤 순서로 쓸지 실행 도중에 판단하는 것이 에이전트입니다. 덕분에 예측하기 어려운 요청에도 유연하게 대응할 수 있습니다.
🧩 Agent와 Tool, 무엇이 다른가
둘은 짝을 이루지만 역할이 분명히 다릅니다. 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 이야기를 이어 가겠습니다.
댓글
댓글 쓰기