🤗 05. HF Agents Course 본편 4 - ToolCallingAgent로 신뢰 가능한 워크플로우 만들기
이번 편에서는 ToolCallingAgent를 사용해 “입력 → 도구 실행 → 결과 검증” 흐름을 안정적으로 만드는 법을 다룹니다. 목표는 초보자도 재현 가능한 최소 예제를 만든 뒤, 실무형 체크포인트(로그/오류/성공판정)를 붙이는 것입니다.
1) 왜 ToolCallingAgent를 쓰나?
- LLM이 직접 답만 생성하면, 외부 데이터 접근/계산/검증이 약합니다.
- ToolCallingAgent는 필요한 순간 툴을 호출해 행동 가능한 답을 만듭니다.
- 핵심은 “좋은 프롬프트”보다 좋은 실행 루프(로그, 판정, 실패 복구) 입니다.
2) 전체 흐름
flowchart TD A[사용자 질의] --> B[ToolCallingAgent 계획] B --> C[도구 호출: search_weather] C --> D[도구 결과 수신] D --> E[결과 검증: 필수 필드/단위] E --> F[최종 답변 생성] E -->|검증 실패| G[재시도 또는 오류 메시지]
3) 실습: 서울 날씨 요약 에이전트
준비 도구
- Python 3.10+
- 패키지:
smolagents,python-dotenv - 모델 키(예: Hugging Face Inference 또는 OpenAI 호환 키)
폴더/파일
mkdir -p hf-agent-lesson4 && cd hf-agent-lesson4
python3 -m venv .venv
source .venv/bin/activate
pip install -U smolagents python-dotenv.env
HF_TOKEN=your_hf_tokenapp.py
from dotenv import load_dotenv
from smolagents import ToolCallingAgent, InferenceClientModel, tool
import requests
load_dotenv()
@tool
def search_weather(city: str) -> str:
"""도시 이름을 받아 현재 기온/날씨를 짧게 반환"""
# 데모용 공개 엔드포인트 (예시)
url = f"https://wttr.in/{city}?format=j1"
r = requests.get(url, timeout=10)
r.raise_for_status()
data = r.json()
current = data["current_condition"][0]
temp_c = current.get("temp_C", "N/A")
desc = current.get("weatherDesc", [{"value": "N/A"}])[0]["value"]
return f"{city} 현재 {temp_c}°C, {desc}"
model = InferenceClientModel()
agent = ToolCallingAgent(
tools=[search_weather],
model=model,
max_steps=4,
)
query = "서울 오늘 날씨를 한 줄로 요약해줘"
result = agent.run(query)
print(result)실행 명령
python app.py성공 판정
아래 3개를 만족하면 성공입니다.
- 실행 중 도구 호출 흔적이 로그에 보인다. (
search_weather) - 출력에 도시명/기온/상태가 포함된다. (예:
서울 현재 22°C, Partly cloudy) - 예외 없이 프로세스가 종료된다. (exit code 0)
4) 초보자 실수와 빠른 복구
- API/토큰 누락:
.env와 쉘 환경변수 중복 확인 - 도구 타임아웃:
requests.get(..., timeout=10)유지 - 출력 포맷 흔들림: 도구 반환 문자열을 고정 템플릿으로 제한
5) 실무 적용 포인트
- 툴 함수는 “짧고 결정적(deterministic)”으로 설계
- 에이전트 응답 신뢰성은 모델보다 도구 스키마 + 검증 규칙이 좌우
- 운영 시 최소 3개 로그를 남기세요: 입력, 툴 결과, 최종 응답
6) 다음 편 예고
다음 본편에서는 ToolCallingAgent에 다중 도구 라우팅(검색+계산+포맷터) 을 붙여 업무 자동화 템플릿으로 확장합니다.
생성형 AI 활용 고지
이 문서는 생성형 AI로 초안을 만들고, Hugging Face 공식 자료(코스/문서) 기준으로 사실관계와 실습 단계를 검토·보정했습니다.