forked from ericorps/ia-microservice
Versión 1.0
This commit is contained in:
BIN
app/schemas/__pycache__/document_standard.cpython-312.pyc
Normal file
BIN
app/schemas/__pycache__/document_standard.cpython-312.pyc
Normal file
Binary file not shown.
60
app/schemas/document_standard.py
Normal file
60
app/schemas/document_standard.py
Normal file
@@ -0,0 +1,60 @@
|
||||
"""
|
||||
Esquema de resultado esperado de modelos de análisis de documentos.
|
||||
|
||||
Propósito:
|
||||
Define el formato estándar de los resultados devueltos por los modelos de análisis
|
||||
de documentos, independientemente del proveedor de IA utilizado.
|
||||
|
||||
Homologación:
|
||||
Garantiza que el resultado del análisis de documentos siempre se entregue en el mismo
|
||||
formato estándar para Qualidot.
|
||||
"""
|
||||
from dataclasses import dataclass
|
||||
|
||||
from fastapi import UploadFile
|
||||
from fastapi.params import File, Form
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List, Optional
|
||||
|
||||
class DocumentEvaluationCriteria(BaseModel):
|
||||
"""Modelo que representa un criterio de evaluación específico dentro de una rúbrica de análisis de imágenes."""
|
||||
name: str = Field(..., description="Nombre del criterio de evaluación")
|
||||
description: str = Field(None, description="Descripción detallada del criterio")
|
||||
score: float = Field(None, description="Puntuación asignada al criterio después del análisis")
|
||||
subcriteria: Optional[List["DocumentEvaluationCriteria"]] = Field(None, description="Lista de subcriterios de evaluación")
|
||||
|
||||
class DocumentEvaluationRubric(BaseModel):
|
||||
"""Modelo que representa una rúbrica de evaluación personalizada para análisis de documentos."""
|
||||
name: str = Field(..., description="Nombre de la rúbrica de evaluación")
|
||||
description: str = Field(None, description="Descripción detallada de la rúbrica")
|
||||
category: Optional[str] = Field(
|
||||
None,
|
||||
description="Contexto jerárquico de la categoría para especializar a la IA (ej. Audio > Education > English > B2)"
|
||||
)
|
||||
criteria: List[DocumentEvaluationCriteria] = Field(None, description="Lista de criterios de evaluación específicos")
|
||||
|
||||
@dataclass
|
||||
class DocumentRequestFile:
|
||||
"""Modelo de solicitud para análisis de documentos."""
|
||||
file: UploadFile = File(..., description="Archivo de documento a procesar (ej. pdf, docx)")
|
||||
provider: str = Form(..., description="Proveedor de IA a utilizar (ej. openai, google)")
|
||||
model: str = Form(..., description="Modelo de IA a utilizar (ej. vision-1)")
|
||||
rubric: UploadFile = File(..., description="Archivo JSON de evaluación")
|
||||
|
||||
class StandardDocumentAnalysisResult(BaseModel):
|
||||
"""Modelo que representa el resultado estándar de un análisis de documentos para Qualidot."""
|
||||
status: str = Field(..., description="Estado del análisis (ej. 'success', 'error')")
|
||||
original_filename: str = Field(..., description="Nombre original del archivo de documento procesado")
|
||||
provider_used: str = Field(..., description="Proveedor de IA utilizado para el análisis (ej. 'OpenAI')")
|
||||
model_used: str = Field(..., description="Modelo específico utilizado para el análisis (ej. 'vision-1')")
|
||||
score: float = Field(None, description="Puntuación general asignada al documento después del análisis")
|
||||
feedback: str = Field(None, description="Comentarios o retroalimentación generada por el modelo de IA sobre el documento")
|
||||
detailed_criteria: List[DocumentEvaluationCriteria] = Field(None, description="Lista de criterios de evaluación detallados con sus respectivas puntuaciones y descripciones")
|
||||
|
||||
|
||||
class StandardDocumentAnalysis(BaseModel):
|
||||
"""Modelo que representa el resultado estándar de un análisis de documentos para Qualidot."""
|
||||
score: float = Field(None, description="Puntuación general asignada al documento después del análisis")
|
||||
feedback: str = Field(None, description="Comentarios o retroalimentación generada por el modelo de IA sobre la imagen")
|
||||
detailed_criteria: List[DocumentEvaluationCriteria] = Field(None, description="Lista de criterios de evaluación detallados con sus respectivas puntuaciones y descripciones")
|
||||
|
||||
Reference in New Issue
Block a user