"""Base class for web classes.""" from abc import ABC, abstractmethod from modules.interfaces.interfaceChatModel import ActionDocument, ActionResult from pydantic import BaseModel, Field from typing import List # --- Web search --- # query -> list of URLs class WebSearchRequest(BaseModel): query: str max_results: int class WebSearchDocumentData(BaseModel): title: str url: str class WebSearchActionDocument(ActionDocument): documentData: WebSearchDocumentData class WebSearchActionResult(ActionResult): documents: List[WebSearchActionDocument] = Field(default_factory=list) class WebSearchBase(ABC): @abstractmethod async def search_urls(self, request: WebSearchRequest) -> WebSearchActionResult: ... # --- Web crawl --- # list of URLs -> list of extracted HTML content # TODO # --- Web query --- # query -> list of extracted text # TODO