Dela via


Strukturerade utdata på Azure Databricks

Viktigt!

Den här funktionen finns i offentlig förhandsversion och stöds på både Foundation Model API:er betala per token och etablerade dataflödesslutpunkter.

Den här artikeln beskriver strukturerade utdata på Azure Databricks och hur du använder dem som en del av dina generativa AI-programarbetsflöden. Strukturerade utdata är OpenAI-kompatibla och är endast tillgängliga under modeller som fungerar som en del av Foundation Model-API:er.

Vad är strukturerade utdata?

Strukturerade utdata är ett sätt att generera strukturerade data i form av JSON-objekt från dina indata. Du kan välja att generera text, ostrukturerade JSON-objekt och JSON-objekt som följer ett specifikt JSON-schema. Strukturerade utdata stöds för chattmodeller som hanteras med hjälp av Foundation Model API:er betala per token och etablerade dataflödesslutpunkter.

Databricks rekommenderar att du använder strukturerade utdata för följande scenarier:

  • Extrahera data från stora mängder dokument. Du kan till exempel identifiera och klassificera feedback om produktgranskning som negativ, positiv eller neutral.
  • Batch-slutsatsdragningsuppgifter som kräver att utdata är i ett angivet format.
  • Databearbetning, som att omvandla ostrukturerade data till strukturerade data.

Använda strukturerade utdata

Ange dina strukturerade utdata med hjälp av response_format i chattbegäran. Se Rest API-referens för Foundation-modell.

Följande är ett exempel på dataextrahering av forskningsrapporter till ett specifikt JSON-schema.

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))

Följande är ett exempel på JSON-extrahering, men JSON-schemat är inte känt före hand.

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-schema

API:er för Foundation Model stöder i stort sett strukturerade utdata som godkänts av OpenAI. Men om du använder ett enklare JSON-schema för JSON-schemadefinitioner resulterar det i JSON-generering av högre kvalitet. För att främja generering av högre kvalitet stöder Foundation Model-API:er endast en delmängd av JSON-schemaspecifikationer.

Följande definitionsnycklar för funktionsanrop stöds inte:

  • Reguljära uttryck med .pattern
  • Komplexa kapslade strukturer samt schemasammansättning och validering med: anyOf, oneOf, allOf, prefixItemseller $ref.
  • Listor med typer förutom specialfallet [type, “null”] där en typ i listan är en giltig JSON-typ och den andra är "null"

Tokenanvändning

Snabbinmatning och andra tekniker används för att förbättra kvaliteten på strukturerade utdata. Detta påverkar antalet indata- och utdatatoken som används av modellen, vilket i sin tur resulterar i faktureringskonsekvenser.

Begränsningar

  • Det maximala antalet nycklar som anges i JSON-schemat är 64.
  • Foundation Model-API:er tillämpar inte längd- eller storleksbegränsningar för objekt och matriser.
    • Detta inkluderar nyckelord som maxProperties, minPropertiesoch maxLength.
  • Starkt kapslade JSON-scheman resulterar i lägre kvalitet. Om möjligt kan du prova att platta ut JSON-schemat för bättre resultat.