Gestructureerde uitvoer in Azure Databricks
Belangrijk
Deze functie bevindt zich in de openbare preview en wordt ondersteund op beide Foundation Model-API's met betalen per token en ingerichte doorvoereindpunten.
In dit artikel worden gestructureerde uitvoer beschreven in Azure Databricks en hoe u deze kunt gebruiken als onderdeel van uw generatieve AI-toepassingswerkstromen. Gestructureerde uitvoer is openAI-compatibel en is alleen beschikbaar tijdens het model dat fungeert als onderdeel van Foundation Model-API's.
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 foundationmodel-API's betalen per token en ingerichte doorvoereindpunten.
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.
- Batchdeductietaken waarvoor uitvoer in een opgegeven indeling moet zijn.
- Gegevensverwerking, zoals het omzetten van ongestructureerde gegevens in gestructureerde gegevens.
Gestructureerde uitvoer gebruiken
Geef uw gestructureerde uitvoer op met behulp van response_format
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-meta-llama-3-1-70b-instruct",
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-meta-llama-3-1-70b-instruct",
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:
anyOf
,oneOf
,allOf
, ,prefixItems
of$ref
. - Lijsten met typen, met uitzondering van het speciale geval waarbij
[type, “null”]
één type in de lijst een geldig JSON-type is en het andere is"null"
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
,minProperties
enmaxLength
.
- 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.