Skip to content

TavilySearchTool

autogen.beta.tools.search.tavily.TavilySearchTool #

TavilySearchTool(api_key=None, max_results=None, search_depth=None, topic=None, include_answer=None, include_raw_content=None, include_images=None, time_range=None, start_date=None, end_date=None, days=None, include_domains=None, exclude_domains=None, country=None, auto_parameters=None, include_favicon=None, client=None, name='tavily_search', *, description='Search the web using Tavily. Returns titles, URLs, snippets, relevance scores, and optional LLM-generated answer, raw content, and images.', middleware=())

Bases: Tool

Source code in autogen/beta/tools/search/tavily.py
def __init__(
    self,
    api_key: str | None = None,
    max_results: int | Variable | None = None,
    search_depth: SearchDepth | Variable | None = None,
    topic: Topic | Variable | None = None,
    include_answer: IncludeAnswer | Variable | None = None,
    include_raw_content: IncludeRawContent | Variable | None = None,
    include_images: bool | Variable | None = None,
    time_range: TimeRange | Variable | None = None,
    start_date: str | Variable | None = None,
    end_date: str | Variable | None = None,
    days: int | Variable | None = None,
    include_domains: Sequence[str] | Variable | None = None,
    exclude_domains: Sequence[str] | Variable | None = None,
    country: str | Variable | None = None,
    auto_parameters: bool | Variable | None = None,
    include_favicon: bool | Variable | None = None,
    client: TavilyClient | None = None,
    name: str = "tavily_search",
    *,
    description: str = (
        "Search the web using Tavily. Returns titles, URLs, snippets, relevance scores, "
        "and optional LLM-generated answer, raw content, and images."
    ),
    middleware: Iterable[ToolMiddleware] = (),
) -> None:
    _client = client if client is not None else TavilyClient(api_key=api_key)

    def tavily_search(
        query: Annotated[str, Field(description="The search query string.")],
        ctx: Context,
    ) -> SearchResponse:
        """Search the web using Tavily and return structured results."""
        params: dict = {
            "max_results": resolve_variable(max_results, ctx, param_name="max_results"),
            "search_depth": resolve_variable(search_depth, ctx, param_name="search_depth"),
            "topic": resolve_variable(topic, ctx, param_name="topic"),
            "include_answer": resolve_variable(include_answer, ctx, param_name="include_answer"),
            "include_raw_content": resolve_variable(include_raw_content, ctx, param_name="include_raw_content"),
            "include_images": resolve_variable(include_images, ctx, param_name="include_images"),
            "time_range": resolve_variable(time_range, ctx, param_name="time_range"),
            "start_date": resolve_variable(start_date, ctx, param_name="start_date"),
            "end_date": resolve_variable(end_date, ctx, param_name="end_date"),
            "days": resolve_variable(days, ctx, param_name="days"),
            "include_domains": resolve_variable(include_domains, ctx, param_name="include_domains"),
            "exclude_domains": resolve_variable(exclude_domains, ctx, param_name="exclude_domains"),
            "country": resolve_variable(country, ctx, param_name="country"),
            "auto_parameters": resolve_variable(auto_parameters, ctx, param_name="auto_parameters"),
            "include_favicon": resolve_variable(include_favicon, ctx, param_name="include_favicon"),
        }
        kwargs = {k: v for k, v in params.items() if v is not None}

        raw = _client.search(query, **kwargs)
        results = [
            SearchResult(
                title=r.get("title", ""),
                url=r.get("url", ""),
                snippet=r.get("content", ""),
                score=r.get("score"),
                raw_content=r.get("raw_content"),
                favicon=r.get("favicon"),
            )
            for r in (raw.get("results") or [])
        ]
        return SearchResponse(
            query=raw.get("query", query),
            results=results,
            answer=raw.get("answer"),
            images=list(raw.get("images") or []),
        )

    self._tool: FunctionTool = tool(
        tavily_search,
        name=name,
        description=description,
        middleware=middleware,
    )
    self.name = name

name instance-attribute #

name = name

schemas async #

schemas(context)
Source code in autogen/beta/tools/search/tavily.py
async def schemas(self, context: Context) -> list:
    return await self._tool.schemas(context)

register #

register(stack, context, *, middleware=())
Source code in autogen/beta/tools/search/tavily.py
def register(
    self,
    stack: ExitStack,
    context: Context,
    *,
    middleware: Iterable[BaseMiddleware] = (),
) -> None:
    self._tool.register(stack, context, middleware=middleware)

set_provider #

set_provider(provider)
Source code in autogen/beta/tools/tool.py
def set_provider(self, provider: Provider) -> None:
    pass