Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются структурированные выходные данные в Azure Databricks и их использование в рамках рабочих процессов создания приложений ИИ. Структурированные выходные данные работают с моделями OpenAI, поддерживающими структурированные модели.
Что такое структурированные выходные данные?
Структурированные выходные данные позволяют создавать структурированные данные в виде объектов 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"
Использование токенов
Внедрение запросов и другие методы используются для повышения качества структурированных выходных данных. Это влияет на количество входных и выходных маркеров, потребляемых моделью, что в свою очередь приводит к последствиям выставления счетов.
Ограничения
- Максимальное количество ключей, указанных в схеме JSON, равно
64. - API-интерфейсы модели Foundation не применяют ограничения длины или размера для объектов и массивов.
- Это включает такие ключевые слова, как
maxProperties,minPropertiesиmaxLength.
- Это включает такие ключевые слова, как
- Сильно вложенные схемы JSON приводят к снижению качества генерации. Попробуйте по возможности упростить структуру схемы JSON для улучшения результатов.
- Модели Anthropic Claude могут принимать только
json_schemaструктурированные выходные данные. Функцияjson_objectне поддерживается.