svision / api_schemas.py
VeuReu's picture
Update api_schemas.py
7ae4001 verified
"""
# ==============================================================================
# API Schemas
# ==============================================================================
This module defines the schemas for the public-facing API endpoints used
by the Salamandra Vision 7B application. Each schema specifies the HTTP
method, endpoint path, expected input fields, and default values where
applicable. These schemas are used for client integration, validation,
and automatic documentation generation.
The endpoints defined here cover multiple types of input, including
multipart form-data for file uploads and JSON bodies for structured requests.
Each schema is structured as a dictionary to provide all necessary metadata
for request construction, validation, and automatic client use.
# ==============================================================================
"""
DESCRIBE_RAW_MULTIPART = {
"method": "POST",
"path": "/api/describe_raw",
"multipart_fields": [
{"name": "image", "type": "file"},
{"name": "text", "type": "text", "default": "Describe la imagen con detalle."},
{"name": "max_new_tokens", "type": "int", "default": 256},
{"name": "temperature", "type": "float", "default": 0.7}
]
}
PREDICT_JSON = {
"method": "POST",
"path": "/api/predict/describe",
"json_body": {"data": ["<file or url>", "prompt text", 256, 0.7]}
}
FACE_IMAGE_EMBEDDING = {
"method": "POST",
"path": "/api/face_image_embedding",
"multipart_fields": [
{"name": "image", "type": "file"}
]
}
SCENES_EXTRACTION = {
"method": "POST",
"path": "/api/scenes_extraction",
"multipart_fields": [
{"name": "video_file", "type": "str"},
{"name": "threshold", "type": "float", "default": 30.0, "description": "Sensibilidad para identificar escenas diferentes"},
{"name": "offset_frames", "type": "int", "default": 10, "description": "En vez de te coja la primera imagen de la escena te la coja un poco avanzada en la escena" },
{"name": "crop_ratio", "type": "float", "default": 0.1, "description": "Recorte en los bordes de la imagen (para evitar marcas de agua)"}
]
}
IMAGES_EVERY_SECOND_EXTRACTION = {
"method": "POST",
"path": "/api/keyframes_every_second_extraction",
"multipart_fields": [
{"name": "video_file", "type": "str"},
{"name": "crop_ratio", "type": "float", "default": 0.1, "description": "Recorte en los bordes de la imagen (para evitar marcas de agua)"}
]
}
IMAGE_LIST_DESCRIPTION = {
"method": "POST",
"path": "/api/describe_images",
"multipart_fields": [
{"name": "image", "type": "file"}
]
}
ADD_OCR_CHARACTERS = {
"method": "POST",
"path": "/api/add_ocr_characters_to_image",
"multipart_fields": [
{"name": "image", "type": "file"},
{"name": "informacion_image", "type": "string"},
{"name": "face_col", "type": "string"}
]
}