wrolpi/modules/ai/schema.py

77 lines
1.7 KiB
Python
Raw Normal View History

import dataclasses
from typing import List, Optional
@dataclasses.dataclass
class AISearchRequest:
search_str: Optional[str] = None
limit: int = 5
offset: int = 0
mimetypes: Optional[List[str]] = None
tag_names: Optional[List[str]] = None
@dataclasses.dataclass
class AIVideoSearchRequest:
search_str: Optional[str] = None
limit: int = 5
offset: int = 0
channel_id: Optional[int] = None
tag_names: Optional[List[str]] = None
@dataclasses.dataclass
class AIArchiveSearchRequest:
search_str: Optional[str] = None
limit: int = 5
offset: int = 0
domain: Optional[str] = None
tag_names: Optional[List[str]] = None
@dataclasses.dataclass
class AIDocSearchRequest:
search_str: Optional[str] = None
author: Optional[str] = None
subject: Optional[str] = None
language: Optional[str] = None
mimetype: Optional[str] = None
limit: int = 5
offset: int = 0
tag_names: Optional[List[str]] = None
@dataclasses.dataclass
class AIZimSearchRequest:
search_str: Optional[str] = None
zim_id: Optional[int] = None
limit: int = 5
offset: int = 0
@dataclasses.dataclass
class AIHelpSearchRequest:
search_str: Optional[str] = None
limit: int = 5
@dataclasses.dataclass
class AIManageSettingsRequest:
enabled: Optional[bool] = None
active_model: Optional[str] = None
idle_unload_minutes: Optional[int] = None
context_size: Optional[int] = None
@dataclasses.dataclass
class AISearchResponse:
results: list = dataclasses.field(default_factory=list)
total: int = 0
@dataclasses.dataclass
class AIPagedTextResponse:
content: str = ''
next_offset: Optional[int] = None
total_chars: int = 0