Tavily Search 도구
Tavily Search 도구 (TavilySearchTool)
CrewAI의 TavilySearchTool은 Tavily Search API에 대한 인터페이스를 제공해 에이전트가 종합적인 웹 검색을 수행할 수 있게 해주는 도구예요. 검색 심도(depth), 주제(topic), 시간 범위, 포함/제외 도메인, 그리고 직접 답변·raw 콘텐츠·이미지 포함 여부까지 지정할 수 있답니다.
출처: 문서
본문
TavilySearchTool은 Tavily Search API에 대한 인터페이스를 제공하여 CrewAI 에이전트가 종합적인 웹 검색을 수행할 수 있게 해줍니다. 검색 심도, 주제, 시간 범위, 포함/제외 도메인, 그리고 결과에 직접 답변·raw 콘텐츠·이미지를 포함할지 여부를 지정할 수 있어요.
설치 (Installation)
TavilySearchTool을 사용하려면 tavily-python 라이브러리를 설치해야 합니다.
uv add 'crewai[tools]' tavily-python
환경변수 (Environment Variables)
Tavily API 키가 환경변수로 설정되어 있는지 확인하세요.
export TAVILY_API_KEY='your_tavily_api_key'
API 키는 https://app.tavily.com/에서 받을 수 있어요 (가입 후 키 생성).
사용 예시 (Example Usage)
CrewAI 에이전트 안에서 TavilySearchTool을 초기화하고 사용하는 방법은 다음과 같습니다.
import os
from crewai import Agent, Task, Crew
from crewai_tools import TavilySearchTool
# TAVILY_API_KEY 환경변수가 설정되어 있는지 확인
# os.environ["TAVILY_API_KEY"] = "YOUR_TAVILY_API_KEY"
# 도구 초기화
tavily_tool = TavilySearchTool()
# 이 도구를 사용하는 에이전트 생성
researcher = Agent(
role='Market Researcher',
goal='Find information about the latest AI trends',
backstory='An expert market researcher specializing in technology.',
tools=[tavily_tool],
verbose=True
)
# 에이전트를 위한 태스크 생성
research_task = Task(
description='Search for the top 3 AI trends in 2024.',
expected_output='A JSON report summarizing the top 3 AI trends found.',
agent=researcher
)
# 크루 구성 후 실행
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=2
)
result = crew.kickoff()
print(result)
설정 옵션 (Configuration Options)
TavilySearchTool은 초기화 시 또는 run 메서드 호출 시 다음 인자를 받습니다.
query(str): 필수. 검색 쿼리 문자열.search_depth(Literal["basic", "advanced"], optional): 검색 심도. 기본값"basic".topic(Literal["general", "news", "finance"], optional): 검색에 집중할 주제. 기본값"general".time_range(Literal["day", "week", "month", "year"], optional): 검색 시간 범위. 기본값None.days(int, optional): 거슬러 검색할 일 수.time_range가 설정되지 않은 경우 유효. 기본값7.max_results(int, optional): 반환할 최대 검색 결과 수. 기본값5.include_domains(Sequence[str], optional): 검색에서 우선할 도메인 목록. 기본값None.exclude_domains(Sequence[str], optional): 검색에서 제외할 도메인 목록. 기본값None.include_answer(Union[bool, Literal["basic", "advanced"]], optional): 검색 결과에서 종합된 직접 답변 포함 여부. 기본값False.include_raw_content(bool, optional): 검색된 페이지의 raw HTML 콘텐츠 포함 여부. 기본값False.include_images(bool, optional): 이미지 결과 포함 여부. 기본값False.timeout(int, optional): 요청 타임아웃(초). 기본값60.
고급 사용법 (Advanced Usage)
커스텀 파라미터로 도구를 설정할 수 있어요.
# 예시: 특정 파라미터로 초기화
custom_tavily_tool = TavilySearchTool(
search_depth='advanced',
max_results=10,
include_answer=True
)
# 에이전트는 이 기본값을 사용
agent_with_custom_tool = Agent(
role="Advanced Researcher",
goal="Conduct detailed research with comprehensive results",
tools=[custom_tavily_tool]
)
기능 (Features)
- 종합 검색: Tavily의 강력한 검색 인덱스 접근
- 설정 가능한 심도: basic과 advanced 검색 모드 선택
- 주제 필터링: general, news, finance 주제에 검색 집중
- 시간 범위 제어: 결과를 특정 기간으로 제한
- 도메인 제어: 특정 도메인 포함/제외
- 직접 답변: 검색 결과에서 종합된 답변 얻기
- 콘텐츠 필터링: 자동 콘텐츠 잘라내기로 컨텍스트 창 문제 방지
응답 형식 (Response Format)
이 도구는 다음을 포함하는 JSON 문자열로 검색 결과를 반환합니다.
- 제목, URL, 콘텐츠 스니펫이 포함된 검색 결과
- 쿼리에 대한 선택적 직접 답변
- 선택적 이미지 결과
- 선택적 raw HTML 콘텐츠 (활성화된 경우)
각 결과의 콘텐츠는 가장 관련성 높은 정보를 유지하면서 컨텍스트 창 문제를 방지하도록 자동으로 잘립니다.