first commit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
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
|
||||
Reference in New Issue
Block a user