49 lines
895 B
Python
49 lines
895 B
Python
"""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
|