51 lines
No EOL
1.6 KiB
Python
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 |