더북(TheBook)

세 방식을 정리하면 다음과 같습니다.

표 5-3 Tool 정의 방식 비교

방법

@tool

StructuredTool.from_function( )

BaseTool

name/description 정의 방식

함수명/docstring 자동 추출

인자로 직접 지정

클래스 속성으로 선언

주로 사용하는 상황

새로 작성하는 일반 함수

기존 함수를 수정 없이 Tool로 변환

상태 관리, 복잡한 초기화, 동기와 비동기 제어 필요

세 방식 모두 에이전트가 사용할 수 있는 Tool 객체를 만든다는 점은 같습니다. @tool은 가장 단순하고 실무에서 가장 많이 사용하는 방식입니다. StructuredTool.from_function()은 기존 함수를 Tool로 연결할 때 적합하며, BaseTool은 상태 관리나 복잡한 실행 제어가 필요한 경우에 사용합니다.

처음에는 @tool 방식으로 시작하고, 필요에 따라 StructuredTool.from_function(), BaseTool 순으로 확장하는 것이 일반적인 흐름입니다.