Output Schema
Ein Output Schema beschränkt LLM-Ausgaben auf strukturiertes JSON und validiert sie gegen eine unterstützte Teilmenge von JSON Schema.
Auf dieser Seite
Ein Output Schema definiert die Struktur und Validierungsregeln für die JSON-Antwort eines LLM-Agenten. Referenziere eine Schema-Datei im Agent YAML, um sie auf jede Antwort anzuwenden.
Output Schemas werden nur für Agenten mit type: llm unterstützt. Sequential-Agenten und Tool-Agenten unterstützen dieses Feature nicht.
output_schema beschränkt die finale Antwort des Agenten. Das Schema muss nicht die Formate mehrerer ausgehender Verbindungen vereinen. Eine ausgehende Agent-Tool-Verbindung besitzt ein eigenes, von der Verbindung vorgegebenes Payload-Schema, das beim Aufruf des Tools validiert wird. Eine ausgehende Middleware-Verbindung akzeptiert dieselbe Payload über send_connector. Automatische ausgehende Verbindungen interpretieren die finale Antwort weiterhin als Inhalt der Verbindung.
Quickstart
Schema-Datei erstellen
Erstelle im Projekt ein Verzeichnis schemas/ und füge eine JSON-Schema-Datei hinzu:
{
"type": "object",
"description": "Extracted invoice data",
"properties": {
"vendor": {
"type": "string",
"description": "Vendor/company name"
},
"invoice_date": {
"type": "string",
"description": "Invoice date in YYYY-MM-DD format"
},
"total": {
"type": "number",
"description": "Total invoice amount"
}
},
"required": ["vendor", "total"]
}Im Agent YAML referenzieren
Füge das Feld output_schema der Agent-Konfiguration hinzu:
version: "1.0"
name: invoice-extractor
type: llm # output_schema only works with LLM agents
model: connic/gemini-3.7-flash
description: "Extracts structured data from invoices"
system_prompt: |
Extract invoice data and return it as JSON matching the schema.
Be precise with amounts and dates.
output_schema: invoice-data # References schemas/invoice-data.jsonProjekt-Struktur
Grundlagen von JSON Schema
Connic akzeptiert die unten aufgeführten JSON-Schema-Typen und Keywords. Das Top-Level-Schema muss type: object verwenden; die anderen Typen gelten für verschachtelte Felder.
Datentypen
| Typ | Beispielwert | Beschreibung |
|---|---|---|
| string | "hello world" | Textwerte |
| number | 42.5 | Beliebige numerische Werte (Ganzzahlen und Dezimalzahlen) |
| integer | 42 | Nur Ganzzahlen |
| boolean | true / false | Wahr- oder Falsch-Werte |
| array | [1, 2, 3] | Liste von Elementen (Elementschema mit items definieren) |
| object | {"key": "value"} | Verschachtelte Struktur (Felder mit properties definieren) |
| null | null | Expliziter Nullwert |
Schema-Properties
| Property | Verwendet mit | Beschreibung |
|---|---|---|
| type | Alle | Der Datentyp (string, number, object, array usw.) |
| description | Alle | Für Menschen lesbare Beschreibung (hilft dem LLM, das Feld zu verstehen) |
| properties | object | Definiert die Felder eines Objekts und ihre Schemas |
| required | object | Array mit Feldnamen, die vorhanden sein müssen |
| items | array | Schema für Array-Elemente |
| enum | primitive | Liste zulässiger Werte |
| const | primitive | Ein einzelner vorgeschriebener Wert |
| minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf | number | Numerische Grenzwerte und Schrittweiten |
| minLength, maxLength, pattern | string | Beschränkungen für String-Länge und reguläre Ausdrücke |
| minItems, maxItems | array | Beschränkungen für die Array-Länge |
| default | Alle | Dokumentiert einen Standardwert. Das Feld wird dadurch weder zum Pflichtfeld noch automatisch ergänzt, wenn es fehlt. |
| additionalProperties | object | false lehnt nicht deklarierte Felder ab |
| nullable / type arrays | Alle | Verwende nullable: true oder type: ["<type>", "null"], um null zuzulassen |
Vollständiges Beispiel
Ein umfassenderes Schema mit verschachtelten Objekten, Arrays und Enums:
{
"type": "object",
"description": "Extracted invoice data",
"properties": {
"vendor": {
"type": "string",
"description": "Vendor/company name"
},
"date": {
"type": "string",
"description": "Invoice date (YYYY-MM-DD)"
},
"total": {
"type": "number",
"description": "Total invoice amount"
},
"currency": {
"type": "string",
"description": "Currency code",
"enum": ["USD", "EUR", "GBP"]
},
"items": {
"type": "array",
"description": "Line items",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"quantity": { "type": "integer" },
"price": { "type": "number" }
}
}
}
},
"required": ["vendor", "total"]
}Wichtige Punkte
descriptionhilft dem LLM zu verstehen, welche Daten es extrahieren sollenumbeschränkt Werte auf eine festgelegte Mengeitemsdefiniert das Schema für Array-Elementerequiredlistet Felder auf, die immer vorhanden sein müssen
- Stelle sicher, dass die Schema-Datei valides JSON enthält (kein Komma nach dem letzten Eintrag)
- Prüfe, ob die Datei im Verzeichnis
schemas/liegt - Referenziere den Schemanamen ohne die Endung
.json - Prüfe, ob der Agent-Typ
llmist