gateway/modules/interfaces/interface_web_objects.py
2025-09-01 16:06:29 +02:00

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)