gateway/modules/interfaces/interfaceWebObjects.py
2025-09-25 16:59:44 +02:00

51 lines
No EOL
1.6 KiB
Python

from dataclasses import dataclass
from modules.datamodels.datamodelWeb import (
WebCrawlActionResult,
WebCrawlActionDocument,
WebCrawlDocumentData,
WebCrawlRequest,
WebCrawlResultItem,
WebScrapeActionResult,
WebScrapeActionDocument,
WebSearchDocumentData as WebScrapeDocumentData,
WebScrapeRequest,
WebScrapeResultItem,
WebSearchActionResult,
WebSearchActionDocument,
WebSearchDocumentData,
WebSearchRequest,
WebSearchResultItem,
)
from modules.connectors.connectorWebTavily import ConnectorWeb
from modules.datamodels.datamodelWorkflow import ActionDocument
@dataclass(slots=True)
class WebInterface:
connectorWebTavily: ConnectorWeb
def __post_init__(self) -> None:
if self.connectorWebTavily is None:
raise TypeError(
"connectorWebTavily must be provided. "
"Use `await WebInterface.create()` or pass a ConnectorWeb."
)
@classmethod
async def create(cls) -> "WebInterface":
connectorWebTavily = await ConnectorWeb.create()
return WebInterface(connectorWebTavily=connectorWebTavily)
# Methods
async def search(self, web_search_request: WebSearchRequest) -> WebSearchActionResult:
return await self.connectorWebTavily.search(web_search_request)
async def crawl(self, web_crawl_request: WebCrawlRequest) -> WebCrawlActionResult:
return await self.connectorWebTavily.crawl(web_crawl_request)
async def scrape(self, web_scrape_request: WebScrapeRequest) -> WebScrapeActionResult:
return await self.connectorWebTavily.scrape(web_scrape_request)
# Helpers moved to MethodWeb