Tavily Extractor 도구

Tavily Extractor 도구 (TavilyExtractorTool)

CrewAI의 TavilyExtractorTool은 Tavily API를 사용해 웹 페이지에서 구조화된 콘텐츠를 추출하는 도구예요. 단일 URL 또는 URL 목록을 처리할 수 있고, 추출 심도와 이미지 포함 여부를 제어하는 옵션을 제공합니다. 웹 콘텐츠 분석·데이터 수집·모니터링에 유용하답니다.

출처: 문서

본문

TavilyExtractorTool은 Tavily API를 사용해 CrewAI 에이전트가 웹 페이지에서 구조화된 콘텐츠를 추출할 수 있게 해줍니다. 단일 URL 또는 URL 목록을 처리할 수 있으며, 추출 심도를 제어하고 이미지를 포함하는 옵션을 제공해요.

설치 (Installation)

TavilyExtractorTool을 사용하려면 tavily-python 라이브러리를 설치해야 합니다.

uv add 'crewai[tools]' tavily-python

Tavily API 키도 환경변수로 설정해야 합니다.

export TAVILY_API_KEY='your-tavily-api-key'

사용 예시 (Example Usage)

CrewAI 에이전트 안에서 TavilyExtractorTool을 초기화하고 사용하는 방법은 다음과 같습니다.

import os
from crewai import Agent, Task, Crew
from crewai_tools import TavilyExtractorTool

# 환경에 TAVILY_API_KEY가 설정되어 있는지 확인
# os.environ["TAVILY_API_KEY"] = "YOUR_API_KEY"

# 도구 초기화
tavily_tool = TavilyExtractorTool()

# 이 도구를 사용하는 에이전트 생성
extractor_agent = Agent(
    role='Web Content Extractor',
    goal='Extract key information from specified web pages',
    backstory='You are an expert at extracting relevant content from websites using the Tavily API.',
    tools=[tavily_tool],
    verbose=True
)

# 에이전트를 위한 태스크 정의
extract_task = Task(
    description='Extract the main content from the URL https://example.com using basic extraction depth.',
    expected_output='A JSON string containing the extracted content from the URL.',
    agent=extractor_agent
)

# 크루 생성 및 실행
crew = Crew(
    agents=[extractor_agent],
    tasks=[extract_task],
    verbose=2
)

result = crew.kickoff()
print(result)

설정 옵션 (Configuration Options)

TavilyExtractorTool은 다음 인자를 받습니다.

  • urls (Union[List[str], str]): 필수. 데이터를 추출할 단일 URL 문자열 또는 URL 문자열 목록.
  • include_images (Optional[bool]): 추출 결과에 이미지 포함 여부. 기본값 False.
  • extract_depth (Literal["basic", "advanced"]): 추출 심도. 더 빠른 표면 추출에는 "basic", 더 종합적인 추출에는 "advanced". 기본값 "basic".
  • timeout (int): 추출 요청 완료를 기다리는 최대 시간(초). 기본값 60.

고급 사용법 (Advanced Usage)

여러 URL과 고급 추출 (Multiple URLs with Advanced Extraction)

# 여러 URL과 고급 추출 예시
multi_extract_task = Task(
    description='Extract content from https://example.com and https://anotherexample.org using advanced extraction.',
    expected_output='A JSON string containing the extracted content from both URLs.',
    agent=extractor_agent
)

# 커스텀 파라미터로 도구 설정
custom_extractor = TavilyExtractorTool(
    extract_depth='advanced',
    include_images=True,
    timeout=120
)

agent_with_custom_tool = Agent(
    role="Advanced Content Extractor",
    goal="Extract comprehensive content with images",
    tools=[custom_extractor]
)

도구 파라미터 (Tool Parameters)

초기화 시 파라미터를 설정해 도구의 동작을 커스터마이즈할 수 있어요.

# 커스텀 설정으로 초기화
extractor_tool = TavilyExtractorTool(
    extract_depth='advanced',  # 더 종합적인 추출
    include_images=True,       # 이미지 결과 포함
    timeout=90                 # 커스텀 타임아웃
)

기능 (Features)

  • 단일 또는 여러 URL: 하나의 URL에서 콘텐츠를 추출하거나 한 요청에서 여러 URL 처리
  • 설정 가능한 심도: basic(빠름)과 advanced(종합) 추출 모드 선택
  • 이미지 지원: 추출 결과에 이미지 선택적으로 포함
  • 구조화된 출력: 추출된 콘텐츠를 담은 형식 좋은 JSON 반환
  • 에러 처리: 네트워크 타임아웃과 추출 오류에 대한 견고한 처리

응답 형식 (Response Format)

이 도구는 제공된 URL에서 추출된 구조화된 데이터를 나타내는 JSON 문자열을 반환합니다. 정확한 구조는 페이지 콘텐츠와 사용된 extract_depth에 따라 달라집니다. 공통 응답 요소는 다음과 같습니다.

  • Title: 페이지 제목
  • Content: 페이지의 주요 텍스트 콘텐츠
  • Images: 이미지 URL과 메타데이터 (include_images=True인 경우)
  • Metadata: 작성자, 설명 등의 추가 페이지 정보

사용 사례 (Use Cases)

  • 콘텐츠 분석: 경쟁사 웹사이트에서 콘텐츠 추출 및 분석
  • 리서치: 분석을 위해 여러 소스에서 구조화된 데이터 수집
  • 콘텐츠 마이그레이션: 마이그레이션을 위해 기존 웹사이트에서 콘텐츠 추출
  • 모니터링: 변경 감지를 위한 정기적 콘텐츠 추출
  • 데이터 수집: 웹 소스에서 정보의 체계적 추출

응답 구조와 사용 가능한 옵션에 대한 자세한 내용은 Tavily API 문서를 참고하세요.

더 알아보기 (Learn more)