✅ 1. Tool 개요
- Tool이란?
에이전트가 외부 세계와 상호작용할 수 있게 해주는 실행 단위 기능
(예: 날씨 조회, API 요청, 데이터베이스 검색, RAG 수행 등) - 핵심 속성
- Action-Oriented: 실행 기반 기능
- LLM이 호출: 판단과 추론은 LLM, 실행은 Tool이 담당
- 미리 정의된 로직 실행: Tool 자체는 독립적인 추론 능력 없음
✅ 2. Tool 호출 흐름
- Reasoning: LLM이 상황과 요청 분석
- Selection: 사용할 Tool 결정
- Invocation: Tool에 적절한 인자 생성 후 호출
- Observation: Tool 실행 결과 수신
- Finalization: 결과를 바탕으로 다음 응답 생성
Tool은 LLM의 지능적 판단을 실제 액션으로 이어주는 실행자 역할
✅ 3. Tool 종류 (ADK 제공)
Tool 유형설명
FunctionTool | 일반 Python 함수 기반 도구 |
Agent-as-Tool | 다른 에이전트를 Tool처럼 사용 |
Long Running Tool | 비동기, 대기 시간이 긴 작업 처리 |
Built-in Tools | Google Search, Code Execution, RAG 등 내장 |
Third-party Tools | LangChain, CrewAI 등 외부 통합 |
✅ 4. ToolContext 사용 (고급 제어)
- tool_context 매개변수를 통해 다음에 접근 가능:
- tool_context.state: 세션 상태 읽기/쓰기
- tool_context.actions: 실행 흐름 제어
- load_artifact, save_artifact: 파일 핸들링
- search_memory: 장기 메모리 검색
- auth_response, request_credential(): 인증 정보 사용

✅ 5. Tool 정의 시 주의사항
- 함수명: get_weather, update_user_profile처럼 명확하고 동사 기반
- 매개변수: 타입힌트 필수 (city: str, items: list[str])
- 리턴값: dict 구조. 상태키 (status) 포함 권장
- docstring: 용도, 인자 설명, 예시 포함 (LLM이 사용 목적 이해하도록)
✅ 6. Toolset (도구 집합)
- BaseToolset 구현을 통해 도구 그룹을 동적으로 관리 가능
(예: 사용자 권한, 세션 상황에 따라 다른 Tool 제공) - get_tools(): 사용 가능한 도구 리스트 반환
- close(): 종료 시 정리 작업

하나의 에이전트에서 개별 Tool + Toolset 병행 사용 가능
✅ 7. Tool 실전 예시
- 날씨 + 감정 분석 에이전트
- get_weather_report: 도시별 날씨 조회
- analyze_sentiment: 사용자 반응 감정 분석
- 지원 에이전트 전환
- check_and_transfer: 긴급 요청 감지 시 support_agent로 전환
✅ 8. 기타 기능 요약
기능설명
state | 세션/사용자/앱 수준 상태 관리 |
actions | 흐름 제어 (skip_summarization, transfer_to_agent) |
artifact 관리 | 파일 로드/저장/버전 관리 |
search_memory() | 과거 메모리 검색 |
Toolset | 도구 그룹화를 통한 확장성 확보 |
✅ 결론
ADK의 Tool 시스템은 LLM의 추론력과 현실 동작을 연결해주는 핵심 구조입니다.
- 잘 설계된 Tool → 더 정확하고 강력한 에이전트
- ToolContext, 상태관리, Toolset 등을 활용하면 유연성과 확장성이 극대화됩니다.
'ADK(Agent Development Kit) 관련' 카테고리의 다른 글
ADK Tool - Built-in Tools (1) | 2025.07.03 |
---|---|
ADK Tool - Function Tool, Long Running Function Tool, Agent-as-a-Tool (0) | 2025.07.02 |
ADK에서 모델 사용 방식 (0) | 2025.06.30 |
ADK의 Agent - MultiAgent (0) | 2025.06.28 |
ADK의 Agent - CustomAgent (0) | 2025.06.27 |