Strukturované výstupy v Azure Databricks
Důležité
Tato funkce je ve verzi Public Preview a je podporovaná v rozhraních API základního modelu s průběžnými platbami za token i ve zřízených koncových bodech propustnosti.
Tento článek popisuje strukturované výstupy v Azure Databricks a jejich použití jako součást pracovních postupů generující aplikace AI. Strukturované výstupy jsou kompatibilní s OpenAI a jsou k dispozici pouze během modelování, které slouží jako součást rozhraní API pro základní modely.
Co jsou strukturované výstupy?
Strukturované výstupy umožňují generate strukturovaná data ve formě objektů JSON ze vstupních dat. Můžete se rozhodnout pro generate text, nestrukturované objekty JSON a objekty JSON, které dodržují konkrétní schéma schemaJSON. Strukturované výstupy jsou podporované pro modely chatu obsluhované pomocí rozhraní API pro základní modely plateb za token a zřízené koncové body propustnosti.
Databricks doporučuje používat strukturované výstupy pro následující scénáře:
- Extrahování dat z velkých objemů dokumentů Například identifikace a klasifikace zpětné vazby k produktu jako negativní, pozitivní nebo neutrální.
- Dávkové odvozovací úkoly, které vyžadují, aby výstupy byly v zadaném formátu.
- Zpracování dat, jako je například přeměna nestrukturovaných dat na strukturovaná data.
Použití strukturovaných výstupů
Zadejte strukturované výstupy, které používáte response_format
v žádosti o chat. Viz referenční informace k rozhraní REST API základního modelu.
Následuje příklad extrakce dat z výzkumných studií do konkrétního schemaJSON .
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))
Následuje příklad extrakce JSON, ale JSON schema není znám předem.
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
Rozhraní API základního modelu široce podporují strukturované výstupy přijaté openAI. Použití jednoduššího schema JSON pro definice JSON schema ale vede k vytvoření json s vyšší kvalitou. Pro podporu vyšší kvality generování rozhraní API základního modelu podporují pouze podmnožinu specifikací JSON schema.
Následující klíče definic volání funkce nejsou podporovány:
- Regulární výrazy používající
pattern
. - Složité vnořené nebo schema složení a ověřování pomocí:
anyOf
,oneOf
,allOf
,prefixItems
nebo$ref
. - Seznamy typů s výjimkou speciálního případu
[type, “null”]
where jeden typ v list je platným typem JSON a druhý typ je"null"
Využití tokenů
Injektáž výzvy a další techniky se používají ke zvýšení kvality strukturovaných výstupů. To má vliv na počet vstupních a výstupních tokenů spotřebovaných modelem, což zase vede k důsledkům fakturace.
Omezení
- Maximální počet klíčů zadaných v schema JSON je
64
. - Rozhraní API základního modelu nevynucují omezení délky nebo velikosti objektů a polí.
- To zahrnuje klíčová slova jako
maxProperties
,minProperties
amaxLength
.
- To zahrnuje klíčová slova jako
- Silně vnořené schémata JSON vedou ke generování nižší kvality. Pokud je to možné, zkuste zploštět schema JSON, aby se zlepšily výsledky.