chore: type checking; input validation for web interface
This commit is contained in:
parent
cfc83a7f42
commit
017b7f1ca0
2 changed files with 22 additions and 14 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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":
|
||||
|
|
|
|||
Loading…
Reference in a new issue