feat: Agrega primera version de template (revisar archivo de documentacion - docs.md)

This commit is contained in:
Francisco Pineda
2026-03-15 08:44:25 +01:00
parent d433942981
commit 4d6152a9fe
45 changed files with 1151 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,92 @@
"""
Esquema de resultado esperado de modelos de transcripción.
Propósito:
Define el formato estándar de los resultados devueltos por los modelos de transcripción
de audio, independientemente del proveedor de IA utilizado.
Homologación:
Garantiza que el resultado de la transcripción siempre se entregue en el mismo
formato estándar para Qualidot.
Pendiente (recomendación personal):
- Definir mejor la estructura de cada segmento según las opciones avanzadas (diarization, timestamps, sentiment)
- Delimitar los proveedores de IA soportados inicialmente
"""
from fastapi import UploadFile
from fastapi.params import File, Form
from pydantic import BaseModel, Field
from typing import List, Optional
class AudioRequestFile:
"""Modelo de solicitud para transcripción de audio."""
def __init__(
self,
file: UploadFile = File(..., description="Archivo de audio a procesar (ej. mp3, wav)"),
provider: str = Form(..., description="Proveedor de IA a utilizar (ej. openai, assemblyai)"),
model: str = Form(..., description="Modelo de IA a utilizar (ej. whisper-1)"),
diarization: Optional[bool] = Form(False, description="Activa la separación e identificación de múltiples hablantes"),
timestamps: Optional[bool] = Form(False, description="Activa las marcas de tiempo exactas por cada segmento hablado"),
sentiment: Optional[bool] = Form(False, description="Activa el análisis de sentimiento (POSITIVO/NEGATIVO) por segmento")
):
self.file = file
self.provider = provider
self.model = model
self.diarization = diarization
self.timestamps = timestamps
self.sentiment = sentiment
class TranscriptionSegment(BaseModel):
"""Modelo que representa un segmento de transcripción de audio detallado."""
text: str = Field(
...,
description="Texto transcrito en este fragmento específico"
)
speaker: Optional[str] = Field(
None,
description="Identificador del hablante (ej. 'Speaker A') si diarization está activo"
)
start_time: Optional[float] = Field(
None,
description="Marca de tiempo en segundos donde inicia el segmento"
)
end_time: Optional[float] = Field(
None,
description="Marca de tiempo en segundos donde termina el segmento"
)
sentiment: Optional[str] = Field(
None,
description="Sentimiento detectado en el segmento (ej. 'POSITIVE', 'NEGATIVE')"
)
class StandardTranscriptionResult(BaseModel):
"""Modelo que representa el resultado estándar de una transcripción de audio para Qualidot."""
status: str = Field(
...,
description="Estado final de la petición ('success' o 'error')"
)
original_filename: str = Field(
...,
description="Nombre original del archivo de audio procesado"
)
provider_used: str = Field(
...,
description="Proveedor de IA que ejecutó la transcripción (ej. OpenAI)"
)
model_used: str = Field(
...,
description="Modelo específico utilizado para el proceso"
)
full_transcript: Optional[str] = Field(
None,
description="Texto completo y continuo de toda la transcripción"
)
segments: Optional[List[TranscriptionSegment]] = Field(
None,
description="Lista detallada de segmentos si se solicitaron opciones avanzadas (diarization, timestamps, sentiment)"
)
confidence_score: Optional[float] = Field(
None,
description="Nivel de certeza global del modelo (valor entre 0.0 y 1.0)"
)

View File

@@ -0,0 +1,44 @@
"""
Esquema de resultado esperado de modelos de análisis de imágenes.
Propósito:
Define el formato estándar de los resultados devueltos por los modelos de análisis
de imágenes, independientemente del proveedor de IA utilizado.
Homologación:
Garantiza que el resultado del análisis de imágenes siempre se entregue en el mismo
formato estándar para Qualidot.
"""
from fastapi import UploadFile
from fastapi.params import File, Form
from pydantic import BaseModel, Field
from typing import List, Optional
class ImageRequestFile:
"""Modelo de solicitud para análisis de imágenes."""
def __init__(
self,
file: UploadFile = File(..., description="Archivo de imagen a procesar (ej. jpg, png)"),
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: Optional[str] = Form(None, description="Rúbrica de evaluación personalizada para el análisis")
):
self.file = file
self.provider = provider
self.model = model
self.rubric = rubric
class StandardImageAnalysisResult(BaseModel):
"""Modelo que representa el resultado estándar de un análisis de imágenes para Qualidot."""
status: str = Field(
...,
description="Estado del análisis (ej. 'success', 'error')"
)
analysis: Optional[dict] = Field(
None,
description="Resultados detallados del análisis de la imagen, estructurados según la rúbrica si se proporcionó"
)
error: Optional[str] = Field(
None,
description="Mensaje de error en caso de que el análisis haya fallado"
)

View File

@@ -0,0 +1,44 @@
"""
Esquema de resultado esperado de modelos de análisis de texto (JSON).
Propósito:
Define el formato estándar de los resultados devueltos por los modelos de análisis
de texto, independientemente del proveedor de IA utilizado.
Homologación:
Garantiza que el resultado del análisis de texto siempre se entregue en el mismo
formato estándar para Qualidot.
"""
from fastapi import UploadFile
from fastapi.params import File, Form
from pydantic import BaseModel, Field
from typing import List, Optional
class TextRequestFile:
"""Modelo de solicitud para análisis de texto."""
def __init__(
self,
file: UploadFile = File(..., description="Archivo de texto a procesar (ej. txt, json)"),
provider: str = Form(..., description="Proveedor de IA a utilizar (ej. openai, google)"),
model: str = Form(..., description="Modelo de IA a utilizar (ej. text-1)"),
rubric: Optional[str] = Form(None, description="Rúbrica de evaluación personalizada para el análisis")
):
self.file = file
self.provider = provider
self.model = model
self.rubric = rubric
class StandardTextAnalysisResult(BaseModel):
"""Modelo que representa el resultado estándar de un análisis de texto para Qualidot."""
status: str = Field(
...,
description="Estado del análisis (ej. 'success', 'error')"
)
analysis: Optional[dict] = Field(
None,
description="Resultados detallados del análisis de texto, estructurados según la rúbrica si se proporcionó"
)
error: Optional[str] = Field(
None,
description="Mensaje de error en caso de que el análisis haya fallado"
)

View File

@@ -0,0 +1,65 @@
"""
Esquema de resultado esperado de modelos de transcripción de video.
Propósito:
Define el formato estándar de los resultados devueltos por los modelos de transcripción
de video, independientemente del proveedor de IA utilizado.
Homologación:
Garantiza que el resultado de la transcripción siempre se entregue en el mismo
formato estándar para Qualidot.
"""
from fastapi import UploadFile
from fastapi.params import File, Form
from pydantic import BaseModel, Field
from typing import List, Optional
class VideoRequestFile:
"""Modelo de solicitud para transcripción de video."""
def __init__(
self,
file: UploadFile = File(..., description="Archivo de video a procesar (ej. mp4, mov)"),
provider: str = Form(..., description="Proveedor de IA a utilizar (ej. openai, assemblyai)"),
model: str = Form(..., description="Modelo de IA a utilizar (ej. whisper-1)"),
diarization: Optional[bool] = Form(False, description="Activa la separación e identificación de múltiples hablantes"),
timestamps: Optional[bool] = Form(False, description="Activa las marcas de tiempo exactas por cada segmento hablado"),
sentiment: Optional[bool] = Form(False, description="Activa el análisis de sentimiento (POSITIVO/NEGATIVO) por segmento")
):
self.file = file
self.provider = provider
self.model = model
self.diarization = diarization
self.timestamps = timestamps
self.sentiment = sentiment
class StandardTranscriptionResult(BaseModel):
"""Modelo que representa el resultado estándar de una transcripción de video para Qualidot."""
status: str = Field(
...,
description="Estado final de la petición ('success' o 'error')"
)
original_filename: str = Field(
...,
description="Nombre original del archivo de video procesado"
)
provider_used: str = Field(
...,
description="Proveedor de IA que ejecutó la transcripción (ej. OpenAI)"
)
model_used: str = Field(
...,
description="Modelo específico utilizado para el proceso"
)
full_transcript: Optional[str] = Field(
None,
description="Texto completo y continuo de toda la transcripción"
)
segments: Optional[List[dict]] = Field( ##Queda pendiente definir mejor la estructura de cada segmento según las opciones avanzadas
None,
description="Lista detallada de segmentos si se solicitaron opciones avanzadas (diarization, timestamps, sentiment)"
)
confidence_score: Optional[float] = Field(
None,
description="Nivel de certeza global del modelo (valor entre 0.0 y 1.0)"
)