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