Genere resultados estructurados de LLM con Dottxt Outlines en AWS

Esta publicación está escrita en colaboración con Remi Louf, director ejecutivo y fundador técnico de Dottxt.

La salida estructurada en las aplicaciones de IA se refiere a respuestas generadas por IA que se ajustan a formatos predefinidos, validados y, a menudo, ingresados ​​estrictamente. Esto puede incluir el esquema de la salida o las formas en que se deben asignar campos específicos en la salida. Los resultados estructurados son esenciales para aplicaciones que requieren coherencia, validación e integración perfecta con sistemas posteriores. Por ejemplo, los sistemas de aprobación de préstamos bancarios deben generar resultados JSON con una estricta validación de campo, los sistemas de atención médica deben validar los formatos de datos de los pacientes y hacer cumplir las restricciones de dosis de medicamentos, y los sistemas de comercio electrónico requieren la generación de facturas estandarizadas para sus sistemas de contabilidad.

Esta publicación explora la implementación del marco Outlines de .txt como un enfoque práctico para implementar resultados estructurados utilizando AWS Marketplace en Amazon SageMaker.

Salida estructurada: casos de uso y valor empresarial

Los resultados estructurados elevan la IA generativa desde la generación de texto ad hoc hasta una infraestructura empresarial confiable, lo que permite un intercambio de datos preciso, decisiones automatizadas y flujos de trabajo de un extremo a otro en entornos de alto riesgo y con gran integración. Al hacer cumplir esquemas y formatos predecibles, desbloquean casos de uso donde la precisión, la trazabilidad y la interoperabilidad no son negociables, desde informes financieros y operaciones de atención médica hasta logística de comercio electrónico y automatización del flujo de trabajo empresarial. Esta sección explora dónde los resultados estructurados crean el mayor valor y cómo se traducen directamente en errores reducidos, menor riesgo operativo y retorno de la inversión medible.

¿Qué es la producción estructurada?

La categoría de salida estructurada combina múltiples tipos de requisitos sobre cómo los modelos deben producir salidas que sigan mecanismos de restricciones específicos. Los siguientes son ejemplos de mecanismos de restricción.

Restricciones basadas en esquemas: el esquema JSON y el esquema XML definen estructuras de objetos con requisitos de tipo, campos obligatorios, restricciones de propiedad y jerarquías anidadas. Los modelos generan resultados que coinciden exactamente con estas especificaciones, lo que ayuda a garantizar que campos como id_transacción (cadena), monto (flotante) y marca de tiempo (fecha y hora) estén presentes y se ingresen correctamente. Restricciones de enumeración: las expresiones de enumeración restringen las salidas a valores categóricos predefinidos. Las tareas de clasificación utilizan enum para obligar a los modelos a seleccionar entre opciones fijas, como categorizar instrumentos como percusión, cuerda, viento de madera, metal o teclado, eliminando la generación de categorías arbitrarias. Restricciones basadas en patrones: las expresiones regulares validan formatos específicos como direcciones de correo electrónico, números de teléfono, fechas o identificadores personalizados. Los patrones de expresiones regulares garantizan que las salidas coincidan con las estructuras requeridas sin validación posterior al procesamiento. Restricciones basadas en gramática: las gramáticas libres de contexto (CFG) y la notación EBNF definen reglas sintácticas para generar código, consultas SQL, archivos de configuración o lenguajes específicos de dominio. Los marcos de decodificación restringidos imponen estas reglas en el momento de la generación del token. Validación semántica: más allá de las restricciones sintácticas, los modelos de lenguaje grandes (LLM) pueden validar los resultados con criterios de lenguaje natural, lo que ayuda a garantizar que el contenido sea profesional, familiar o constructivo, abordando requisitos subjetivos que la validación basada en reglas no puede capturar.

Componentes críticos que se benefician de la producción estructurada

En las aplicaciones modernas, los modelos de IA se integran con tipos de procesamiento y sistemas comerciales que no son de IA. Estas integraciones y puntos de unión requieren coherencia, seguridad de tipos y legibilidad mecánica, porque el análisis de ambigüedades o desviaciones de formato interrumpiría los flujos de trabajo. Estos son algunos de los patrones arquitectónicos comunes en los que vemos una interoperabilidad crítica entre los LLM y los componentes de infraestructura:

Integración de API y canalizaciones de datos: los procesos de extracción, transformación y carga (ETL) y las API REST requieren un cumplimiento estricto del formato. Los errores en la salida del modelo pueden crear errores de análisis y comprometer la inserción directa de la base de datos o la lógica de transformación perfecta. Llamada de herramientas y ejecución de funciones: los flujos de trabajo agentes dependen de la capacidad del modelo LLM para invocar funciones con parámetros escritos correctamente, lo que permite la automatización de varios pasos donde cada agente consume entradas validadas. Extracción de documentos y captura de datos: el análisis de facturas, contratos o registros médicos requiere que el modelo identifique semánticamente las entidades deseadas y las devuelva en un formato que realmente pueda automatizar la entrada de datos extrayendo nombres de proveedores, montos y fechas en esquemas predefinidos, incluidas opciones de categorización específicas, entre otros. Sistemas de decisión en tiempo real: los sistemas que requieren decisiones inferiores a 50 milisegundos, como la detección de fraude y el procesamiento de transacciones, no pueden permitirse el lujo de verbosidad o reintentos en la estructura de la salida. La producción de puntuaciones de riesgo, indicadores de clasificación y metadatos de decisión confiables y conformes significa que los sistemas posteriores pueden consumir datos al instante.

Aplicaciones empresariales: donde la producción estructurada proporciona el mayor valor

En dominios de alto riesgo y gran integración, los resultados estructurados transforman los modelos generativos de motores de texto flexibles en una infraestructura empresarial confiable que ofrece previsibilidad, auditabilidad y automatización de extremo a extremo.

Servicios financieros y procesamiento de transacciones: en las instituciones financieras, los resultados estructurados facilitan la precisión y la coherencia en los informes, las auditorías y el cumplimiento normativo. Los datos de transacciones, las evaluaciones de riesgos y los análisis de carteras deben cumplir con esquemas predefinidos para respaldar la conciliación en tiempo real, las revisiones contra el lavado de dinero (AML) y las presentaciones regulatorias. Los resultados estructurados permiten un intercambio fluido entre sistemas de pago, motores de riesgo y herramientas de auditoría, lo que reduce la supervisión manual y al mismo tiempo mantiene la trazabilidad total y la integridad de los datos en las operaciones financieras de alto riesgo. Operaciones clínicas y de atención médica: el cumplimiento normativo exige una validación estricta: la verificación del rango de signos vitales, dosis de medicamentos y resultados de laboratorio ayuda a prevenir errores críticos. La extracción estructurada de documentos médicos permite la codificación automatizada, la precisión de la facturación y la creación de pistas de auditoría para el cumplimiento de HIPAA. Automatización del flujo de trabajo empresarial: los sistemas heredados requieren datos legibles por máquina sin una lógica de análisis personalizada. Los resultados estructurados de las interacciones de atención al cliente generan resúmenes de casos con puntuaciones de opinión, elementos de acción y metadatos de enrutamiento que se integran directamente en los sistemas de gestión de relaciones con el cliente (CRM). Comercio electrónico y logística: la validación de direcciones, la verificación de pagos y la coherencia de los atributos de los pedidos reducen las entregas fallidas y las transacciones fraudulentas. Los resultados estructurados coordinan flujos de trabajo de múltiples partes donde los transportistas, almacenes y procesadores de pagos requieren formatos estandarizados. Cumplimiento normativo y preparación para auditorías: las industrias que enfrentan una supervisión estricta se benefician de una gestión de contenido estructurada con pistas de auditoría inmutables. Los repositorios a nivel de componentes rastrean cada cambio con metadatos (quién, cuándo, por qué, aprobador), de modo que los auditores puedan verificar el cumplimiento mediante el acceso directo al sistema en lugar de la revisión manual de documentos.

El hilo común es la complejidad operativa, los requisitos de integración y la sensibilidad al riesgo. Los resultados estructurados transforman la IA de la generación de texto en una infraestructura empresarial confiable donde la previsibilidad, la auditabilidad y la interoperabilidad del sistema impulsan un retorno de la inversión medible a través de errores reducidos, un procesamiento más rápido y una automatización perfecta.

Presentamos esquemas .txt en AWS para producir resultados estructurados

La producción estructurada se puede lograr de varias maneras. La mayoría de los marcos se centrarán, básicamente, en la validación para identificar si el resultado cumple con las reglas y requisitos solicitados. Si la salida no se ajusta, el marco solicitará una nueva salida y seguirá iterando como tal hasta que el modelo alcance la estructura de salida solicitada.

Outlines ofrece un enfoque avanzado llamado validación en tiempo de generación, lo que significa que la validación ocurre mientras el modelo produce tokens, lo que cambia la validación al principio del proceso de generación en lugar de validar después de la finalización. Si bien no está integrado con Amazon Bedrock, comprender Outlines proporciona información sobre técnicas de producción estructuradas de vanguardia que informan las estrategias de implementación híbrida.

Outlines, desarrollada por el equipo .txt, es una biblioteca de Python diseñada para brindar estructura determinista y confiabilidad a los resultados del modelo de lenguaje, abordando un desafío clave en la implementación de LLM para aplicaciones de producción. A diferencia de la generación tradicional de forma libre, los desarrolladores pueden usar Outlines para imponer restricciones y formatos de salida estrictos durante la generación, no solo después del hecho. Este enfoque hace posible utilizar LLM para tareas donde se requiere precisión, previsibilidad e integración con sistemas posteriores.

Cómo funciona Contornos

Outlines impone restricciones a través de tres mecanismos principales:

Compilación de gramática: convierte esquemas en máscaras de tokens que guían las elecciones del modelo. Árboles de prefijos: elimina rutas no válidas durante la búsqueda de haces para mantener una estructura válida. Control de muestreo: utiliza autómatas finitos para la selección de tokens válidos durante la generación.

Durante la generación, Outlines sigue un flujo de trabajo preciso:

El modelo de lenguaje procesa la secuencia de entrada y produce logits de tokens. El procesador de logits de Outlines establece la probabilidad de tokens ilegales en 0%. Se muestrea un token solo del conjunto de tokens legales de acuerdo con la estructura definida. Este proceso se repite hasta que se completa la generación, lo que ayuda a garantizar que la salida se ajuste al formato requerido.

Por ejemplo, con un patrón como ^d*(.d+)?$para números decimales, Outlines lo convierte en un autómata que solo permite generar secuencias numéricas válidas. Si se ha generado 748, el sistema sabe que los únicos tokens siguientes válidos son otro dígito, un punto decimal o el token de fin de secuencia.

Beneficios de rendimiento

Hacer cumplir la salida estructurada durante la generación ofrece ventajas significativas para la confiabilidad y el rendimiento en entornos de producción. Ayuda a aumentar la validez de la estructura de la salida y puede mejorar significativamente el rendimiento:

Gastos generales de inferencia cero: la técnica de generación estructurada prácticamente no agrega costo computacional durante la inferencia Generación 5 veces más rápida: según el enfoque de coalescencia de .txt Engineering, la generación estructurada puede ser dramáticamente más rápida que la generación estándar Recursos computacionales reducidos: las restricciones simplifican la toma de decisiones del modelo al eliminar rutas no válidas, lo que reduce los requisitos generales de procesamiento Precisión mejorada: al reducir el espacio de salida, incluso los modelos base pueden lograr una mayor precisión en tareas estructuradas

Ventajas de referencia

Estos son algunos de los beneficios comprobados de la biblioteca de esquemas:

2 veces más rápido que los canales de validación basados ​​en expresiones regulares 98 % de cumplimiento del esquema en comparación con el 76 % para la validación posterior a la generación Admite restricciones complejas como esquemas JSON recursivos

Comenzando con los esquemas

Los esquemas se pueden integrar perfectamente en los flujos de trabajo de Python existentes:

from pydantic import BaseModel # Defina su estructura de datos clase Paciente(BaseModel): id: int nombre: str diagnostic: str edad: int # Cargue el modelo y cree un generador estructurado modelo = models.transformers("microsoft/DialoGPT-medium") generador = generate.json(modelo, Paciente) # Generar mensaje de salida estructurado = "Crear un registro de paciente para John Smith, 45 años, con diabetes" resultado = generador(prompt) # Devuelve una instancia de paciente válida imprimir(resultado.nombre) # "John Smith" imprimir(resultado.edad) # 45

Para esquemas más complejos:

from enum import Clase de enumeración Estado (str, Enum): ACTIVO = "activo" INACTIVO = "inactivo" PENDIENTE = clase "pendiente" Usuario (BaseModel): nombre de usuario: cadena correo electrónico: cadena estado: Estado creado_en: fecha y hora # El generador aplica los valores de enumeración y el formato de fecha y hora user_generator = generate.json (modelo, Usuario)

Usando dotjson de .txt en Amazon SageMaker

Puede implementar directamente la solución de inferencia en tiempo real Amazon SageMaker de .txt para generar resultados estructurados implementando uno de los modelos de .txt, como DeepSeek-R1-Distill-Qwen-32B, a través de AWS Marketplace. El siguiente código supone que ya ha implementado un punto final en su cuenta de AWS.

En el repositorio del producto está disponible un Jupyter Notebook que explica cómo implementar el punto final de un extremo a otro.

import json import boto3 # Establezca esto según su punto final de SageMaker endpoint_name = "dotjson-with-DeepSeek-R1-Distill-Qwen-32B" session = boto3.Session()structured_data = { "patient_id": 12345, "first": "John", "last": "Adams", "appointment_date": "2025-01-27", "notes": "Paciente presentado con dolor de cabeza y dolor de garganta", } payload = { "messages": [ { "role": "system", "content": "Es un asistente útil, honesto y conciso.", }, { "role": "user", "content": f"Cree un registro médico a partir de los siguientes datos de la visita: {structured_data}", }, ], "response_format": { "type": "json_schema", "json_schema": { "name": "Registro médico", "schema": { "properties": { "patient_id": {"title": "Id. del paciente", "tipo": "entero"}, "fecha": {"title": "Fecha", "tipo": "cadena", "formato": "fecha-hora"}, "diagnóstico": {"título": "Diagnóstico", "tipo": "cadena"}, "tratamiento": {"título": "Tratamiento", "tipo": "cadena"}, }, "requerido": ["id_paciente", "diagnóstico", "tratamiento"], "título": "Registro médico", "tipo": "objeto", }, }, "max_tokens": 1000, }, } tiempo de ejecución = sesión.cliente("sagemaker-runtime") respuesta = tiempo de ejecución.invoke_endpoint( EndpointName=endpoint_name, ContentType="application/json", Accept="application/json", Body=json.dumps(payload).encode(), ) body = json.loads(response["Body"].read().decode("utf-8")) # Ver la salida estructurada producida por el modelo msg = body["choices"][0]["mensaje"] contenido = mensaje["contenido"] registro_medico = json.loads(contenido) registro_medico

Este enfoque híbrido elimina la necesidad de reintentos en comparación con la validación después de la finalización.

Opciones alternativas de salida estructurada en AWS

Si bien Outlines ofrece coherencia en el tiempo de generación, varios otros enfoques proporcionan resultados estructurados con diferentes compensaciones:

Alternativa 1: estrategias de producción estructuradas basadas en LLM

Cuando utilizan la mayoría de los LLM modernos, como Amazon Nova, los usuarios pueden definir esquemas de salida directamente en solicitudes, admitiendo restricciones de tipo, enumeraciones y plantillas estructuradas dentro del entorno de AWS. La siguiente guía muestra diferentes patrones de mensajes para Amazon Nova.

# Ejemplo de salida estructurada de Nova import boto3 bedrock = boto3.client('bedrock-runtime') respuesta = bedrock.invoke_model( modelId='amazon.nova-pro-v1:0', body=json.dumps({ "messages": [{"role": "user", "content": "Extrae información del cliente de este texto…"}], "inferenceConfig": {"maxTokens": 500}, "toolConfig": { "tools": [{ "toolSpec": { "name": "extract_customer", "inputSchema": { "json": { "type": "object", "properties": { "name": {"type": "string"}, "email": {"type": "string"}, "phone": {"type": "string"} }, "required": ["name", "email"] } } } }] } }) )

Alternativa 2: Marcos OSS de validación posgeneración

Los marcos de validación de código abierto de posgeneración han surgido como una capa crítica en los sistemas de IA generativa modernos, proporcionando mecanismos estructurados y repetibles para evaluar y gobernar los resultados del modelo antes de que sean consumidos por los usuarios o las aplicaciones posteriores. Al separar la generación de la validación, estos marcos permiten a los equipos imponer restricciones de seguridad, calidad y políticas sin tener que volver a capacitar o ajustar constantemente los modelos subyacentes.

LMQL

Language Models Query Language (LMQL) tiene una interfaz similar a SQL y proporciona un lenguaje de consulta para LLM, de modo que los desarrolladores pueden especificar restricciones, requisitos de tipo y rangos de valores directamente en las solicitudes. Particularmente eficaz para restricciones de tipo y de opción múltiple.

Instructor

El instructor proporciona mecanismos de reintento al envolver los resultados de LLM con validación de esquema y mecanismos de reintento automático. La estrecha integración con los modelos de Pydantic lo hace adecuado para escenarios donde la validación y corrección posgeneración son aceptables.

import boto3 import instructor from pydantic import BaseModel # Crear un cliente Bedrock para interacciones en tiempo de ejecución bedrock_client = boto3.client('bedrock-runtime') # Configurar el cliente instructor con Bedrock runtime client = instructor.from_bedrock(bedrock_client) # Definir la clase de modelo de respuesta estructurada Usuario(BaseModel): nombre: str age: int # Invocar el modelo Claude Haiku con la estructura de mensaje correcta usuario = client.chat.completions.create( modelId="global.anthropic.claude-haiku-4-5-20251001-v1:0", mensajes=[ {"role": "usuario", "content": [{"text": "Extracto: Jason tiene 25 años"}]}, ], respuesta_modelo=Usuario, ) print(usuario) # Resultado esperado: # Usuario “nombre="Jason" edad=25”

Guía

La orientación ofrece un control detallado basado en plantillas sobre la estructura y el formato de salida, lo que permite restricciones a nivel de token. Útil para un formato de respuesta coherente y flujos de conversación.

Factores de decisión y mejores prácticas

Seleccionar el enfoque de salida estructurado correcto depende de varios factores clave que impactan directamente en la complejidad de la implementación y el rendimiento del sistema.

Consideraciones de latencia: los requisitos de tiempo de respuesta influyen significativamente en las soluciones de salida estructuradas. Al agregar mecanismos de reintento, la validación posterior a la generación puede agregar latencia. En comparación, enfoques como Outlines son óptimos para aplicaciones sensibles a la latencia. La aplicación de esquemas agrega algo de tiempo de procesamiento en comparación con el modelo base utilizado, pero sigue siendo mucho más rápido que las estrategias posteriores a la generación. Capacidades de reintento: las capacidades de regeneración automática (como las de Instructor) son esenciales para las salidas estructuradas porque proporcionan mecanismos de respaldo cuando los intentos de generación inicial no cumplen con los requisitos del esquema, lo que mejora la confiabilidad general sin la intervención del desarrollador. Soporte de transmisión: la validación JSON parcial durante la transmisión permite la entrega progresiva de contenido mientras se mantiene la integridad estructural, vital para experiencias de usuario receptivas en aplicaciones que requieren datos estructurados en tiempo real. Complejidad de entrada: las técnicas de recorte de contexto optimizan el manejo de entradas complejas, lo que ayuda a garantizar que las indicaciones largas o complejas no comprometan la naturaleza estructurada de las salidas ni excedan las limitaciones de los tokens. Estrategia de implementación: si bien la capacidad de acceder a modelos a través de la API de Amazon Bedrock (Converse, InvokeModel) ofrece una solución sin servidor, Outlines actualmente solo está disponible a través de AWS Marketplace en Amazon SageMaker, lo que requiere que usted implemente y aloje el modelo. Selección del modelo: la elección del modelo afecta significativamente la calidad y eficiencia de la producción estructurada. Los modelos básicos pueden requerir una ingeniería rápida y exhaustiva para el cumplimiento de la estructura, mientras que los modelos especializados con capacidades de salida estructuradas integradas ofrecen mayor confiabilidad y menores necesidades de posprocesamiento. Experiencia de usuario: cada opción ofrece pros y contras. La validación en proceso (esquemas) detecta errores en las primeras etapas de la generación, lo que aumenta la velocidad cuando el modelo comete errores, pero también aumenta la latencia cuando la salida del modelo ya era correcta. La validación posterior a la generación proporciona un control de calidad integral, pero requiere manejo de errores para resultados no adherentes. Rendimiento: si bien la implementación de resultados estructurados puede aumentar la precisión del modelo al reducir las alucinaciones y mejorar la coherencia de los resultados, algunas de estas ganancias pueden conllevar compensaciones, como una reducción de las capacidades de razonamiento en algunos escenarios o la introducción de una sobrecarga de tokens adicional.

Conclusión

Las organizaciones pueden utilizar el paradigma de salida estructurada en IA para aplicar esquemas de manera confiable, integrarse con una amplia gama de modelos y API, y equilibrar la validación posgeneración versus los métodos de generación directa para lograr un mayor control y coherencia. Al comprender las ventajas y desventajas del rendimiento, la complejidad de la integración y la aplicación de esquemas, los desarrolladores pueden adaptar las soluciones a sus requisitos técnicos y comerciales, facilitando una automatización escalable y eficiente en diversas aplicaciones.

Para obtener más información sobre la implementación de resultados estructurados con LLM en AWS:

Acerca de los autores

Clément Perrot

Clement Perrot es estratega senior de GenAI en el Centro de innovación GenAI, donde ayuda a las empresas emergentes en etapa inicial a construir y utilizar IA en la plataforma AWS. Antes de AWS, Clement era un emprendedor, cuyas últimas dos nuevas empresas de hardware de consumo y de inteligencia artificial fueron adquiridas.

Remi Louf

Remi Louf es el director ejecutivo y fundador técnico de Dottxt. Antes de fundar dottxt, Remi fue ingeniero de investigación senior en Normal Computing, ingeniero de investigación en Ampersand, uno de los primeros ingenieros de investigación en Hugging Face, investigador en Harvard y director científico en Vimies. Remi tiene un Doctorado en Física Estadística, una Maestría en Filosofía de la Física, una Licenciatura en Física fundamental y un Eleve Normalien (título de investigación francés) en Física Cuántica.

Max Elfrink

Max Elfrink es gerente de cuentas en el equipo de startups de AWS, donde ayuda a las startups en etapa inicial a construir, escalar y hacer crecer su infraestructura de IA + en AWS. Antes de AWS, Max trabajó en nuevas empresas durante 6 años apoyando a nuevas empresas en etapa inicial en CDN, HCLS Tech y Unicorn Tech-Enabled Freight Forwarder, Flexport.