Source code for elm.web.search.tavily

# -*- coding: utf-8 -*-
"""ELM Web Scraping - Tavily API search"""
import logging

from tavily import TavilyClient

from elm.web.search.base import APISearchEngineLinkSearch


logger = logging.getLogger(__name__)


[docs] class APITavilySearch(APISearchEngineLinkSearch): """Search the web for links using the Tavily API""" _SE_NAME = "Tavily API" API_KEY_VAR = "TAVILY_API_KEY" """Environment variable that should contain the Tavily API key""" async def _search(self, query, num_results=10): """Search web for links related to a query""" client = TavilyClient(api_key=self.api_key) response = client.search(query=query, max_results=num_results) results = response.get("results", []) return list(filter(None, (info.get('url', "").replace("+", "%20") for info in results)))