Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gestructureerde outputs op Azure Databricks stellen je in staat antwoorden te genereren in een gedefinieerd JSON-formaat als onderdeel van je AI-applicatieworkflows. Ze werken met elk ondersteund chatmodel via een response_format veld. Je gebruikt hetzelfde verzoekformaat ongeacht de onderliggende modelprovider. Azure Databricks verzorgt elke provider-specifieke vertaling voor je, dus je hoeft het native gestructureerde outputformaat van een provider niet te gebruiken.
Tip
Genie Code (agentmodus) kan dit voor u doen. Probeer dit voorbeeldprompt:
Query the databricks-gpt-oss-20b model with a JSON schema response format to extract title, authors, abstract, and keywords from a research paper description. Note: this model returns content as a list of blocks; extract the block with type "text" and parse it.
Wat zijn gestructureerde uitvoer?
Gestructureerde uitvoer biedt een manier om gestructureerde gegevens te genereren in de vorm van JSON-objecten op basis van uw invoergegevens. U kunt ervoor kiezen om tekst, ongestructureerde JSON-objecten en JSON-objecten te genereren die voldoen aan een specifiek JSON-schema. Gestructureerde uitvoer wordt ondersteund voor chatmodellen die worden geleverd met behulp van Foundation Model API's via betalen per token en ingestelde capaciteitseindpunten.
Databricks raadt aan gestructureerde uitvoer te gebruiken voor de volgende scenario's:
- Gegevens extraheren uit grote hoeveelheden documenten. Bijvoorbeeld het identificeren en classificeren van feedback over productbeoordeling als negatief, positief of neutraal.
- Batchverwerkingstaken waarvoor de uitvoer in een gespecificeerde indeling moet zijn.
- Gegevensverwerking, zoals het omzetten van ongestructureerde gegevens in gestructureerde gegevens.
Gestructureerde uitvoer gebruiken
Specificeer uw gestructureerde uitvoer met behulp van response_format in uw chataanvraag. Zie naslaginformatie over de REST API van het Foundation-model.
Hier volgt een voorbeeld van gegevensextractie van onderzoeksdocumenten naar een specifiek 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))
Hier volgt een voorbeeld van JSON-extractie, maar het JSON-schema is niet vooraf bekend.
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-API's ondersteunen gestructureerde uitvoer die door OpenAI wordt geaccepteerd. Het gebruik van een eenvoudiger JSON-schema voor JSON-schemadefinities resulteert echter in een hogere kwaliteit JSON-generatie. Ter bevordering van het genereren van hogere kwaliteit ondersteunen Foundation Model-API's alleen een subset van JSON-schemaspecificaties.
De volgende definitiesleutels voor functie-aanroepen worden niet ondersteund:
- Reguliere expressies met behulp van
pattern. - Complexe geneste of schema-samenstelling en validatie met behulp van:
anyOf,oneOf,allOf,prefixItems, of$ref. - Lijsten met typen, met uitzondering van het speciale geval van
[type, “null”]waarbij één type in de lijst een geldig JSON-type is en het andere"null"
Gestructureerde output met Anthropic Claude-modellen
Het volgende voorbeeld extraheert gegevens naar een specifiek JSON-schema met behulp van een Claude-model. De enige verandering ten opzichte van de vorige voorbeelden is de model waarde.
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-claude-sonnet-4-5",
messages=messages,
response_format=response_format
)
print(json.dumps(response.choices[0].message.model_dump()['content'], indent=2))
Claude-modellen hebben extra beperkingen voor gestructureerde outputs. Zie de sectie Beperkingen.
Tokengebruik
Promptinjectie en andere technieken worden gebruikt om de kwaliteit van gestructureerde uitvoer te verbeteren. Dit heeft gevolgen voor het aantal invoer- en uitvoertokens dat door het model wordt gebruikt, wat op zijn beurt gevolgen heeft voor de facturering.
Beperkingen
- Het maximum aantal sleutels dat is opgegeven in het JSON-schema, is
64. - Basismodel-API's dwingen geen lengte- of groottebeperkingen af voor objecten en matrices.
- Dit omvat trefwoorden zoals
maxProperties,minPropertiesenmaxLength.
- Dit omvat trefwoorden zoals
- Sterk geneste JSON-schema's resulteren in het genereren van lagere kwaliteit. Probeer indien mogelijk het JSON-schema plat te maken voor betere resultaten.
Anthropic Claude-modellen hebben de volgende aanvullende beperkingen voor gestructureerde outputs:
- Alleen het gestructureerde
json_schemauitvoertype wordt ondersteund.json_objectwordt niet ondersteund. Voor onbeperkte output, laatresponse_format. weg - Gestructureerde outputs worden niet ondersteund met streaming. Stel in
streamopfalsewanneer je een specificeertresponse_format. - De
response_formatparameter voor Claude-gestructureerde uitvoer kan niet worden gecombineerd mettoolsoftool_choice.