Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden strukturierte Ausgaben für Azure Databricks und deren Verwendung als Teil Ihrer generativen KI-Anwendungsworkflows beschrieben. Strukturierte Ausgaben funktionieren mit OpenAI-Modellen, die strukturierte Modelle unterstützen.
Was sind strukturierte Ausgaben?
Strukturierte Ausgaben bieten eine Möglichkeit, strukturierte Daten in Form von JSON-Objekten aus Ihren Eingabedaten zu generieren. Sie können text-, unstrukturierte JSON-Objekte und JSON-Objekte generieren, die einem bestimmten JSON-Schema entsprechen. Strukturierte Ausgaben werden für Chatmodelle unterstützt, die mithilfe von Foundation-Modell-APIs per Token und bereitgestellten Durchsatzendpunkten bereitgestellt werden.
Databricks empfiehlt die Verwendung strukturierter Ausgaben für die folgenden Szenarien:
- Extrahieren von Daten aus großen Dokumentenmengen. Beispiel: Identifizieren und Klassifizieren von Feedback zur Produktüberprüfung als negativ, positiv oder neutral.
- Batch-Ableitungsaufgaben, für die Ausgaben in einem angegebenen Format erforderlich sind.
- Datenverarbeitung, z. B. das Umwandeln unstrukturierter Daten in strukturierte Daten.
Verwenden von strukturierten Ausgaben
Geben Sie Ihre strukturierten Ausgaben in response_format Ihrer Chatanfrage an. Siehe Foundation-Modell-REST-API-Referenz.
Im Folgenden sehen Sie ein Beispiel für die Datenextraktion von Forschungspapieren zu einem bestimmten JSON-Schema.
import os
import json
from openai import OpenAI
DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=DATABRICKS_BASE_URL
)
response_format = {
"type": "json_schema",
"json_schema": {
"name": "research_paper_extraction",
"schema": {
"type": "object",
"properties": {
"title": { "type": "string" },
"authors": {
"type": "array",
"items": { "type": "string" }
},
"abstract": { "type": "string" },
"keywords": {
"type": "array",
"items": { "type": "string" }
}
},
},
"strict": True
}
}
messages = [{
"role": "system",
"content": "You are an expert at structured data extraction. You will be given unstructured text from a research paper and should convert it into the given structure."
},
{
"role": "user",
"content": "..."
}]
response = client.chat.completions.create(
model="databricks-gpt-oss-20b",
messages=messages,
response_format=response_format
)
print(json.dumps(response.choices[0].message.model_dump()['content'], indent=2))
Im Folgenden sehen Sie ein Beispiel für die JSON-Extraktion, aber das JSON-Schema ist vor der Hand nicht bekannt.
import os
import json
from openai import OpenAI
DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url=DATABRICKS_BASE_URL
)
response_format = {
"type": "json_object",
}
messages = [
{
"role": "user",
"content": "Extract the name, size, price, and color from this product description as a JSON object:\n<description>\nThe SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. It's 5 inches wide.\n</description>"
}]
response = client.chat.completions.create(
model="databricks-gpt-oss-20b",
messages=messages,
response_format=response_format
)
print(json.dumps(response.choices[0].message.model_dump()['content'], indent=2))
JSON-Schema
Foundation Model-APIs unterstützen allgemein strukturierte Ausgaben, die von OpenAI akzeptiert werden. Die Verwendung eines einfacheren JSON-Schemas für JSON-Schemadefinitionen führt jedoch zu einer höheren Qualität der JSON-Generierung. Um die Generierung höherer Qualität zu fördern, unterstützen Foundation Model-APIs nur eine Teilmenge der JSON-Schemaspezifikationen.
Die folgenden Funktionsaufrufdefinitionsschlüssel werden nicht unterstützt:
- Reguläre Ausdrücke, die
patternnutzen. - Komplexe geschachtelte oder Schemakomposition und -validierung mit:
anyOf,oneOf,allOf,prefixItemsoder$ref. - Listen von Typen mit Ausnahme des Sonderfalls
[type, “null”], in dem ein Typ in der Liste ein gültiger JSON-Typ und der andere"null"ist
Verwendung von Token
Prompt Injection und andere Techniken werden verwendet, um die Qualität strukturierter Ausgaben zu verbessern. Dies wirkt sich auf die Anzahl der vom Modell verbrauchten Eingabe- und Ausgabetoken aus, was wiederum zu Abrechnungsauswirkungen führt.
Begrenzungen
- Die maximale Anzahl der im JSON-Schema angegebenen Schlüssel ist
64. - Foundation-Modell-APIs erzwingen keine Längen- oder Größenbeschränkungen für Objekte und Arrays.
- Dazu gehören Schlüsselwörter wie
maxProperties,minPropertiesundmaxLength.
- Dazu gehören Schlüsselwörter wie
- Stark geschachtelte JSON-Schemas führen zu einer niedrigeren Qualitätsgenerierung. Versuchen Sie nach Möglichkeit, das JSON-Schema abzuflachen, um bessere Ergebnisse zu erzielen.
- Anthropische Claude-Modelle können nur strukturierte Ausgaben akzeptieren
json_schema.json_objectwird nicht unterstützt.