Zum Hauptinhalt springen
Connic
Build

Output Schema

Ein Output Schema beschränkt LLM-Ausgaben auf strukturiertes JSON und validiert sie gegen eine unterstützte Teilmenge von JSON Schema.

Zuletzt aktualisiert

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.

Nur für LLM-Agenten

Output Schemas werden nur für Agenten mit type: llm unterstützt. Sequential-Agenten und Tool-Agenten unterstützen dieses Feature nicht.

Finale Antwort und ausgehende Verbindungen

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

1

Schema-Datei erstellen

Erstelle im Projekt ein Verzeichnis schemas/ und füge eine JSON-Schema-Datei hinzu:

schemas/invoice-data.json
{
  "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"]
}
2

Im Agent YAML referenzieren

Füge das Feld output_schema der Agent-Konfiguration hinzu:

agents/invoice-extractor.yaml
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.json

Projekt-Struktur

Projektstruktur
my-project/
agents/
invoice-extractor.yaml
schemas/
invoice-data.jsonReferenced as "invoice-data"
customer-info.jsonReferenced as "customer-info"
tools/
...

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

TypBeispielwertBeschreibung
string"hello world"Textwerte
number42.5Beliebige numerische Werte (Ganzzahlen und Dezimalzahlen)
integer42Nur Ganzzahlen
booleantrue / falseWahr- oder Falsch-Werte
array[1, 2, 3]Liste von Elementen (Elementschema mit items definieren)
object{"key": "value"}Verschachtelte Struktur (Felder mit properties definieren)
nullnullExpliziter Nullwert

Schema-Properties

PropertyVerwendet mitBeschreibung
typeAlleDer Datentyp (string, number, object, array usw.)
descriptionAlleFür Menschen lesbare Beschreibung (hilft dem LLM, das Feld zu verstehen)
propertiesobjectDefiniert die Felder eines Objekts und ihre Schemas
requiredobjectArray mit Feldnamen, die vorhanden sein müssen
itemsarraySchema für Array-Elemente
enumprimitiveListe zulässiger Werte
constprimitiveEin einzelner vorgeschriebener Wert
minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOfnumberNumerische Grenzwerte und Schrittweiten
minLength, maxLength, patternstringBeschränkungen für String-Länge und reguläre Ausdrücke
minItems, maxItemsarrayBeschränkungen für die Array-Länge
defaultAlleDokumentiert einen Standardwert. Das Feld wird dadurch weder zum Pflichtfeld noch automatisch ergänzt, wenn es fehlt.
additionalPropertiesobjectfalse lehnt nicht deklarierte Felder ab
nullable / type arraysAlleVerwende nullable: true oder type: ["<type>", "null"], um null zuzulassen

Vollständiges Beispiel

Ein umfassenderes Schema mit verschachtelten Objekten, Arrays und Enums:

schemas/invoice-data.json
{
  "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

  • description hilft dem LLM zu verstehen, welche Daten es extrahieren soll
  • enum beschränkt Werte auf eine festgelegte Menge
  • items definiert das Schema für Array-Elemente
  • required listet Felder auf, die immer vorhanden sein müssen
Schema-Probleme beheben
  • 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 llm ist