fix: validate retrieval-only chat questions before dispatch

This commit is contained in:
2026-10-17 12:17:52 +08:00
parent 1398938437
commit 4efcf83e4c
9 changed files with 217 additions and 16 deletions
+1 -4
View File
@@ -26,9 +26,6 @@ def chat(payload: ChatRequest, db: Session = Depends(get_db)) -> ChatResponse:
"因此系统仅返回可追溯证据,不生成或改写答案。"
),
status="retrieval_only",
sources=[
{"title": hit.title, "source_url": hit.source_url}
for hit in result.results
],
sources=[{"title": hit.title, "source_url": hit.source_url} for hit in result.results],
retrieval_run_id=result.run_id,
)
+6 -3
View File
@@ -1,11 +1,14 @@
from typing import Literal
from uuid import UUID
from pydantic import BaseModel, Field
from pydantic import BaseModel
from app.schemas.catalog import Input
from app.schemas.retrieval import QueryText
class ChatRequest(BaseModel):
question: str = Field(min_length=1, max_length=2000)
class ChatRequest(Input):
question: QueryText
class SourcePreview(BaseModel):
+4 -2
View File
@@ -1,14 +1,16 @@
from datetime import datetime
from typing import Literal
from typing import Annotated, Literal
from uuid import UUID
from pydantic import BaseModel, Field
from app.schemas.catalog import Category, Input
QueryText = Annotated[str, Field(min_length=1, max_length=500)]
class RetrievalRequest(Input):
query: str = Field(min_length=1, max_length=500)
query: QueryText
mode: Literal["keyword"] = "keyword"
top_k: int = Field(default=5, ge=1, le=20)
category: Category | None = None