Strukturerade utdata på Azure Databricks
Viktigt!
Den här funktionen finns i offentlig förhandsversion och stöds på både Foundation Model API:er betala per token och etablerade dataflödesslutpunkter.
Den här artikeln beskriver strukturerade utdata på Azure Databricks och hur du använder dem som en del av dina generativa AI-programarbetsflöden. Strukturerade utdata är OpenAI-kompatibla och är endast tillgängliga under modeller som fungerar som en del av Foundation Model-API:er.
Vad är strukturerade utdata?
Strukturerade utdata är ett sätt att generera strukturerade data i form av JSON-objekt från dina indata. Du kan välja att generera text, ostrukturerade JSON-objekt och JSON-objekt som följer ett specifikt JSON-schema. Strukturerade utdata stöds för chattmodeller som hanteras med hjälp av Foundation Model API:er betala per token och etablerade dataflödesslutpunkter.
Databricks rekommenderar att du använder strukturerade utdata för följande scenarier:
- Extrahera data från stora mängder dokument. Du kan till exempel identifiera och klassificera feedback om produktgranskning som negativ, positiv eller neutral.
- Batch-slutsatsdragningsuppgifter som kräver att utdata är i ett angivet format.
- Databearbetning, som att omvandla ostrukturerade data till strukturerade data.
Använda strukturerade utdata
Ange dina strukturerade utdata med hjälp av response_format
i chattbegäran. Se Rest API-referens för Foundation-modell.
Följande är ett exempel på dataextrahering av forskningsrapporter till ett specifikt 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-3-70b-instruct",
messages=messages,
response_format=response_format
)
print(json.dumps(response.choices[0].message.model_dump()['content'], indent=2))
Följande är ett exempel på JSON-extrahering, men JSON-schemat är inte känt före hand.
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-3-70b-instruct",
messages=messages,
response_format=response_format
)
print(json.dumps(response.choices[0].message.model_dump()['content'], indent=2))
JSON-schema
API:er för Foundation Model stöder i stort sett strukturerade utdata som godkänts av OpenAI. Men om du använder ett enklare JSON-schema för JSON-schemadefinitioner resulterar det i JSON-generering av högre kvalitet. För att främja generering av högre kvalitet stöder Foundation Model-API:er endast en delmängd av JSON-schemaspecifikationer.
Följande definitionsnycklar för funktionsanrop stöds inte:
- Reguljära uttryck med .
pattern
- Komplexa kapslade strukturer samt schemasammansättning och validering med:
anyOf
,oneOf
,allOf
,prefixItems
eller$ref
. - Listor med typer förutom specialfallet
[type, “null”]
där en typ i listan är en giltig JSON-typ och den andra är"null"
Tokenanvändning
Snabbinmatning och andra tekniker används för att förbättra kvaliteten på strukturerade utdata. Detta påverkar antalet indata- och utdatatoken som används av modellen, vilket i sin tur resulterar i faktureringskonsekvenser.
Begränsningar
- Det maximala antalet nycklar som anges i JSON-schemat är
64
. - Foundation Model-API:er tillämpar inte längd- eller storleksbegränsningar för objekt och matriser.
- Detta inkluderar nyckelord som
maxProperties
,minProperties
ochmaxLength
.
- Detta inkluderar nyckelord som
- Starkt kapslade JSON-scheman resulterar i lägre kvalitet. Om möjligt kan du prova att platta ut JSON-schemat för bättre resultat.