ADK(Agent Development Kit) 관련

ADK Tool

alienbuddy 2025. 7. 1. 09:00

✅ 1. Tool 개요

  • Tool이란?
    에이전트가 외부 세계와 상호작용할 수 있게 해주는 실행 단위 기능
    (예: 날씨 조회, API 요청, 데이터베이스 검색, RAG 수행 등)
  • 핵심 속성
    • Action-Oriented: 실행 기반 기능
    • LLM이 호출: 판단과 추론은 LLM, 실행은 Tool이 담당
    • 미리 정의된 로직 실행: Tool 자체는 독립적인 추론 능력 없음

✅ 2. Tool 호출 흐름

  1. Reasoning: LLM이 상황과 요청 분석
  2. Selection: 사용할 Tool 결정
  3. Invocation: Tool에 적절한 인자 생성 후 호출
  4. Observation: Tool 실행 결과 수신
  5. 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 등을 활용하면 유연성과 확장성이 극대화됩니다.