46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from typing import Optional
|
|
from modules.interfaces.interface_web_model import (
|
|
WebCrawlActionResult,
|
|
WebSearchActionResult,
|
|
WebSearchRequest,
|
|
WebCrawlRequest,
|
|
WebScrapeActionResult,
|
|
WebScrapeRequest,
|
|
)
|
|
|
|
from dataclasses import dataclass
|
|
from modules.connectors.connector_tavily import ConnectorTavily
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class WebInterface:
|
|
connector_tavily: ConnectorTavily
|
|
|
|
def __post_init__(self) -> None:
|
|
if self.connector_tavily is None:
|
|
raise TypeError(
|
|
"connector_tavily must be provided. "
|
|
"Use `await WebInterface.create()` or pass a ConnectorTavily."
|
|
)
|
|
|
|
@classmethod
|
|
async def create(cls) -> "WebInterface":
|
|
connector_tavily = await ConnectorTavily.create()
|
|
|
|
return WebInterface(connector_tavily=connector_tavily)
|
|
|
|
async def search(
|
|
self, web_search_request: WebSearchRequest
|
|
) -> WebSearchActionResult:
|
|
# NOTE: Add connectors here
|
|
return await self.connector_tavily.search_urls(web_search_request)
|
|
|
|
async def crawl(self, web_crawl_request: WebCrawlRequest) -> WebCrawlActionResult:
|
|
# NOTE: Add connectors here
|
|
return await self.connector_tavily.crawl_urls(web_crawl_request)
|
|
|
|
async def scrape(
|
|
self, web_scrape_request: WebScrapeRequest
|
|
) -> WebScrapeActionResult:
|
|
# NOTE: Add connectors here
|
|
return await self.connector_tavily.scrape(web_scrape_request)
|