3. Tool Use: AI에게 강력한 실행력을 부여하는 설계

작성일: 2026년 3월 1일 | 카테고리: Tooling

AI 에이전트가 '똑똑하다'는 평가를 받으려면 단순히 말을 잘하는 것을 넘어, 필요한 도구를 적재적소에 꺼내 쓸 수 있어야 합니다. 현대적인 'Function Calling' 설계 패턴을 알아봅니다.

도구(Tool)는 에이전트의 팔과 다리입니다

LLM은 계산기가 아니고, 실시간 기상청 서버도 아닙니다. 따라서 복잡한 계산이나 외부 데이터 접근이 필요할 때 이를 처리해줄 '함수(Function)'를 연결해줘야 합니다.

성공적인 도구 설계를 위한 3가지 원칙

1. 명확한 설명 (Docstring)

에이전트는 함수 이름을 보고 판단하는 것이 아니라 설명을 읽고 판단합니다. "이 함수는 무엇을 하는지, 인자는 무엇인지"를 LLM이 이해하기 쉽게 써야 합니다.

2. 엄격한 타입 정의

JSON Schema 등을 사용하여 입력값의 범위를 제한하세요. 잘못된 타입이 들어오면 에이전트가 루프에 빠질 수 있습니다.

3. 관대한 에러 메시지

실패 시 "Error 500" 대신 "데이터가 존재하지 않습니다. 검색 범위를 넓혀보세요"와 같은 힌트를 에이전트에게 전달하세요.

4. 결과 데이터 요약

API 응답이 너무 크면 토큰 비용이 폭증합니다. 에이전트에게 필요한 핵심 필드만 필터링하여 반환하세요.

코드 예시: 검색 도구 정의

{
  "name": "google_search",
  "description": "최신 뉴스나 기술 정보를 찾을 때 사용합니다.",
  "parameters": {
    "type": "object",
    "properties": {
      "query": {"type": "string", "description": "검색어"},
      "num_results": {"type": "integer", "default": 3}
    },
    "required": ["query"]
  }
}
      

보안 주의사항: 샌드박싱

도구 실행 권한은 최소화되어야 합니다. 특히 코드를 직접 실행하는 `REPL` 도구의 경우, 반드시 시스템과 격리된 샌드박스 환경에서 구동해야 합니다.