Saltar al contenido principal
GLiNER usa el envoltorio compatible con OpenAI de model y messages con dos detalles específicos:
  • Añade un schema de nivel superior que describa la extracción, la clasificación, los registros estructurados o las relaciones.
  • Analiza la cadena JSON de choices[0].message.content.

Skill de agente Fastino GLiNER

Instala el skill de GLiNER en Cursor, Claude Code o Codex.

Ver el contrato de la API

Todos los campos de solicitud y respuesta.

Recetas de GLiNER

Solicitudes probadas para entidades, clasificación y relaciones.

Configura tu API key

  1. Crea una cuenta de Fastino
  2. Obtén tu API key en Settings
Establece tu clave como una variable de entorno para que los ejemplos siguientes funcionen tal cual:

Solicitud

string
requerido
Un ID de modelo base con capacidad de inferencia o el UUID de un trabajo de entrenamiento de Fastino completado y desplegable.
object[]
requerido
Una lista de mensajes no vacía. Para la inferencia GLiNER, coloca el texto a analizar en el content de un mensaje de usuario.
object
Define tareas personalizadas del codificador. Para la extracción y la clasificación clásicas, proporciona un diccionario que contenga una o varias de las claves entities, classifications, structures o relations. Para la clasificación con restricciones, proporciona la forma nativa con version, tasks y constraints que se documenta más abajo. Omite schema solo cuando el modelo seleccionado tenga una tarea predeterminada configurada. Cada entrada de classifications clásico requiere al menos dos etiquetas.Una lista plana de etiquetas de entidad está obsoleta. Utiliza siempre la forma de diccionario.
number
predeterminado:"0.5"
Umbral de confianza de 0 a 1. Los valores más bajos favorecen la exhaustividad; los más altos favorecen la precisión.
boolean
predeterminado:"true"
Incluye los valores de confianza en los resultados extraídos.
boolean
predeterminado:"true"
Incluye los desplazamientos de caracteres semiabiertos (start, end) en los resultados de entidades.
boolean
predeterminado:"true"
Persiste la inferencia. Establécelo en false para no guardarla.
boolean
predeterminado:"false"
Para los modelos de codificador, recorta el texto que supere el max_input_tokens del modelo en lugar de devolver input_too_long. Úsalo solo cuando sea aceptable descartar el final de la entrada.
Cuando se produce un truncamiento, x_fastino.truncated es true y no se devuelven las entidades situadas después del corte. El uso sigue contabilizando todo el texto enviado. Las entradas de más de 50.000 caracteres se rechazan antes del truncamiento. La opción se aplica a los modelos de codificador base, LoRA y con fine-tuning completo.

Esquema de entidades

Utiliza definiciones de entidades descriptivas cuando sea posible:

Esquema de clasificación

Cada entrada acepta solo task, labels, multi_label, cls_threshold y top_k. En GLiNER-2.5-Decide, labels debe ser una lista de cadenas y top_k actualmente no tiene efecto; consulta Clasificación de GLiNER 2.5 Decide.

Esquema de clasificación con restricciones

GLiNER2.5 Multi puede decodificar de forma conjunta tareas de clasificación relacionadas bajo restricciones estrictas. Antes de usar este esquema, confirma que el modelo seleccionado indica constrained_classification en encoder_features en la respuesta de GET /v1/base-models. Las tareas usan campos de cardinalidad y de orden:
  • Respuesta única: min_labels: 1 y max_labels: 1
  • Varias respuestas: usa min_labels y, opcionalmente, max_labels
  • Ordinal: cardinalidad de respuesta única más ordered: true; las etiquetas se ordenan de menor a mayor
labels puede ser un array de cadenas o un objeto que asigna a cada respuesta su descripción. Una tarea también puede incluir instruction y examples, donde cada ejemplo es un par [text, answer]. Las expresiones de restricción admitidas incluyen Implies, Excludes, Cardinality, AtLevel, MinLevel y MaxLevel. Los nombres de tipo de restricción distinguen entre mayúsculas y minúsculas. Las restricciones ordinales usan estas formas JSON:
Los nombres de propiedad exact_level, minimum_level, maximum_level y bounded_range del ejemplo anterior son etiquetas explicativas, no campos de restricción. Coloca el objeto de restricción correspondiente directamente dentro del array constraints del esquema. Un rango acotado es un And que contiene MinLevel y MaxLevel. No existe ningún tipo BetweenLevel en el formato de la solicitud. La siguiente solicitud combina tareas de respuesta única, de varias respuestas y ordinales:
El endpoint devuelve el envoltorio estándar de chat completion. Tras analizar la cadena JSON de choices[0].message.content, el resultado con restricciones tiene esta forma (los valores de probabilidad varían según la entrada y el checkpoint):
En el ejemplo, las probabilidades independientes de seguridad favorecen safe, pero seleccionar prompt_injection invalida esa respuesta. Por eso, el decodificador con restricciones selecciona la respuesta unsafe, de menor probabilidad, y una gravedad de al menos high. Las restricciones garantizan un resultado conjunto válido; no aumentan ni recalibran las probabilidades subyacentes ni la confianza. Comprueba siempre _meta.feasible. Un resultado puede ser de mejor esfuerzo en lugar de totalmente factible cuando el esquema es contradictorio o ninguna asignación candidata conservada cumple todas las reglas.

Esquema de extracción estructurada

Los campos de estructura usan especificaciones field::type::description:

Esquema de relaciones

El esquema de relaciones más simple es una lista plana de nombres de relación:
También puedes usar un diccionario para añadir descripciones o configuración por relación:
No envíes objetos de relación que contengan definiciones de head y tail.

Esquema combinado

Ejecuta varias tareas sobre el mismo texto combinando claves:
El esquema identifica la operación automáticamente. No envíes task ni task_type.

Ejemplo

El valor de model debe soportar actualmente la inferencia alojada. Usa el catálogo de modelos en vivo en lugar de asumir que todos los checkpoints de Hugging Face están disponibles:

Respuesta

El endpoint devuelve un envoltorio de chat completion. El resultado GLiNER se serializa como una cadena JSON en choices[0].message.content:
Analiza choices[0].message.content como JSON antes de leer los resultados de la tarea. Cuando store=true, x_fastino.inference_id identifica la inferencia persistida. x_fastino.default_schema_applied es true cuando una solicitud de codificador omite tanto schema como response_format y Fastino usa la configuración predeterminada del catálogo para el modelo seleccionado. Comprueba x_fastino.truncated antes de considerar completa una extracción.

Trabajos asíncronos para entradas muy grandes

Usa la interfaz asíncrona de GLiNER cuando una solicitud supere un millón de tokens y pueda exceder el tiempo de espera síncrono. Envía la carga útil nativa de GLiNER a:
La solicitud requiere text y schema; también acepta threshold, include_confidence e include_spans. Un envío correcto devuelve HTTP 202 con job_id, status, estimated_tokens y message. Consulta el ID del trabajo devuelto hasta que status sea complete o error:
Los trabajos completados incluyen result y token_usage. Los trabajos están limitados al usuario autenticado, así que usa la misma API key para el envío y la consulta.

Entradas repetidas

El endpoint acepta una conversación por solicitud. No soporta la forma de lote text: string[] del endpoint nativo eliminado. Envía solicitudes separadas de forma concurrente cuando proceses varias entradas.

Errores

Consulta Arranques en frío y reintentos para ver el patrón de reintentos compartido.
POST /inference se ha eliminado. No envíes sus campos heredados como model_id, text, task, format_results o is_warmup.

Migración de solicitudes heredadas