Zum Hauptinhalt springen
GLiNER verwendet den OpenAI-kompatiblen Umschlag aus model und messages mit zwei GLiNER-spezifischen Details:
  • Fügen Sie ein schema auf oberster Ebene hinzu, das Extraktion, Klassifikation, strukturierte Datensätze oder Relationen beschreibt.
  • Parsen Sie den JSON-String in choices[0].message.content.

Fastino GLiNER Agent Skill

Installieren Sie das GLiNER-Skill in Cursor, Claude Code oder Codex.

API-Vertrag ansehen

Alle Anfrage- und Antwortfelder.

GLiNER-Rezepte

Getestete Anfragen für Entitäten, Klassifikation und Relationen.

Ihren API-Schlüssel einrichten

  1. Erstellen Sie ein Fastino-Konto
  2. Rufen Sie Ihren API-Schlüssel unter Settings ab
Setzen Sie Ihren Schlüssel als Umgebungsvariable, damit die folgenden Beispiele unverändert funktionieren:

Anfrage

string
erforderlich
Eine inferenzfähige Basismodell-ID oder die UUID eines abgeschlossenen, bereitstellbaren Fastino-Trainingsjobs.
object[]
erforderlich
Eine nicht leere Liste von Nachrichten. Für die GLiNER-Inferenz platzieren Sie den zu analysierenden Text im content einer Benutzernachricht.
object
Definiert benutzerdefinierte Encoder-Aufgaben. Für klassische Extraktion und Klassifikation geben Sie ein Dictionary an, das einen oder mehrere der Schlüssel entities, classifications, structures oder relations enthält. Für eingeschränkte Klassifikation geben Sie die native Form aus version, tasks und constraints an, die unten dokumentiert ist. Lassen Sie schema nur weg, wenn das ausgewählte Modell eine konfigurierte Standardaufgabe hat. Jeder Eintrag in klassischen classifications benötigt mindestens zwei Labels.Ein flaches Array von Entitätslabels ist veraltet. Verwenden Sie immer die Dictionary-Form.
number
Standard:"0.5"
Konfidenzschwelle von 0 bis 1. Niedrigere Werte begünstigen Recall; höhere Werte begünstigen Precision.
boolean
Standard:"true"
Konfidenzwerte in extrahierten Ergebnissen enthalten.
boolean
Standard:"true"
Halboffene Zeichen-Offsets (start, end) in Entitätsergebnissen enthalten.
boolean
Standard:"true"
Die Inferenz persistieren. Setzen Sie den Wert auf false, um dies abzulehnen.
boolean
Standard:"false"
Bei Encoder-Modellen Text, der die max_input_tokens des Modells überschreitet, abschneiden, statt input_too_long zurückzugeben. Verwenden Sie diese Option nur, wenn der Verlust des Endes der Eingabe akzeptabel ist.
Wenn gekürzt wird, ist x_fastino.truncated gleich true, und Entitäten nach der Schnittstelle werden nicht zurückgegeben. Die Nutzung zählt weiterhin den vollständigen übermittelten Text. Eingaben mit mehr als 50.000 Zeichen werden vor dem Kürzen abgelehnt. Die Option gilt für Basis-, LoRA- und vollständig feinabgestimmte Encoder-Modelle.

Entitäts-Schema

Verwenden Sie nach Möglichkeit beschreibende Entitätsdefinitionen:

Klassifikations-Schema

Jeder Eintrag akzeptiert nur task, labels, multi_label, cls_threshold und top_k. Bei GLiNER-2.5-Decide muss labels eine Liste von Strings sein, und top_k hat derzeit keine Wirkung; siehe Klassifikation.

Schema für eingeschränkte Klassifikation

GLiNER2.5 Multi kann zusammenhängende Klassifikationsaufgaben unter harten Constraints gemeinsam dekodieren. Prüfen Sie vor der Verwendung dieses Schemas, ob das ausgewählte Modell in GET /v1/base-models unter encoder_features den Eintrag constrained_classification meldet. Aufgaben verwenden Felder für Kardinalität und Reihenfolge:
  • Einzelne Antwort: min_labels: 1 und max_labels: 1
  • Mehrere Antworten: Verwenden Sie min_labels und optional max_labels
  • Ordinal: Kardinalität einer einzelnen Antwort plus ordered: true; die Labels sind von niedrig nach hoch geordnet
labels kann ein String-Array oder ein Objekt sein, das jeder Antwort ihre Beschreibung zuordnet. Eine Aufgabe kann außerdem instruction und examples enthalten, wobei jedes Beispiel ein [text, answer]-Paar ist. Zu den unterstützten Constraint-Ausdrücken gehören Implies, Excludes, Cardinality, AtLevel, MinLevel und MaxLevel. Bei den Namen der Constraint-Typen wird zwischen Groß- und Kleinschreibung unterschieden. Ordinale Constraints verwenden diese JSON-Formen:
Die Eigenschaftsnamen exact_level, minimum_level, maximum_level und bounded_range oben sind erläuternde Bezeichnungen, keine Constraint-Felder. Fügen Sie das jeweilige Constraint-Objekt direkt in das constraints-Array des Schemas ein. Ein begrenzter Bereich ist ein And mit MinLevel und MaxLevel; einen Wire-Typ BetweenLevel gibt es nicht. Die folgende Anfrage kombiniert Aufgaben mit einzelner Antwort, mit mehreren Antworten und ordinale Aufgaben:
Der Endpunkt gibt den standardmäßigen Chat-Completion-Umschlag zurück. Nach dem Parsen des JSON-Strings in choices[0].message.content hat das eingeschränkte Ergebnis diese Form (die Wahrscheinlichkeitswerte variieren je nach Eingabe und Checkpoint):
Die unabhängigen Sicherheitswahrscheinlichkeiten im Beispiel favorisieren safe, doch die Auswahl von prompt_injection macht diese Antwort ungültig. Der eingeschränkte Decoder wählt daher die weniger wahrscheinliche Antwort unsafe und einen Schweregrad von mindestens high. Constraints erzwingen ein gültiges gemeinsames Ergebnis. Sie erhöhen oder rekalibrieren weder die zugrunde liegenden Wahrscheinlichkeiten noch die Konfidenz. Prüfen Sie immer _meta.feasible. Ein Ergebnis kann ein Best-Effort-Ergebnis statt eines vollständig zulässigen Ergebnisses sein, wenn das Schema widersprüchlich ist oder keine beibehaltene Kandidatenzuweisung alle Regeln erfüllt.

Schema für strukturierte Extraktion

Strukturfelder verwenden field::type::description-Spezifikationen:

Relations-Schema

Das einfachste Relations-Schema ist eine flache Liste von Relationsnamen:
Sie können auch ein Dictionary verwenden, um Beschreibungen oder eine relationsspezifische Konfiguration hinzuzufügen:
Senden Sie keine Relationsobjekte, die Head- und Tail-Definitionen enthalten.

Kombiniertes Schema

Führen Sie mehrere Aufgaben über denselben Text aus, indem Sie die Schlüssel kombinieren:
Das Schema erkennt die Operation automatisch. Senden Sie weder task noch task_type.

Beispiel

Der Wert von model muss aktuell gehostete Inferenz unterstützen. Verwenden Sie den Live-Modellkatalog, statt anzunehmen, dass jedes Hugging-Face-Checkpoint verfügbar ist:

Antwort

Der Endpunkt gibt einen Chat-Completion-Umschlag zurück. Das GLiNER-Ergebnis wird als JSON-String in choices[0].message.content serialisiert:
Parsen Sie choices[0].message.content als JSON, bevor Sie die Aufgabenergebnisse lesen. Wenn store=true, identifiziert x_fastino.inference_id die persistierte Inferenz. x_fastino.default_schema_applied ist true, wenn eine Encoder-Anfrage sowohl schema als auch response_format ausgelassen hat und Fastino den Katalogstandard des ausgewählten Modells verwendet hat. Prüfen Sie x_fastino.truncated, bevor Sie eine Extraktion als vollständig behandeln.

Asynchrone Jobs für sehr große Eingaben

Verwenden Sie die asynchrone GLiNER-Schnittstelle, wenn eine Anfrage eine Million Token überschreitet und das synchrone Timeout überdauern könnte. Senden Sie die native GLiNER-Payload an:
Die Anfrage erfordert text und schema; außerdem werden threshold, include_confidence und include_spans akzeptiert. Eine erfolgreiche Übermittlung gibt HTTP 202 mit job_id, status, estimated_tokens und message zurück. Fragen Sie die zurückgegebene Job-ID ab, bis status den Wert complete oder error hat:
Abgeschlossene Jobs enthalten result und token_usage. Jobs sind auf den authentifizierten Benutzer beschränkt. Verwenden Sie daher denselben API-Schlüssel für Übermittlung und Abfrage.

Wiederholte Eingaben

Der Endpunkt akzeptiert eine Konversation pro Anfrage. Die Batch-Form text: string[] des entfernten nativen Endpunkts wird nicht unterstützt. Senden Sie bei mehreren Eingaben separate Anfragen gleichzeitig.

Fehler

Das gemeinsame Wiederholungsmuster finden Sie unter Kaltstarts und Wiederholungsversuche.
POST /inference wurde entfernt. Senden Sie keine veralteten Felder wie model_id, text, task, format_results oder is_warmup.

Migration veralteter Anfragen