도구
에이전트 협업과 작업 실행을 위해 CrewAI 프레임워크 내 도구를 이해하고 활용하는 방법.
소개
CrewAI 도구는 웹 검색과 데이터 분석부터 협업 및 동료 간 업무 위임에 이르는 다양한 기능을 에이전트에게 제공한다. 이 문서에서는 CrewAI 프레임워크 내에서 이러한 도구를 생성, 통합, 활용하는 방법을 설명하며, 특히 협업 도구에 초점을 맞춘 새로운 내용을 다룬다.
도구란 무엇인가?
CrewAI에서 도구는 에이전트가 다양한 작업을 수행하기 위해 활용할 수 있는 기능이나 함수를 의미한다. 이는 CrewAI Toolkit과 LangChain Tools에서 제공하는 도구를 포함하며, 단순한 검색부터 복잡한 상호작용, 그리고 에이전트 간의 효과적인 협업까지 가능하게 한다.
도구의 주요 특징
- 유용성: 웹 검색, 데이터 분석, 콘텐츠 생성, 에이전트 협업과 같은 작업을 위해 설계됨
- 통합성: 도구를 에이전트의 워크플로우에 원활하게 통합해 기능을 강화함
- 커스터마이징: 특정 요구 사항에 맞게 커스텀 도구를 개발하거나 기존 도구를 활용할 수 있는 유연성을 제공함
- 오류 처리: 원활한 운영을 보장하기 위해 견고한 오류 처리 메커니즘을 내장함
- 캐싱 메커니즘: 성능 최적화와 중복 작업 감소를 위해 지능형 캐싱 기능을 탑재함
CrewAI 도구 사용하기
에이전트의 기능을 강화하기 위해 crewAI 도구를 사용하려면 먼저 추가 도구 패키지를 설치한다:
다음은 이 도구를 사용하는 예제이다:
사용 가능한 CrewAI 도구
- 에러 처리: 모든 도구는 에러 처리 기능을 내장하고 있어, 에이전트가 예외 상황을 우아하게 처리하고 작업을 계속할 수 있다.
- 캐싱 메커니즘: 모든 도구는 캐싱을 지원하며, 이전에 얻은 결과를 효율적으로 재사용할 수 있다. 이를 통해 외부 리소스에 대한 부하를 줄이고 실행 시간을 단축한다. 또한
cache_function
속성을 사용해 캐싱 메커니즘을 더 세밀하게 제어할 수 있다.
다음은 사용 가능한 도구와 그 설명이다:
도구 | 설명 |
---|---|
BrowserbaseLoadTool | 웹 브라우저와 상호작용하고 데이터를 추출하는 도구. |
CodeDocsSearchTool | 코드 문서 및 관련 기술 문서를 검색하기에 최적화된 RAG 도구. |
CodeInterpreterTool | 파이썬 코드를 해석하는 도구. |
ComposioTool | Composio 도구를 사용할 수 있게 하는 도구. |
CSVSearchTool | CSV 파일 내에서 검색하기 위해 설계된 RAG 도구로, 구조화된 데이터를 처리한다. |
DALL-E Tool | DALL-E API를 사용해 이미지를 생성하는 도구. |
DirectorySearchTool | 디렉토리 내에서 검색하기 위한 RAG 도구로, 파일 시스템 탐색에 유용하다. |
DOCXSearchTool | DOCX 문서 내에서 검색하기 위한 RAG 도구로, Word 파일 처리에 적합하다. |
DirectoryReadTool | 디렉토리 구조와 그 내용을 읽고 처리하는 도구. |
EXASearchTool | 다양한 데이터 소스에서 철저한 검색을 수행하기 위해 설계된 도구. |
FileReadTool | 다양한 파일 형식을 지원하며 파일에서 데이터를 읽고 추출하는 도구. |
FirecrawlSearchTool | Firecrawl을 사용해 웹페이지를 검색하고 결과를 반환하는 도구. |
FirecrawlCrawlWebsiteTool | Firecrawl을 사용해 웹페이지를 크롤링하는 도구. |
FirecrawlScrapeWebsiteTool | Firecrawl을 사용해 웹페이지 URL을 스크랩하고 그 내용을 반환하는 도구. |
GithubSearchTool | GitHub 저장소 내에서 검색하기 위한 RAG 도구로, 코드 및 문서 검색에 유용하다. |
SerperDevTool | 개발 목적으로 특화된 도구로, 개발 중인 특정 기능을 제공한다. |
TXTSearchTool | 텍스트 (.txt) 파일 내에서 검색하기 위한 RAG 도구로, 비구조화된 데이터 처리에 적합하다. |
JSONSearchTool | JSON 파일 내에서 검색하기 위해 설계된 RAG 도구로, 구조화된 데이터 처리에 적합하다. |
LlamaIndexTool | LlamaIndex 도구를 사용할 수 있게 하는 도구. |
MDXSearchTool | 마크다운 (MDX) 파일 내에서 검색하기 위한 RAG 도구로, 문서 처리에 유용하다. |
PDFSearchTool | PDF 문서 내에서 검색하기 위한 RAG 도구로, 스캔된 문서 처리에 적합하다. |
PGSearchTool | PostgreSQL 데이터베이스 내에서 검색하기 위해 최적화된 RAG 도구로, 데이터베이스 쿼리에 적합하다. |
Vision Tool | DALL-E API를 사용해 이미지를 생성하는 도구. |
RagTool | 다양한 데이터 소스와 타입을 처리할 수 있는 범용 RAG 도구. |
ScrapeElementFromWebsiteTool | 웹사이트에서 특정 엘리먼트를 스크랩하는 도구로, 특정 데이터 추출에 유용하다. |
ScrapeWebsiteTool | 전체 웹사이트를 스크랩하는 도구로, 포괄적인 데이터 수집에 적합하다. |
WebsiteSearchTool | 웹사이트 콘텐츠를 검색하기 위한 RAG 도구로, 웹 데이터 추출에 최적화되어 있다. |
XMLSearchTool | XML 파일 내에서 검색하기 위해 설계된 RAG 도구로, 구조화된 데이터 형식 처리에 적합하다. |
YoutubeChannelSearchTool | YouTube 채널 내에서 검색하기 위한 RAG 도구로, 비디오 콘텐츠 분석에 유용하다. |
YoutubeVideoSearchTool | YouTube 비디오 내에서 검색하기 위한 RAG 도구로, 비디오 데이터 추출에 적합하다. |
나만의 도구 만들기
개발자는 에이전트의 필요에 맞게 커스텀 도구
를 직접 만들거나, 미리 만들어진 옵션을 활용할 수 있다.
CrewAI 도구를 만드는 데는 크게 두 가지 방법이 있다:
BaseTool
서브클래싱
tool
데코레이터 활용하기
구조화된 도구
StructuredTool
클래스는 함수를 도구로 감싸서 유연성과 검증 기능을 제공하며, 보일러플레이트 코드를 줄여준다. 이 클래스는 커스텀 스키마와 동적 로직을 지원하여 복잡한 기능을 원활하게 통합할 수 있게 한다.
예제:
StructuredTool.from_function
을 사용해 외부 API나 시스템과 상호작용하는 함수를 감싸면 구조화된 인터페이스를 제공할 수 있다. 이를 통해 강력한 검증과 일관된 실행이 가능해지며, 복잡한 기능을 애플리케이션에 통합하기가 더 쉬워진다. 다음 예제에서 이를 확인할 수 있다:
커스텀 캐싱 메커니즘
도구는 선택적으로 cache_function
을 구현해 캐싱 동작을 파인튜닝할 수 있다. 이 함수는 특정 조건에 따라 결과를 캐시할 시점을 결정하며, 캐싱 로직에 대한 세밀한 제어를 제공한다.
결론
CrewAI 에이전트의 능력을 확장하는 데 도구는 매우 중요하다. 도구를 활용하면 다양한 작업을 수행하고 효과적으로 협업할 수 있다. CrewAI로 솔루션을 구축할 때는 커스텀 도구와 기존 도구를 모두 활용해 에이전트의 능력을 강화하고 AI 생태계를 발전시켜야 한다. 에러 처리, 캐싱 메커니즘, 도구 인자의 유연성을 고려해 에이전트의 성능과 기능을 최적화한다.