chore: type checking; input validation for web interface

This commit is contained in:
Christopher Gondek 2025-09-01 16:06:29 +02:00
parent cfc83a7f42
commit 017b7f1ca0
2 changed files with 22 additions and 14 deletions

View file

@ -2,7 +2,7 @@
from abc import ABC, abstractmethod
from modules.interfaces.interfaceChatModel import ActionDocument, ActionResult
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, HttpUrl
from typing import List
@ -12,21 +12,21 @@ from typing import List
class WebSearchRequest(BaseModel):
query: str
max_results: int
query: str = Field(min_length=1, max_length=400)
max_results: int = Field(ge=1, le=20)
class WebSearchResultItem(BaseModel):
"""Individual search result"""
title: str
url: str
url: HttpUrl
class WebSearchDocumentData(BaseModel):
"""Complete search results document"""
query: str
query: str = Field(min_length=1, max_length=400)
results: List[WebSearchResultItem]
total_count: int
@ -50,20 +50,20 @@ class WebSearchBase(ABC):
class WebCrawlRequest(BaseModel):
urls: List[str]
urls: List[HttpUrl]
class WebCrawlResultItem(BaseModel):
"""Individual crawl result"""
url: str
url: HttpUrl
content: str
class WebCrawlDocumentData(BaseModel):
"""Complete crawl results document"""
urls: List[str]
urls: List[HttpUrl]
results: List[WebCrawlResultItem]
total_count: int
@ -89,21 +89,21 @@ class WebCrawlBase(ABC):
class WebScrapeRequest(BaseModel):
query: str
max_results: int
query: str = Field(min_length=1, max_length=400)
max_results: int = Field(ge=1, le=20)
class WebScrapeResultItem(BaseModel):
"""Individual scrape result"""
url: str
url: HttpUrl
content: str
class WebScrapeDocumentData(BaseModel):
"""Complete scrape results document"""
query: str
query: str = Field(min_length=1, max_length=400)
results: List[WebScrapeResultItem]
total_count: int

View file

@ -1,3 +1,4 @@
from typing import Optional
from modules.interfaces.interface_web_model import (
WebCrawlActionResult,
WebSearchActionResult,
@ -11,9 +12,16 @@ from dataclasses import dataclass
from modules.connectors.connector_tavily import ConnectorTavily
@dataclass
@dataclass(slots=True)
class WebInterface:
connector_tavily: ConnectorTavily = None
connector_tavily: ConnectorTavily
def __post_init__(self) -> None:
if self.connector_tavily is None:
raise TypeError(
"connector_tavily must be provided. "
"Use `await WebInterface.create()` or pass a ConnectorTavily."
)
@classmethod
async def create(cls) -> "WebInterface":