Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano ustrukturyzowane dane wyjściowe w usłudze Azure Databricks i sposób ich używania w ramach przepływów pracy aplikacji generowania sztucznej inteligencji. Dane wyjściowe ze strukturą współdziałają z modelami OpenAI obsługującymi modele ustrukturyzowane.
Co to są dane wyjściowe strukturyzowane?
Dane wyjściowe ze strukturą umożliwiają generowanie danych strukturalnych w postaci obiektów JSON na podstawie danych wejściowych. Możesz wygenerować tekst, obiekty JSON bez struktury i obiekty JSON zgodne z określonym schematem JSON. Dane wyjściowe o ustalonej strukturze są obsługiwane przez modele czatu korzystające z interfejsów API modeli bazowych, które działają na zasadzie opłat za token oraz przez aprowizowane punkty końcowe wydajności.
Usługa Databricks zaleca używanie danych wyjściowych ze strukturą w następujących scenariuszach:
- Wyodrębnianie danych z dużych ilości dokumentów. Na przykład identyfikowanie i klasyfikowanie opinii o recenzji produktu jako negatywne, pozytywne lub neutralne.
- Zadania wnioskowania wsadowego, które wymagają danych wyjściowych w określonym formacie.
- Przetwarzanie danych, takie jak przekształcanie danych bez struktury na dane ustrukturyzowane.
Używanie danych wyjściowych ze strukturą
Określ ustrukturyzowane dane wyjściowe przy użyciu response_format w żądaniu czatu. Zobacz Odniesienie do modelu Foundation API REST.
Poniżej przedstawiono przykład wyodrębniania danych dokumentów badawczych do określonego schematu JSON.
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))
Poniżej przedstawiono przykład wyodrębniania JSON, ale schemat JSON nie jest znany wcześniej.
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))
Schemat JSON
Interfejsy API modeli bazowych szeroko wspierają ustrukturyzowane dane wyjściowe akceptowane przez OpenAI. Jednak użycie prostszego schematu JSON dla definicji schematu JSON powoduje generowanie JSON o wyższej jakości. Aby podwyższyć jakość generowania, interfejsy API modelu fundacyjnego obsługują tylko podzestaw specyfikacji schematu JSON .
Następujące klucze definicji wywołań funkcji nie są obsługiwane:
- Wyrażenia regularne wykorzystujące
pattern. - Złożone zagnieżdżanie lub komponowanie schematów i ich walidacja przy użyciu:
anyOf,oneOf,allOf,prefixItemslub$ref. - Listy typów z wyjątkiem specjalnego przypadku
[type, “null”], w którym jeden typ na liście jest prawidłowym typem JSON, a drugi jest"null"
Użycie tokenu
Iniekcja monitów i inne techniki są używane w celu zwiększenia jakości ustrukturyzowanych danych wyjściowych. Ma to wpływ na liczbę tokenów wejściowych i wyjściowych używanych przez model, co z kolei powoduje implikacje dotyczące rozliczeń.
Ograniczenia
- Maksymalna liczba kluczy określonych w schemacie JSON wynosi
64. - Interfejsy API modelu foundation nie wymuszają ograniczeń dotyczących długości ani rozmiaru obiektów i tablic.
- Obejmuje to słowa kluczowe, takie jak
maxProperties,minPropertiesimaxLength.
- Obejmuje to słowa kluczowe, takie jak
- Silnie zagnieżdżone schematy JSON powodują generowanie niższej jakości. Jeśli to możliwe, spróbuj spłaszczać schemat JSON, aby uzyskać lepsze wyniki.
- Modele Anthropic Claude mogą akceptować tylko ustrukturyzowane dane wynikowe.
json_objectnie jest obsługiwana.