feat: добавлен тестовый режим X-Test-Mode
This commit is contained in:
@@ -5,7 +5,7 @@ FastAPI endpoints для RAG сервиса.
|
|||||||
import logging
|
import logging
|
||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException, status
|
from fastapi import APIRouter, Depends, Header, HTTPException, status
|
||||||
|
|
||||||
from app import __version__
|
from app import __version__
|
||||||
from app.api.auth import AuthDep
|
from app.api.auth import AuthDep
|
||||||
@@ -160,17 +160,33 @@ async def add_positive_example(
|
|||||||
request: ExampleRequest,
|
request: ExampleRequest,
|
||||||
service: RAGServiceDep,
|
service: RAGServiceDep,
|
||||||
_auth: AuthDep,
|
_auth: AuthDep,
|
||||||
|
x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"),
|
||||||
) -> ExampleResponse:
|
) -> ExampleResponse:
|
||||||
"""
|
"""
|
||||||
Добавляет текст как положительный пример (опубликованный пост).
|
Добавляет текст как положительный пример (опубликованный пост).
|
||||||
|
|
||||||
|
При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим).
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
request: Запрос с текстом
|
request: Запрос с текстом
|
||||||
service: RAG сервис
|
service: RAG сервис
|
||||||
|
x_test_mode: Заголовок тестового режима
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
ExampleResponse: Результат добавления
|
ExampleResponse: Результат добавления
|
||||||
"""
|
"""
|
||||||
|
# Тестовый режим — не сохраняем примеры
|
||||||
|
is_test = x_test_mode and x_test_mode.lower() == "true"
|
||||||
|
|
||||||
|
if is_test:
|
||||||
|
logger.info("Тестовый режим: положительный пример НЕ сохранён")
|
||||||
|
return ExampleResponse(
|
||||||
|
success=True,
|
||||||
|
message="Тестовый режим: пример не сохранён",
|
||||||
|
positive_count=service.vector_store.positive_count,
|
||||||
|
negative_count=service.vector_store.negative_count,
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
added = await service.add_positive_example(request.text)
|
added = await service.add_positive_example(request.text)
|
||||||
|
|
||||||
@@ -209,17 +225,33 @@ async def add_negative_example(
|
|||||||
request: ExampleRequest,
|
request: ExampleRequest,
|
||||||
service: RAGServiceDep,
|
service: RAGServiceDep,
|
||||||
_auth: AuthDep,
|
_auth: AuthDep,
|
||||||
|
x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"),
|
||||||
) -> ExampleResponse:
|
) -> ExampleResponse:
|
||||||
"""
|
"""
|
||||||
Добавляет текст как отрицательный пример (отклоненный пост).
|
Добавляет текст как отрицательный пример (отклоненный пост).
|
||||||
|
|
||||||
|
При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим).
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
request: Запрос с текстом
|
request: Запрос с текстом
|
||||||
service: RAG сервис
|
service: RAG сервис
|
||||||
|
x_test_mode: Заголовок тестового режима
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
ExampleResponse: Результат добавления
|
ExampleResponse: Результат добавления
|
||||||
"""
|
"""
|
||||||
|
# Тестовый режим — не сохраняем примеры
|
||||||
|
is_test = x_test_mode and x_test_mode.lower() == "true"
|
||||||
|
|
||||||
|
if is_test:
|
||||||
|
logger.info("Тестовый режим: отрицательный пример НЕ сохранён")
|
||||||
|
return ExampleResponse(
|
||||||
|
success=True,
|
||||||
|
message="Тестовый режим: пример не сохранён",
|
||||||
|
positive_count=service.vector_store.positive_count,
|
||||||
|
negative_count=service.vector_store.negative_count,
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
added = await service.add_negative_example(request.text)
|
added = await service.add_negative_example(request.text)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user