CrewAI에서 도구 생성 및 활용하기

이 가이드에서는 CrewAI 프레임워크에서 커스텀 도구를 만드는 방법과 이러한 도구를 효율적으로 관리하고 사용하는 방법을 자세히 설명한다. 도구 위임, 오류 처리, 동적 도구 호출과 같은 최신 기능을 통합하는 방법도 다룬다. 또한 협업 도구의 중요성을 강조하며, 에이전트가 다양한 작업을 수행할 수 있도록 지원한다.

BaseTool 서브클래싱

개인화된 도구를 만들려면 BaseTool을 상속받고, 입력 검증을 위한 args_schema_run 메서드를 포함한 필수 속성을 정의한다.

from typing import Type
from crewai.tools import BaseTool
from pydantic import BaseModel, Field

class MyToolInput(BaseModel):
    """MyCustomTool의 입력 스키마."""
    argument: str = Field(..., description="인자의 설명.")

class MyCustomTool(BaseTool):
    name: str = "내 도구의 이름"
    description: str = "이 도구가 수행하는 작업. 효과적인 활용을 위해 중요하다."
    args_schema: Type[BaseModel] = MyToolInput

    def _run(self, argument: str) -> str:
        # 도구의 로직을 여기에 작성
        return "도구의 결과"

tool 데코레이터 사용하기

다른 방법으로 @tool 데코레이터를 사용할 수 있다. 이 방식은 함수 내에서 도구의 속성과 기능을 직접 정의할 수 있어, 필요한 특수 도구를 간결하고 효율적으로 만들 수 있다.

from crewai.tools import tool

@tool("Tool Name")
def my_simple_tool(question: str) -> str:
    """명확성을 위한 도구 설명."""
    # 도구 로직
    return "Tool output"

툴 캐시 함수 정의

툴 성능을 최적화하기 위해 cache_function 속성을 사용해 커스텀 캐싱 전략을 정의한다.

@tool("캐싱 기능이 있는 툴")
def cached_tool(argument: str) -> str:
    """툴 기능 설명."""
    return "캐시 가능한 결과"

def my_cache_strategy(arguments: dict, result: str) -> bool:
    # 커스텀 캐싱 로직 정의
    return True if some_condition else False

cached_tool.cache_function = my_cache_strategy

이 가이드라인을 따르고 툴 생성 및 관리 프로세스에 새로운 기능과 협업 도구를 통합하면 CrewAI 프레임워크의 모든 기능을 활용할 수 있다. 이를 통해 개발 경험과 AI 에이전트의 효율성을 모두 향상시킬 수 있다.