Структурированные выходные данные в Azure Databricks
Внимание
Эта функция доступна в общедоступной предварительной версии и поддерживается как в API-интерфейсах модели Foundation за токен, так и в подготовленных конечных точках пропускной способности.
В этой статье описываются структурированные выходные данные в Azure Databricks и их использование в рамках рабочих процессов создания приложений ИИ. Структурированные выходные данные совместимы с OpenAI и доступны только во время работы модели в рамках API-интерфейсов модели Foundation.
Что такое структурированные выходные данные?
Структурированные выходные данные позволяют создавать структурированные данные в виде объектов JSON из входных данных. Вы можете создать текст, неструктурированные объекты JSON и объекты JSON, которые соответствуют определенной схеме JSON. Структурированные выходные данные поддерживаются для моделей чата, обслуживаемых с помощью API-интерфейсов модели Foundation, оплачиваемых за токен и подготовленных конечных точек пропускной способности.
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-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, но схема 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-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
API модели foundation широко поддерживают структурированные выходные данные, принятые OpenAI. Однако использование более простой схемы JSON для определений схем JSON приводит к повышению качества создания JSON. Чтобы повысить качество генерации, API моделей Foundation поддерживают лишь ограниченный набор спецификаций схемы JSON .
Следующие ключи определения вызова функции не поддерживаются:
- Регулярные выражения, использующие
pattern
. - Сложная вложенная компоновка и проверка схем с использованием:
anyOf
,oneOf
,allOf
,prefixItems
или$ref
. - Списки типов, за исключением особых случаев
[type, “null”]
, где один тип в списке является допустимым типом JSON, а другой —"null"
Использование маркеров
Внедрение запросов и другие методы используются для повышения качества структурированных выходных данных. Это влияет на количество входных и выходных маркеров, потребляемых моделью, что в свою очередь приводит к последствиям выставления счетов.
Ограничения
- Максимальное количество ключей, указанных в схеме JSON, равно
64
. - API-интерфейсы модели Foundation не применяют ограничения длины или размера для объектов и массивов.
- Это включает такие ключевые слова, как
maxProperties
,minProperties
иmaxLength
.
- Это включает такие ключевые слова, как
- Вложенная схема JSON приводит к снижению качества создания. Попробуйте по возможности упростить структуру схемы JSON для улучшения результатов.