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 콘텐츠 (활성화된 경우)

각 결과의 콘텐츠는 가장 관련성 높은 정보를 유지하면서 컨텍스트 창 문제를 방지하도록 자동으로 잘립니다.

더 알아보기 (Learn more)