| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- control
- DATAPATH
- openai
- instruction
- github
- Java
- python
- react
- DS
- web
- function
- Rag
- for
- computer
- javascript
- system
- AI
- Pipelining
- data structure
- Algorithm
- DB
- CSS
- architecture
- MIPS
- Linux
- XML
- html
- php
- mysql
- Class
- Today
- Total
YYYEJI
[MAC] Tool calling(@tool) 알아보기 본문
일학년 코딩 수업 때 교수님께서 함수 위에 있는 @tool은 그냥 무시하고 넘어가~~
이런 말을 들은 적이 있었던 거 같은데 그 tool이 @tool인건가!!!

tool calling은 LLM이 답변을 주는 것이 아니라,
(필요할 때) 외부 도구나 함수를 직접 호출해서 결과를 가져오는 방식이에요!!
LLM이 어떤 것을 쓸지 판단을 합니다
예를 들어 "계산기를 써야겠다" 또는 "DB를 검색해야겠다"처럼
필요한 도구를 선택하고, 정해진 함수 포맷으로 호출 → 함수 실행 → 결과받아서 계속 대화
이러한 흐름으로 흘러갑니다
그러면 여기서 함수 밑에 @tool이라고 왜 쓰는가???????????/
@tool은 파이썬의 데이레이터인데 함수가 LangChain에서 도구(tool)임을 인식하게 만들기 위해서 사용한다!!입니다.
@tool은
* LLM이 외부 시스템과 상호작용하기 위한 함수 호출 메커니즘
* LLM은 정의된 도구나 함수를 통해 외부 시스템과 통신하고 작업을 수행
* Tool calling은 모델이 시스템과 직접 상호작용할 수 있게 하는 기능
* 구조화된 출력을 통해 API나 DB와 같은 시스템 요구사항 충족
* 스키마 기반 응답으로 시스템 간 효율적 통신 가능
이 가능합니다!!
Tool(@tool) 예제
이 예제는 LLM이 호출 가능한 날씨 조회 tool입니다
from langchain_core.tools import tool
from typing import Literal # Literal은 파라미터가 가질 수 있는 정확한 값들을 제한할 때 사용
@tool
def get_weather(city: Literal["서울", "부산", "대구", "인천", "광주"]):
"""한국 주요 도시의 날씨 정보를 가져옵니다."""
weather_data = {
"서울": "맑음",
"부산": "흐림",
"대구": "맑음",
"인천": "비",
"광주": "구름많음"
}
if city in weather_data:
return f"{city} 날씨는 {weather_data[city]}"
else:
raise AssertionError("지원하지 않는 도시입니다")
@tool 데코레이터를 사용하면서 LLM이 호출 가능한 "도구"로 등록을 하였습니다.
Literal을 사용함으로써 ["서울", "부산", "대구", "인천", "광주"] 이 외에 값은 허용되지 않아요
"""한국 주요 도시의 날씨 정보를 가져옵니다"""
이 부분은 LLM에게 tool의 용도를 알려주는 중요한 문장입니다!!!
LangChain은 이 docstring을 tool schema의 "descriptin"에 자동으로 포함시켜줍니다.
invoke()를 통해 결과를 출력할 수 있어요
# 도구 실행
get_weather.invoke("서울")

지정되지 않은 정보라면 Error가 출력됩니당
@tool의 역할을 알 수 있어서 정말 유익했던 시간이였어요 !!!

'인공지능 챗봇' 카테고리의 다른 글
| [MAC] LangGraph(상태그래프) 활용하기 (4) | 2025.08.07 |
|---|---|
| [MAC] Agent 알아보기 (3) | 2025.08.07 |
| [MAC] 재순위화(Re-rank) 기법 Cross-Encoder 모델과 LLMListwise 모델 비교하기 (4) | 2025.08.07 |
| [MAC] 하이브리드 검색(Hybrid Search)을 기반으로 한 RAG 살펴보기 (4) | 2025.08.06 |
| [MAC] 키워드 검색(Keyword Search)을 기반으로 한 RAG 살펴보기 (4) | 2025.08.06 |