93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
status: str
|
|
|
|
|
|
class IndexRequest(BaseModel):
|
|
source_ids: list[int] | None = None
|
|
law_types: list[str] | None = None
|
|
reset_collection: bool = True
|
|
batch_size: int | None = None
|
|
|
|
|
|
class IndexResponse(BaseModel):
|
|
indexed_chunks: int
|
|
indexed_sources: int
|
|
collection_name: str
|
|
|
|
|
|
class SearchRequest(BaseModel):
|
|
question: str
|
|
category: str | None = None
|
|
region: str | None = None
|
|
user_type: str | None = None
|
|
history: list[dict[str, str]] = Field(default_factory=list)
|
|
law_types: list[str] | None = None
|
|
top_k: int = 5
|
|
|
|
|
|
class RetrievedChunk(BaseModel):
|
|
chunk_id: int
|
|
source_id: int
|
|
source_title: str
|
|
source_url: str | None = None
|
|
law_type: str | None = None
|
|
article_number: str | None = None
|
|
article_title: str | None = None
|
|
chunk_text: str
|
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
score: float
|
|
|
|
|
|
class ClassificationResult(BaseModel):
|
|
legal_domain: str
|
|
issue_type: str
|
|
jurisdiction: str = "RU"
|
|
region: str | None = None
|
|
needs_clarification: bool = False
|
|
clarification_questions: list[str] = Field(default_factory=list)
|
|
search_queries: list[str] = Field(default_factory=list)
|
|
filters: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class StructuredInitialAnswer(BaseModel):
|
|
short_conclusion: str
|
|
legal_points: list[str] = Field(default_factory=list)
|
|
action_steps: list[str] = Field(default_factory=list)
|
|
risks: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class SearchResponse(BaseModel):
|
|
classification: ClassificationResult
|
|
generated_queries: list[str]
|
|
retrieved_chunks: list[RetrievedChunk]
|
|
|
|
|
|
class AnswerRequest(BaseModel):
|
|
user_id: int | None = None
|
|
consultation_id: int | None = None
|
|
save_history: bool = False
|
|
question: str
|
|
category: str | None = None
|
|
region: str | None = None
|
|
user_type: str | None = None
|
|
history: list[dict[str, str]] = Field(default_factory=list)
|
|
law_types: list[str] | None = None
|
|
top_k: int = 5
|
|
|
|
|
|
class AnswerResponse(BaseModel):
|
|
classification: ClassificationResult
|
|
generated_queries: list[str]
|
|
retrieved_chunks: list[RetrievedChunk]
|
|
answer: str
|
|
consultation_id: int | None = None
|
|
user_message_id: int | None = None
|
|
assistant_message_id: int | None = None
|