Добавлены endpoints для управления параметрами формулы, удалены ненужные методы, исправлена документация
This commit is contained in:
@@ -23,7 +23,9 @@ from app.schemas import (
|
||||
ScoreMetadata,
|
||||
ScoreRequest,
|
||||
ScoreResponse,
|
||||
ScoringParamsResponse,
|
||||
StatsResponse,
|
||||
UpdateScoringParamsRequest,
|
||||
VectorStoreStats,
|
||||
WarmupResponse,
|
||||
)
|
||||
@@ -53,7 +55,7 @@ RAGServiceDep = Annotated[RAGService, Depends(get_service)]
|
||||
summary="Проверка здоровья сервиса",
|
||||
tags=["health"],
|
||||
)
|
||||
async def health_check(service: RAGServiceDep) -> HealthResponse:
|
||||
async def health_check(service: RAGServiceDep, _auth: AuthDep) -> HealthResponse:
|
||||
"""
|
||||
Проверяет состояние сервиса.
|
||||
|
||||
@@ -305,7 +307,6 @@ async def get_stats(service: RAGServiceDep, _auth: AuthDep) -> StatsResponse:
|
||||
model_name=stats["model_name"],
|
||||
model_loaded=stats["model_loaded"],
|
||||
device=stats["device"],
|
||||
cache_dir=stats["cache_dir"],
|
||||
vector_store=VectorStoreStats(**stats["vector_store"]),
|
||||
)
|
||||
|
||||
@@ -349,37 +350,80 @@ async def warmup(service: RAGServiceDep, _auth: AuthDep) -> WarmupResponse:
|
||||
)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/save",
|
||||
response_model=dict,
|
||||
# =============================================================================
|
||||
# Scoring Parameters
|
||||
# =============================================================================
|
||||
|
||||
@router.get(
|
||||
"/scoring/params",
|
||||
response_model=ScoringParamsResponse,
|
||||
responses={
|
||||
401: {"model": ErrorResponse, "description": "Не авторизован"},
|
||||
403: {"model": ErrorResponse, "description": "Доступ запрещён"},
|
||||
},
|
||||
summary="Сохранить векторы на диск",
|
||||
tags=["management"],
|
||||
summary="Получить параметры формулы расчета score",
|
||||
tags=["scoring"],
|
||||
)
|
||||
async def save_vectors(service: RAGServiceDep, _auth: AuthDep) -> dict:
|
||||
async def get_scoring_params(
|
||||
service: RAGServiceDep,
|
||||
_auth: AuthDep,
|
||||
) -> ScoringParamsResponse:
|
||||
"""
|
||||
Сохраняет векторы на диск.
|
||||
Возвращает текущие параметры формулы расчета score.
|
||||
|
||||
Args:
|
||||
service: RAG сервис
|
||||
|
||||
Returns:
|
||||
dict: Результат сохранения
|
||||
ScoringParamsResponse: Текущие параметры формулы
|
||||
"""
|
||||
params = service.vector_store.get_scoring_params()
|
||||
return ScoringParamsResponse(**params)
|
||||
|
||||
|
||||
@router.put(
|
||||
"/scoring/params",
|
||||
response_model=ScoringParamsResponse,
|
||||
responses={
|
||||
400: {"model": ErrorResponse, "description": "Ошибка в запросе"},
|
||||
401: {"model": ErrorResponse, "description": "Не авторизован"},
|
||||
403: {"model": ErrorResponse, "description": "Доступ запрещён"},
|
||||
},
|
||||
summary="Обновить параметры формулы расчета score",
|
||||
tags=["scoring"],
|
||||
)
|
||||
async def update_scoring_params(
|
||||
request: UpdateScoringParamsRequest,
|
||||
service: RAGServiceDep,
|
||||
_auth: AuthDep,
|
||||
) -> ScoringParamsResponse:
|
||||
"""
|
||||
Обновляет параметры формулы расчета score.
|
||||
|
||||
Можно обновить один или несколько параметров одновременно.
|
||||
Параметры, которые не указаны, остаются без изменений.
|
||||
|
||||
Args:
|
||||
request: Запрос с новыми параметрами
|
||||
service: RAG сервис
|
||||
|
||||
Returns:
|
||||
ScoringParamsResponse: Обновленные параметры формулы
|
||||
|
||||
Raises:
|
||||
HTTPException: При невалидных значениях параметров
|
||||
"""
|
||||
try:
|
||||
service.save_vectors()
|
||||
return {
|
||||
"success": True,
|
||||
"message": "Векторы сохранены на диск",
|
||||
"positive_count": service.vector_store.positive_count,
|
||||
"negative_count": service.vector_store.negative_count,
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка сохранения векторов: {e}")
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail={"detail": str(e), "error_type": "VectorStoreError"},
|
||||
params = service.vector_store.update_scoring_params(
|
||||
score_multiplier=request.score_multiplier,
|
||||
k_min=request.k_min,
|
||||
k_max=request.k_max,
|
||||
base_multiplier_factor=request.base_multiplier_factor,
|
||||
)
|
||||
return ScoringParamsResponse(**params)
|
||||
except ValueError as e:
|
||||
logger.warning(f"Невалидные параметры формулы: {e}")
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail={"detail": str(e), "error_type": "ValueError"},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user