Exa Search 도구
Exa Search 도구 (ExaSearchTool)
CrewAI의 ExaSearchTool은 가장 빠르고 정확한 웹 검색 API인 Exa를 사용해 에이전트가 웹을 검색할 수 있게 해주는 도구예요. 어떤 쿼리든 가장 관련성 높은 결과를 반환하며, 토큰 효율적인 하이라이트와 전체 페이지 콘텐츠 옵션을 제공합니다.
출처: 문서
본문
ExaSearchTool은 Exa를 사용해 CrewAI 에이전트가 웹을 검색할 수 있게 해줍니다. Exa는 가장 빠르고 정확한 웹 검색 API로, 어떤 쿼리에도 가장 관련성 높은 결과를 반환하며, 토큰 효율적인 하이라이트와 전체 페이지 콘텐츠 옵션을 제공해요.
설치 (Installation)
CrewAI tools 패키지를 설치하세요.
pip install 'crewai[tools]'
환경변수 (Environment Variables)
Exa API 키를 환경변수로 설정하세요.
export EXA_API_KEY='your_exa_api_key'
API 키는 Exa 대시보드에서 받을 수 있어요.
사용 예시 (Example Usage)
CrewAI 에이전트 안에서 ExaSearchTool을 사용하는 방법은 다음과 같습니다.
import os
from crewai import Agent, Task, Crew
from crewai_tools import ExaSearchTool
# 도구 초기화
exa_tool = ExaSearchTool()
# 이 도구를 사용하는 에이전트 생성
researcher = Agent(
role='Research Analyst',
goal='Find the latest information on any topic',
backstory='An expert researcher who finds the most relevant and up-to-date information.',
tools=[exa_tool],
verbose=True
)
# 에이전트를 위한 태스크 생성
research_task = Task(
description='Find the top 3 recent breakthroughs in quantum computing.',
expected_output='A summary of the top 3 breakthroughs with source URLs.',
agent=researcher
)
# 크루 구성 후 실행
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=True
)
result = crew.kickoff()
print(result)
설정 옵션 (Configuration Options)
ExaSearchTool은 초기화 시 다음 파라미터를 받습니다.
type(str, optional): 사용할 검색 유형. 기본값"auto". 옵션:"auto","instant","fast","deep".highlights(bool 또는 dict, optional): 전체 페이지 대신 쿼리에 가장 관련성 높은 토큰 효율적인 발췌문을 반환. 기본값True.{"max_characters": 4000}같은 dict로 설정하거나False로 비활성화.content(bool, optional): 결과에 전체 페이지 콘텐츠 포함 여부. 기본값False.api_key(str, optional): 사용자의 Exa API 키. 제공하지 않으면EXA_API_KEY환경변수로 폴백.base_url(str, optional): 커스텀 API 서버 URL. 제공하지 않으면EXA_BASE_URL환경변수로 폴백.
도구를 호출할 때(또는 에이전트가 호출할 때) 다음 검색 파라미터를 사용할 수 있어요.
search_query(str): 필수. 검색 쿼리 문자열.start_published_date(str, optional): 이 날짜 이후 게시된 결과만 필터 (ISO 8601 형식, 예:"2024-01-01").end_published_date(str, optional): 이 날짜 이전 게시된 결과만 필터 (ISO 8601 형식).include_domains(list[str], optional): 검색을 제한할 도메인 목록.
고급 사용법 (Advanced Usage)
대부분의 에이전트 워크플로에는 highlights를 권장합니다. 각 결과에서 가장 관련성 높은 발췌문을 반환하고 전체 페이지 콘텐츠보다 훨씬 적은 토큰을 사용해요.
# 쿼리에 가장 관련성 높은 토큰 효율적인 발췌문 얻기
exa_tool = ExaSearchTool(
highlights=True,
type="auto",
)
# 에이전트에서 사용
agent = Agent(
role="Researcher",
goal="Answer questions with current web data",
tools=[exa_tool]
)
철저한 다단계 검색에는 type="deep"을 사용하세요.
exa_tool = ExaSearchTool(
highlights=True,
type="deep",
)
하이라이트와 전체 콘텐츠 중 선택에 대한 자세한 내용은 Exa 검색 모범 사례를 참고하세요.
MCP로 Exa 사용하기 (Using Exa via MCP)
에이전트를 Exa의 호스팅 MCP 서버에 연결할 수도 있어요. x-api-key 헤더로 API 키를 전달하세요.
from crewai import Agent
from crewai.mcp import MCPServerHTTP
agent = Agent(
role="Research Analyst",
goal="Find and analyze information on the web",
backstory="Expert researcher with access to Exa's tools",
mcps=[
MCPServerHTTP(
url="https://mcp.exa.ai/mcp",
headers={"x-api-key": "YOUR_EXA_API_KEY"},
),
],
)
API 키는 Exa 대시보드에서 받으세요. CrewAI의 MCP에 대한 자세한 내용은 MCP 개요를 참고하세요.
기능 (Features)
- 토큰 효율적인 하이라이트: 각 결과에서 가장 관련성 높은 발췌문을 얻습니다. 전체 텍스트보다 토큰이 약 10배 적어요
- 시맨틱 검색: 키워드가 아닌 의미를 기반으로 결과 찾기
- 전체 콘텐츠 검색: 검색 결과와 함께 웹 페이지의 전체 텍스트 가져오기
- 날짜 필터링: 게시 날짜 필터로 결과를 특정 기간으로 제한
- 도메인 필터링: 특정 도메인으로 검색 제한
EXASearchTool은 ExaSearchTool의 deprecated 별칭입니다. 기존 import는 계속 동작하지만 deprecation 경고를 내보내니, ExaSearchTool로 마이그레이션해 주세요.