Добавлены endpoints для управления параметрами формулы, удалены ненужные методы, исправлена документация

This commit is contained in:
2026-01-28 00:55:54 +03:00
parent 671ee4657a
commit f3e31e4310
5 changed files with 264 additions and 55 deletions

View File

@@ -99,7 +99,6 @@ class VectorStoreStats(BaseModel):
total_count: int = Field(..., description="Общее количество примеров")
vector_dim: int = Field(..., description="Размерность векторов")
max_examples: int = Field(..., description="Максимальное количество примеров")
storage_path: Optional[str] = Field(None, description="Путь к файлу хранилища")
class StatsResponse(BaseModel):
@@ -107,7 +106,6 @@ class StatsResponse(BaseModel):
model_name: str = Field(..., description="Название модели")
model_loaded: bool = Field(..., description="Загружена ли модель")
device: Optional[str] = Field(None, description="Устройство (cpu/cuda)")
cache_dir: str = Field(..., description="Директория кеша модели")
vector_store: VectorStoreStats = Field(..., description="Статистика хранилища векторов")
model_config = {
@@ -116,14 +114,12 @@ class StatsResponse(BaseModel):
"model_name": "DeepPavlov/rubert-base-cased",
"model_loaded": True,
"device": "cpu",
"cache_dir": "data/models",
"vector_store": {
"positive_count": 500,
"negative_count": 350,
"total_count": 850,
"vector_dim": 768,
"max_examples": 10000,
"storage_path": "data/vectors/vectors.npz"
"max_examples": 10000
}
}
}
@@ -177,3 +173,113 @@ class HealthResponse(BaseModel):
}
}
}
class ScoringParamsResponse(BaseModel):
"""Ответ с текущими параметрами формулы расчета score."""
score_multiplier: float = Field(
...,
description=(
"Базовый множитель для усиления разницы в скорах. "
"Используется как основа для расчета финального множителя. "
"Чем больше значение, тем сильнее влияние разницы между положительными и отрицательными примерами на итоговый score. "
"Рекомендуемое значение: 5.0"
)
)
k_min: int = Field(
...,
description=(
"Минимальное количество ближайших примеров для расчета среднего сходства. "
"Алгоритм берет топ-k самых похожих примеров из каждого типа (положительные/отрицательные) "
"и вычисляет среднее косинусное сходство. "
"Меньшее значение k делает алгоритм более чувствительным к различиям, но может быть менее стабильным. "
"Рекомендуемое значение: 5"
)
)
k_max: int = Field(
...,
description=(
"Максимальное количество ближайших примеров для расчета среднего сходства. "
"Алгоритм выбирает k в диапазоне [k_min, k_max] в зависимости от количества доступных примеров. "
"Большее значение k делает алгоритм более стабильным, но менее чувствительным к различиям. "
"Должно быть >= k_min. Рекомендуемое значение: 10"
)
)
base_multiplier_factor: float = Field(
...,
description=(
"Множитель для базового score_multiplier. "
"Финальный множитель рассчитывается как: score_multiplier * base_multiplier_factor * адаптивный_коэффициент. "
"Этот параметр усиливает влияние разницы между положительными и отрицательными примерами. "
"Чем больше значение, тем больше диапазон итогового score (от 0 до 1). "
"Рекомендуемое значение: 15.0"
)
)
model_config = {
"json_schema_extra": {
"example": {
"score_multiplier": 5.0,
"k_min": 5,
"k_max": 10,
"base_multiplier_factor": 15.0
}
}
}
class UpdateScoringParamsRequest(BaseModel):
"""Запрос на обновление параметров формулы расчета score."""
score_multiplier: Optional[float] = Field(
None,
gt=0,
description=(
"Базовый множитель для усиления разницы в скорах. "
"Используется как основа для расчета финального множителя. "
"Чем больше значение, тем сильнее влияние разницы между положительными и отрицательными примерами на итоговый score. "
"Должен быть > 0. Рекомендуемое значение: 5.0"
)
)
k_min: Optional[int] = Field(
None,
ge=1,
description=(
"Минимальное количество ближайших примеров для расчета среднего сходства. "
"Алгоритм берет топ-k самых похожих примеров из каждого типа (положительные/отрицательные) "
"и вычисляет среднее косинусное сходство. "
"Меньшее значение k делает алгоритм более чувствительным к различиям, но может быть менее стабильным. "
"Должно быть >= 1. Рекомендуемое значение: 5"
)
)
k_max: Optional[int] = Field(
None,
ge=1,
description=(
"Максимальное количество ближайших примеров для расчета среднего сходства. "
"Алгоритм выбирает k в диапазоне [k_min, k_max] в зависимости от количества доступных примеров. "
"Большее значение k делает алгоритм более стабильным, но менее чувствительным к различиям. "
"Должно быть >= 1 и >= k_min. Рекомендуемое значение: 10"
)
)
base_multiplier_factor: Optional[float] = Field(
None,
gt=0,
description=(
"Множитель для базового score_multiplier. "
"Финальный множитель рассчитывается как: score_multiplier * base_multiplier_factor * адаптивный_коэффициент. "
"Этот параметр усиливает влияние разницы между положительными и отрицательными примерами. "
"Чем больше значение, тем больше диапазон итогового score (от 0 до 1). "
"Должен быть > 0. Рекомендуемое значение: 15.0"
)
)
model_config = {
"json_schema_extra": {
"example": {
"score_multiplier": 5.0,
"k_min": 5,
"k_max": 10,
"base_multiplier_factor": 15.0
}
}
}