Passer au contenu principal
GLiNER utilise l’enveloppe model et messages compatible OpenAI avec deux particularités :
  • Ajoutez un schema de premier niveau décrivant l’extraction, la classification, les enregistrements structurés ou les relations.
  • Analysez la chaîne JSON dans choices[0].message.content.

Skill d'agent Fastino GLiNER

Installez le skill GLiNER dans Cursor, Claude Code ou Codex.

Voir le contrat d'API

Tous les champs de requête et de réponse.

Recettes GLiNER

Requêtes testées pour les entités, la classification et les relations.

Configurez votre clé d’API

  1. Créez un compte Fastino
  2. Obtenez votre clé d’API depuis Settings
Définissez votre clé comme variable d’environnement afin que les exemples ci-dessous fonctionnent tels quels :

Requête

string
requis
Un identifiant de modèle de base compatible avec l’inférence ou l’UUID d’une tâche d’entraînement Fastino terminée et déployable.
object[]
requis
Une liste de messages non vide. Pour l’inférence GLiNER, placez le texte à analyser dans le content d’un message utilisateur.
object
Définit des tâches d’encodeur personnalisées. Pour l’extraction et la classification classiques, fournissez un dictionnaire contenant une ou plusieurs des clés entities, classifications, structures ou relations. Pour la classification contrainte, fournissez la forme native version, tasks et constraints documentée ci-dessous. N’omettez schema que lorsque le modèle sélectionné a une tâche par défaut configurée. Chaque entrée de classifications classique nécessite au moins deux étiquettes.Un tableau plat d’étiquettes d’entités est déprécié. Utilisez toujours la forme dictionnaire.
number
défaut:"0.5"
Seuil de confiance de 0 à 1. Les valeurs plus basses favorisent le rappel ; les plus élevées favorisent la précision.
boolean
défaut:"true"
Inclut les valeurs de confiance dans les résultats extraits.
boolean
défaut:"true"
Inclut les décalages de caractères en intervalle semi-ouvert (start, end) dans les résultats d’entités.
boolean
défaut:"true"
Persiste l’inférence. Définissez sur false pour ne pas la conserver.
boolean
défaut:"false"
Pour les modèles d’encodeur, tronque le texte qui dépasse le max_input_tokens du modèle au lieu de renvoyer input_too_long. N’utilisez cette option que lorsque la perte de la fin de l’entrée est acceptable.
Lorsqu’une troncature a lieu, x_fastino.truncated vaut true et les entités situées au-delà de la coupure ne sont pas renvoyées. L’usage compte toujours l’intégralité du texte soumis. Les entrées de plus de 50 000 caractères sont rejetées avant la troncature. L’option s’applique aux modèles d’encodeur de base, LoRA et entièrement fine-tunés.

Schéma d’entités

Utilisez des définitions d’entités descriptives lorsque c’est possible :

Schéma de classification

Chaque entrée n’accepte que task, labels, multi_label, cls_threshold et top_k. Sur GLiNER-2.5-Decide, labels doit être une liste de chaînes et top_k n’a actuellement aucun effet ; voir Classification.

Schéma de classification contrainte

GLiNER2.5 Multi peut décoder conjointement des tâches de classification liées sous des contraintes strictes. Avant d’utiliser ce schéma, vérifiez que le modèle sélectionné indique constrained_classification dans encoder_features via GET /v1/base-models. Les tâches utilisent des champs de cardinalité et d’ordre :
  • Réponse unique : min_labels: 1 et max_labels: 1
  • Réponses multiples : utilisez min_labels et, éventuellement, max_labels
  • Ordinale : cardinalité de réponse unique plus ordered: true ; les étiquettes sont ordonnées de la plus basse à la plus haute
labels peut être un tableau de chaînes ou un objet associant chaque réponse à sa description. Une tâche peut également inclure instruction et examples, où chaque exemple est une paire [text, answer]. Les expressions de contrainte prises en charge incluent Implies, Excludes, Cardinality, AtLevel, MinLevel et MaxLevel. Les noms de types de contrainte sont sensibles à la casse. Les contraintes ordinales utilisent ces formes JSON :
Les noms de propriétés exact_level, minimum_level, maximum_level et bounded_range ci-dessus sont des libellés explicatifs, et non des champs de contrainte. Placez l’objet de contrainte correspondant directement dans le tableau constraints du schéma. Une plage bornée est un And contenant MinLevel et MaxLevel ; il n’existe pas de type BetweenLevel dans le format de transmission. La requête suivante combine des tâches à réponse unique, à réponses multiples et ordinales :
Le endpoint renvoie l’enveloppe de chat completion standard. Après analyse de la chaîne JSON dans choices[0].message.content, le résultat contraint a la forme suivante (les valeurs de probabilité varient selon l’entrée et le checkpoint) :
Dans cet exemple, les probabilités indépendantes de sécurité favorisent safe, mais la sélection de prompt_injection rend cette réponse invalide. Le décodeur contraint sélectionne donc la réponse unsafe, moins probable, ainsi qu’une gravité d’au moins high. Les contraintes imposent un résultat conjoint valide ; elles n’augmentent ni ne recalibrent les probabilités sous-jacentes ou la confiance. Vérifiez toujours _meta.feasible. Un résultat peut être une meilleure approximation plutôt qu’un résultat entièrement réalisable lorsque le schéma est contradictoire ou qu’aucune affectation candidate retenue ne satisfait toutes les règles.

Schéma d’extraction structurée

Les champs de structure utilisent des spécifications field::type::description :

Schéma de relations

Le schéma de relations le plus simple est une liste plate de noms de relations :
Vous pouvez également utiliser un dictionnaire pour ajouter des descriptions ou une configuration par relation :
N’envoyez pas d’objets de relation contenant des définitions head et tail.

Schéma combiné

Exécutez plusieurs tâches sur le même texte en combinant les clés :
Le schéma identifie l’opération automatiquement. N’envoyez pas task ni task_type.

Exemple

La valeur de model doit actuellement prendre en charge l’inférence hébergée. Utilisez le catalogue de modèles en direct plutôt que de supposer que chaque checkpoint Hugging Face est disponible :

Réponse

Le endpoint renvoie une enveloppe de chat completion. Le résultat GLiNER est sérialisé sous forme de chaîne JSON dans choices[0].message.content :
Analysez choices[0].message.content comme JSON avant de lire les résultats de la tâche. Lorsque store=true, x_fastino.inference_id identifie l’inférence persistée. x_fastino.default_schema_applied vaut true lorsqu’une requête d’encodeur omet à la fois schema et response_format et que Fastino utilise la valeur par défaut du catalogue pour le modèle sélectionné. Vérifiez x_fastino.truncated avant de considérer une extraction comme complète.

Tâches asynchrones pour les entrées très volumineuses

Utilisez l’interface GLiNER asynchrone lorsqu’une requête dépasse un million de tokens et risque de dépasser le délai d’expiration synchrone. Soumettez la charge utile GLiNER native à :
La requête exige text et schema ; elle accepte également threshold, include_confidence et include_spans. Une soumission réussie renvoie HTTP 202 avec job_id, status, estimated_tokens et message. Interrogez l’ID de tâche renvoyé jusqu’à ce que status soit complete ou error :
Les tâches terminées incluent result et token_usage. Les tâches sont limitées à l’utilisateur authentifié. Utilisez donc la même clé d’API pour la soumission et l’interrogation.

Entrées répétées

Le endpoint accepte une conversation par requête. Il ne prend pas en charge la forme de lot text: string[] de l’endpoint natif supprimé. Envoyez des requêtes séparées en simultané lors du traitement de plusieurs entrées.

Erreurs

Consultez Démarrages à froid et nouvelles tentatives pour le schéma de nouvelles tentatives commun.
POST /inference a été supprimé. N’envoyez pas ses champs hérités tels que model_id, text, task, format_results ou is_warmup.

Migration des requêtes héritées