Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структурированные выводы на Azure Databricks позволяют генерировать ответы в определённом формате JSON в рамках рабочих процессов вашего AI-приложения. Они работают с любой поддерживаемой моделью чата через определённую response_format область. Вы используете один и тот же формат запроса независимо от поставщика базовой модели. Azure Databricks обрабатывает любой перевод, специфичный для провайдера, поэтому вам не нужно использовать встроенный формат структурированных выводов провайдера.
Tip
Код Genie (режим агента) может сделать это для вас. Попробуйте следующий пример запроса:
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.
Что такое структурированные выходные данные?
Структурированные выходные данные позволяют создавать структурированные данные в виде объектов JSON из входных данных. Вы можете создать текст, неструктурированные объекты JSON и объекты JSON, которые соответствуют определенной схеме JSON. Поддерживаются структурированные результаты для моделей чата, поставляемых с помощью API Foundation Model с оплатой за токен и конфигурируемых конечных точек с пропускной способностью.
Databricks рекомендует использовать структурированные выходные данные для следующих сценариев:
- Извлечение данных из больших объемов документов. Например, определение и классификация отзывов о продукте как отрицательные, положительные или нейтральные.
- Задачи пакетного вывода, требующие выходных данных в указанном формате.
- Обработка данных, например преобразование неструктурированных данных в структурированные данные.
Использование структурированных выходных данных
Укажите в запросе чата структурированные выходные данные, используя response_format.
См. справочник по REST API модели Foundation.
Ниже приведен пример извлечения данных исследовательских статей в определенную схему 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))
Ниже приведен пример извлечения JSON, но схема 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_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
API модели foundation широко поддерживают структурированные выходные данные, принятые OpenAI. Однако использование более простой схемы JSON для определений схем JSON приводит к повышению качества создания JSON. Чтобы повысить качество генерации, API базовой модели поддерживают только ограниченный набор спецификаций схемы JSON .
Следующие ключи определения вызова функции не поддерживаются:
- Регулярные выражения, использующие
pattern. - Сложная компоновка или валидация вложенных схем с помощью:
anyOf,oneOf,allOf,prefixItemsили$ref. - Списки типов, за исключением особых случаев
[type, “null”], где один тип в списке является допустимым типом JSON, а другой —"null"
Структурированные выходы с моделями Anthropic Claude
Следующий пример извлекает данные в конкретную схему JSON с помощью модели Клода. Единственное отличие от предыдущих примеров — это значение model значения.
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))
Модели Клода имеют дополнительные ограничения для структурированных выходов. См. раздел «Ограничения».
Использование токенов
Внедрение запросов и другие методы используются для повышения качества структурированных выходных данных. Это влияет на количество входных и выходных маркеров, потребляемых моделью, что в свою очередь приводит к последствиям выставления счетов.
Ограничения
- Максимальное количество ключей, указанных в схеме JSON, равно
64. - API-интерфейсы модели Foundation не применяют ограничения длины или размера для объектов и массивов.
- Это включает такие ключевые слова, как
maxProperties,minPropertiesиmaxLength.
- Это включает такие ключевые слова, как
- Сильно вложенные схемы JSON приводят к снижению качества генерации. Попробуйте по возможности упростить структуру схемы JSON для улучшения результатов.
Anthropic Claude модели имеют следующие дополнительные ограничения для структурированных выходов:
- Поддерживается только
json_schemaструктурированный выходной тип. Функцияjson_objectне поддерживается. Для неограниченного выхода опускайтеresponse_format. - Структурированные выходы не поддерживаются при стриминге. Установите
streamнаfalse, когда вы указываете .response_format - Параметр
response_formatдля структурированных выходов Клода нельзя комбинировать сtoolsилиtool_choice.