Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering avanzado, Unidad 5 — Prompts con salida estructurada, 5.2 — Validación de salidas ·

Validación semántica

Validación semántica: Asegurando la calidad de los prompts con salida estructurada

Introducción

En el universo de la inteligencia artificial generativa, especialmente cuando se trabaja con modelos de lenguaje en cadena (LLMs), la validación semántica es un pilar crucial para garantizar que las respuestas sean no solo correctas en términos de sintaxis, sino también significativas y coherentes. La salida estructurada de los prompts puede incluir formatos como JSON o XML, lo que requiere no solo validar la forma en que se presentan los datos (sintáctica), sino también su contenido y significado (semántica). En este artículo, exploraremos cómo implementar y aplicar validación semántica efectiva a través de ejemplos prácticos y un checklist detallado.

Explicación principal con ejemplos

La validación semántica implica asegurarse de que la respuesta del modelo no solo cumpla con el formato esperado (como JSON), sino también que los datos dentro de ese formato sean razonables e intercambiables. Por ejemplo, si un prompt solicita una fecha en formato YYYY-MM-DD, cualquier fecha fuera de este rango debería ser considerada como incorrecta.

Ejemplo práctico

Supongamos que estamos implementando un sistema que responde a preguntas sobre el clima usando JSON para presentar los datos. La salida esperada sería algo así:

{
  "city": "Madrid",
  "temperature": 18,
  "humidity": 75,
  "wind_speed": 10
}

Para validar semánticamente esta respuesta, podríamos verificar:

  • Que city sea una ciudad real.
  • Que temperature, humidity y wind_speed estén dentro de rangos razonables para el clima.
  • Que las unidades (por ejemplo, grados Celsius para temperature) sean correctas.

Implementación

Una implementación sencilla en Python podría verse así:

import json
from datetime import datetime
import requests

def validate_weather_response(response):
    try:
        data = json.loads(response)
        city = data.get("city")
        temp = data.get("temperature", 0)
        humidity = data.get("humidity", 0)
        wind_speed = data.get("wind_speed", 0)

        # Validation checks
        if not is_city_real(city):
            return False, "La ciudad no existe"
        
        if not (0 <= temp <= 100):
            return False, f"Temperatura fuera de rango: {temp}"
        
        if not (0 <= humidity <= 100):
            return False, f"Humedad fuera del rango: {humidity}"
        
        if wind_speed < 0:
            return False, "Velocidad del viento no puede ser negativa"
        
    except json.JSONDecodeError:
        return False, "Respuesta no es JSON válida"

    return True, ""

def is_city_real(city):
    # A simple check against a predefined list of cities
    real_cities = ["Madrid", "Barcelona", "Lisboa"]
    return city in real_cities

# Ejemplo de uso
response = '{"city": "Madrid", "temperature": 18, "humidity": 75, "wind_speed": 10}'
valid, error_message = validate_weather_response(response)
print(f"Validación: {valid}, Error: {error_message}")

Errores típicos / trampas

  1. No validar rango de valores: Olvidar limitar los valores a rangos reales puede llevar a respuestas erróneas o imposibles.
  2. Ignorar unidades correctas: No asegurarse de que las unidades estén correctamente aplicadas puede resultar en datos incorrectos.
  3. Negligencia en el formato: Validar solo la sintaxis y no revisar si los datos son lógicos o coherentes.

Checklist accionable

  1. Definir rangos razonables para cada dato.
  2. Validar unidades correctas de medida (por ejemplo, grados Celsius, metros por segundo).
  3. Incluir validación de tipos (verificar que los datos sean del tipo esperado como strings o números).
  4. Hacer pruebas con casos extremos y bordes.
  5. Validar integridad de la ciudad o entidad mencionada (usar bases de datos o APIs geográficas).
  6. Incluir validación de rangos para medidas meteorológicas (temperatura, humedad, etc.).
  7. Asegurarse de que el modelo no devuelva valores fuera del rango esperado.
  8. Validar la consistencia temporal en respuestas que dependan de un horario específico.

Cierre con "Siguientes pasos"

La validación semántica es una herramienta poderosa para mejorar la calidad y confiabilidad de los prompts con salida estructurada. Asegúrate de incluir esta práctica en tu pipeline de desarrollo para evitar errores costosos y garantizar que tus sistemas funcionen correctamente.

  • Siguiente paso 1: Implementar validación semántica en todos los puntos donde se espera una salida estructurada.
  • Siguiente paso 2: Crear un sistema de pruebas automatizadas para validar semánticamente las respuestas del modelo.
  • Siguiente paso 3: Documentar claramente las reglas y rangos razonables para cada dato en la salida.

¡Esperamos que este artículo te haya ayudado a comprender mejor la validación semántica y cómo implementarla en tu proyecto de IA!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).