Clip 3: AI Agent가 사용할 툴은 AI로 만들어야 하는 이유
📋 학습 목표
- AI 에이전트를 위한 툴 설계가 일반 API 래핑과 다른 이유를 이해할 수 있다 
- 효과적인 에이전트 툴 설계의 핵심 원칙을 습득할 수 있다 
- 워크플로우 중심 툴 설계 방법론을 실습할 수 있다 
- 에이전트 툴의 성능 평가 방법을 파악할 수 있다 
1. 에이전트 툴 설계의 패러다임 전환
전통적인 접근 방식의 한계
우리가 흔히 생각하는 "AI 에이전트에 툴 제공하기"는 다음과 같습니다:
# ❌ 전통적인 접근: 모든 API를 툴로 래핑
tools = [
    list_users_tool,
    list_events_tool,
    create_event_tool,
    update_event_tool,
    delete_event_tool,
    send_notification_tool,
    # ... 수십 개의 툴들
]문제점:
- 에이전트가 어떤 툴을 선택해야 할지 혼란스러워함 
- 여러 툴을 조합해야 하는 단순한 작업도 복잡해짐 
- 컨텍스트 윈도우가 툴 설명으로 가득 참 
Anthropic의 핵심 통찰
"Agents are only as effective as the tools we give them."
에이전트는 결정론적 시스템이 아닙니다:
동작 방식
결정론적, 예측 가능
비결정론적, 추론 기반
에러 처리
명확한 에러 코드
자연어로 이해하고 대응
컨텍스트
무제한 메모리
제한된 컨텍스트 윈도우
툴 선택
프로그래머가 명시
LLM이 자율적으로 선택
2. 워크플로우 중심 툴 설계

핵심 원칙: "더 많은 툴" → "더 똑똑한 툴"
전통적 설계 (API 래핑):
# ❌ 각 API 엔드포인트를 개별 툴로 제공
@tool
def list_customers():
    """고객 목록을 가져옵니다"""
    pass
@tool
def get_customer_transactions(customer_id: str):
    """특정 고객의 거래 내역을 가져옵니다"""
    pass
@tool
def get_customer_notes(customer_id: str):
    """고객 노트를 가져옵니다"""
    pass워크플로우 중심 설계:
# ✅ 실제 업무 흐름을 반영한 통합 툴
@tool
def get_customer_context(
    customer_id: str,
    include_transactions: bool = True,
    include_notes: bool = True,
    response_format: ResponseFormat = ResponseFormat.CONCISE
):
    """
    고객 컨텍스트를 조회합니다.
    고객 지원 담당자가 필요한 모든 정보를 한 번에 제공합니다:
    - 기본 고객 정보
    - 최근 거래 내역
    - CS 노트 및 이슈 히스토리
    Args:
        customer_id: 고객 ID
        include_transactions: 거래 내역 포함 여부
        include_notes: 노트 포함 여부
        response_format: CONCISE(간략) 또는 DETAILED(상세)
    """
    pass실제 사례: Slack 메시지 조회
Before (3개 툴):
🔧 list_channels()         # 채널 목록 조회
🔧 get_channel_id()        # 채널 이름 → ID 변환
🔧 read_messages()         # 메시지 읽기After (1개 통합 툴):
🔧 search_slack_messages(
    channel_name: str,
    query: str = None,
    limit: int = 10,
    response_format: ResponseFormat = ResponseFormat.CONCISE
)성능 차이:
- 토큰 사용량: 206 → 72 (65% 감소) 
- 툴 호출 횟수: 3회 → 1회 
- 에러 가능성 감소 (중간 단계 제거) 
3. 효과적인 툴 설계 패턴
Pattern 1: Response Format 제어
from enum import Enum
class ResponseFormat(Enum):
    DETAILED = "detailed"  # 모든 필드 포함, 후속 작업용
    CONCISE = "concise"    # 핵심 정보만, 토큰 절약
@tool
def search_logs(
    query: str,
    response_format: ResponseFormat = ResponseFormat.CONCISE
):
    """
    로그를 검색합니다.
    - CONCISE: 로그 메시지, 타임스탬프만 반환
    - DETAILED: trace_id, span_id 등 모든 메타데이터 포함
    """
    pass언제 사용할까?
- ✅ CONCISE: 정보 조회 후 사용자에게 보고할 때 
- ✅ DETAILED: 조회한 데이터를 다른 툴에 전달할 때 
Pattern 2: 네임스페이스 일관성
# ✅ 명확한 네임스페이스로 툴 구분
@tool
def asana_search_tasks(): pass
@tool
def asana_create_task(): pass
@tool
def github_search_issues(): pass
@tool
def github_create_issue(): pass왜 중요한가?
- 에이전트가 - search_tasks와- search_issues를 혼동하지 않음
- 멀티 툴 환경에서 정확도 향상 
Pattern 3: 스마트 기본값 제공
@tool
def schedule_event(
    title: str,
    participants: list[str],
    duration_minutes: int = 30,  # 일반적인 회의 시간
    auto_find_room: bool = True,  # 자동으로 회의실 찾기
    auto_send_invite: bool = True  # 초대장 자동 발송
):
    """
    이벤트를 스케줄링합니다.
    자동화된 기능:
    - 참여자 가용 시간 확인
    - 적절한 회의실 예약
    - 캘린더 초대장 발송
    """
    pass4. 에이전트 툴 평가 방법론
평가 작업 설계
강력한 평가 작업 예시:
다음 주 Jane과 회의를 잡아줘. 주제는 Acme Corp 최신 프로젝트야.
지난 프로젝트 기획 회의 노트를 첨부하고, 회의실도 예약해줘.검증 가능한 결과:
- ✅ Jane의 캘린더에 이벤트 생성됨 
- ✅ 회의 제목에 "Acme Corp" 포함 
- ✅ 관련 노트 첨부됨 
- ✅ 회의실 예약 완료 
프로그래밍 방식 평가
def evaluate_agent_tools(test_cases):
    metrics = {
        'accuracy': [],
        'tool_calls': [],
        'tokens_used': [],
        'errors': []
    }
    for task in test_cases:
        result = run_agent(task.prompt, tools)
        # 정확도 평가
        metrics['accuracy'].append(
            verify_outcome(result, task.expected_outcome)
        )
        # 효율성 평가
        metrics['tool_calls'].append(len(result.tool_calls))
        metrics['tokens_used'].append(result.token_count)
        # 에러 추적
        if result.error:
            metrics['errors'].append({
                'task': task.id,
                'error': result.error
            })
    return metrics측정 지표:
- 📊 정확도: 예상 결과와 실제 결과 일치 비율 
- 📊 런타임: 작업 완료까지 소요 시간 
- 📊 토큰 소비량: 비용 효율성 
- 📊 에러율: 실패한 툴 호출 비율 
5. 핵심 체크리스트
✅ 좋은 에이전트 툴 설계
❌ 피해야 할 안티패턴
핵심 요약
- 패러다임 전환: AI 에이전트 툴은 API 래핑이 아니라 워크플로우 설계입니다 
- 더 적은 툴, 더 높은 품질: 3개 툴 → 1개 통합 툴로 성능 65% 향상 가능 
- Response Format 제어: CONCISE/DETAILED로 토큰 효율성 극대화 
- Claude Code로 프로토타이핑: AI를 사용해 AI 툴을 설계하고 테스트 
- 평가 자동화: 프로그래밍 방식으로 정확도, 효율성, 에러율 측정 
참고 자료
공식 문서
관련 기술
추가 학습
강사 정보
- 작성자: 정구봉 
- LinkedIn: https://www.linkedin.com/in/gb-jeong/ 
- 이메일: bong@dio.so 
강의 자료
- 강의 자료: https://goobong.gitbook.io/fastcampus 
- Github: https://github.com/Koomook/fastcampus-ai-agent-vibecoding 
- FastCampus 강의 주소: https://fastcampus.co.kr/biz_online_vibeagent 
Last updated