feat: Update default models for extraction and normalization to GPT-5.6 Luna across configuration files and documentation. Remove deprecated code and improve pricing details in the UI components. Add tests to ensure correct model settings and pricing calculations.
This commit is contained in:
@@ -17,6 +17,7 @@ from infrastructure.serialization import flatten_extraction_result
|
||||
from api.desktop_ingest import (
|
||||
_finalize_radicado_if_ready,
|
||||
_paths_for_type,
|
||||
_service_for_model,
|
||||
mark_task_completed_if_done,
|
||||
)
|
||||
from domain.profiles import get_profile
|
||||
@@ -27,6 +28,27 @@ from domain.rate_limiter import get_rate_limiter
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _service_for_request(
|
||||
ctx: dict[str, Any], request: dict[str, Any]
|
||||
) -> Any:
|
||||
"""Resuelve y reutiliza el servicio correspondiente al modelo solicitado."""
|
||||
base_service = ctx["service"]
|
||||
requested_model = str(request.get("model") or "").strip() or None
|
||||
if not requested_model:
|
||||
return base_service
|
||||
|
||||
current_model = getattr(getattr(base_service, "extractor", None), "model", None)
|
||||
if current_model == requested_model:
|
||||
return base_service
|
||||
|
||||
services_by_model = ctx.setdefault("services_by_model", {})
|
||||
service = services_by_model.get(requested_model)
|
||||
if service is None:
|
||||
service = _service_for_model(base_service, requested_model)
|
||||
services_by_model[requested_model] = service
|
||||
return service
|
||||
|
||||
|
||||
async def process_document(
|
||||
ctx: dict[str, Any],
|
||||
*,
|
||||
@@ -52,7 +74,6 @@ async def process_document(
|
||||
instruction: Instrucción de extracción personalizada.
|
||||
tiff_page_range: Rango de páginas TIFF [inicio, fin].
|
||||
"""
|
||||
service = ctx["service"]
|
||||
rate_limiter = get_rate_limiter()
|
||||
tiff_range = tuple(tiff_page_range) if tiff_page_range else None
|
||||
|
||||
@@ -72,6 +93,14 @@ async def process_document(
|
||||
logger.warning("Tarea %s no encontrada — saltando %s", task_id, filename)
|
||||
return {"skipped": True, "reason": "task_not_found"}
|
||||
|
||||
service = _service_for_request(ctx, request)
|
||||
effective_model = getattr(getattr(service, "extractor", None), "model", "?")
|
||||
logger.info(
|
||||
"Modelo resuelto para task=%s: %s",
|
||||
task_id,
|
||||
effective_model,
|
||||
)
|
||||
|
||||
fields: list[str] = list(request.get("fields") or [])
|
||||
alias_map: dict[str, str] = dict(request.get("alias_map") or {})
|
||||
structure_mode: str = str(request.get("structure_mode") or "radicados")
|
||||
|
||||
Reference in New Issue
Block a user