Import source: axon/models
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
+185
@@ -0,0 +1,185 @@
|
||||
from typing import Literal
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class SearchRequest(BaseModel):
|
||||
query: str
|
||||
max_results: int = Field(default=10, ge=1, le=20)
|
||||
search_depth: Literal["basic", "advanced"] = "basic"
|
||||
include_answer: bool = False
|
||||
include_raw_content: bool = False
|
||||
domains_whitelist: list[str] = []
|
||||
domains_blacklist: list[str] = []
|
||||
topic: Literal["general", "news"] = "general"
|
||||
time_range: Literal["day", "week", "month", "year"] | None = None
|
||||
include_private: bool = True
|
||||
|
||||
|
||||
class SearchResult(BaseModel):
|
||||
title: str
|
||||
url: str
|
||||
content: str
|
||||
score: float = 0.5
|
||||
published_date: str | None = None
|
||||
favicon: str | None = None
|
||||
source_quality: float | None = None
|
||||
|
||||
|
||||
class SearchResponse(BaseModel):
|
||||
query: str
|
||||
answer: str | None = None
|
||||
results: list[SearchResult]
|
||||
response_time: float
|
||||
credits_used: int = 1
|
||||
|
||||
|
||||
class ExtractRequest(BaseModel):
|
||||
urls: list[str]
|
||||
include_images: bool = False
|
||||
|
||||
|
||||
class ExtractResult(BaseModel):
|
||||
url: str
|
||||
title: str | None = None
|
||||
content: str = ""
|
||||
success: bool
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class ExtractResponse(BaseModel):
|
||||
results: list[ExtractResult]
|
||||
|
||||
|
||||
class CrawlRequest(BaseModel):
|
||||
url: str
|
||||
max_depth: int = Field(default=1, ge=0, le=3)
|
||||
max_pages: int = Field(default=20, ge=1, le=50)
|
||||
include_raw_content: bool = False
|
||||
instructions: str | None = None
|
||||
|
||||
|
||||
class CrawlResult(BaseModel):
|
||||
url: str
|
||||
title: str | None = None
|
||||
content: str = ""
|
||||
links: list[str] = []
|
||||
depth: int = 0
|
||||
success: bool
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class CrawlResponse(BaseModel):
|
||||
start_url: str
|
||||
results: list[CrawlResult]
|
||||
response_time: float
|
||||
|
||||
|
||||
class MapRequest(BaseModel):
|
||||
url: str
|
||||
max_depth: int = Field(default=1, ge=0, le=3)
|
||||
max_pages: int = Field(default=50, ge=1, le=200)
|
||||
instructions: str | None = None
|
||||
|
||||
|
||||
class MapResponse(BaseModel):
|
||||
start_url: str
|
||||
urls: list[str]
|
||||
response_time: float
|
||||
|
||||
|
||||
class ResearchRequest(BaseModel):
|
||||
query: str
|
||||
depth: Literal["basic", "deep"] = "basic"
|
||||
output_format: Literal["markdown", "json"] = "markdown"
|
||||
search_depth: Literal["basic", "advanced"] = "advanced"
|
||||
max_results_per_query: int = Field(default=5, ge=1, le=10)
|
||||
|
||||
|
||||
class ResearchResponse(BaseModel):
|
||||
query: str
|
||||
report: str
|
||||
sources: list[SearchResult]
|
||||
sub_queries: list[str]
|
||||
response_time: float
|
||||
|
||||
|
||||
class MetricsResponse(BaseModel):
|
||||
requests_total: int
|
||||
requests_by_path: dict[str, int]
|
||||
errors_total: int
|
||||
average_latency_ms: float
|
||||
|
||||
|
||||
class CitationValidationRequest(BaseModel):
|
||||
report: str
|
||||
sources: list[SearchResult]
|
||||
|
||||
|
||||
class CitationValidationResponse(BaseModel):
|
||||
citation_count: int
|
||||
missing_citations: list[int]
|
||||
valid: bool
|
||||
|
||||
|
||||
class IngestDocument(BaseModel):
|
||||
id: str | None = None
|
||||
title: str
|
||||
content: str
|
||||
url: str | None = None
|
||||
metadata: dict[str, str] = {}
|
||||
|
||||
|
||||
class IngestRequest(BaseModel):
|
||||
documents: list[IngestDocument]
|
||||
|
||||
|
||||
class IngestResponse(BaseModel):
|
||||
indexed: int
|
||||
|
||||
|
||||
class IndexSearchRequest(BaseModel):
|
||||
query: str
|
||||
max_results: int = Field(default=10, ge=1, le=50)
|
||||
|
||||
|
||||
class IndexDocument(BaseModel):
|
||||
id: str
|
||||
title: str
|
||||
content: str
|
||||
url: str | None = None
|
||||
score: float
|
||||
|
||||
|
||||
class IndexSearchResponse(BaseModel):
|
||||
query: str
|
||||
results: list[IndexDocument]
|
||||
|
||||
|
||||
class JobCreateResponse(BaseModel):
|
||||
job_id: str
|
||||
status: Literal["queued", "running", "succeeded", "failed"]
|
||||
|
||||
|
||||
class JobResponse(BaseModel):
|
||||
job_id: str
|
||||
kind: str
|
||||
status: Literal["queued", "running", "succeeded", "failed"]
|
||||
result: dict | None = None
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class TavilySearchRequest(BaseModel):
|
||||
query: str
|
||||
search_depth: Literal["basic", "advanced"] = "basic"
|
||||
max_results: int = Field(default=10, ge=1, le=20)
|
||||
include_answer: bool | str = False
|
||||
include_raw_content: bool = False
|
||||
include_domains: list[str] = []
|
||||
exclude_domains: list[str] = []
|
||||
topic: Literal["general", "news"] = "general"
|
||||
time_range: Literal["day", "week", "month", "year"] | None = None
|
||||
|
||||
|
||||
class TavilyExtractRequest(BaseModel):
|
||||
urls: str | list[str]
|
||||
include_images: bool = False
|
||||
Reference in New Issue
Block a user