세 방식을 정리하면 다음과 같습니다.
표 5-3 Tool 정의 방식 비교
|
방법 |
@tool |
StructuredTool.from_function( ) |
BaseTool |
|
name/description 정의 방식 |
함수명/docstring 자동 추출 |
인자로 직접 지정 |
클래스 속성으로 선언 |
|
주로 사용하는 상황 |
새로 작성하는 일반 함수 |
기존 함수를 수정 없이 Tool로 변환 |
상태 관리, 복잡한 초기화, 동기와 비동기 제어 필요 |
세 방식 모두 에이전트가 사용할 수 있는 Tool 객체를 만든다는 점은 같습니다. @tool은 가장 단순하고 실무에서 가장 많이 사용하는 방식입니다. StructuredTool.from_function()은 기존 함수를 Tool로 연결할 때 적합하며, BaseTool은 상태 관리나 복잡한 실행 제어가 필요한 경우에 사용합니다.
처음에는 @tool 방식으로 시작하고, 필요에 따라 StructuredTool.from_function(), BaseTool 순으로 확장하는 것이 일반적인 흐름입니다.