Funkce ai_classify

Platí pro:označeno zaškrtnutím ano Databricks SQL označeno zaškrtnutím ano Databricks Runtime

Funkce ai_classify() klasifikuje textový obsah podle vlastních popisků, které zadáte. Pro základní klasifikaci můžete použít jednoduché názvy popisků nebo přidat popisy popisků a pokyny ke zlepšení přesnosti případů použití, jako je směrování zákaznické podpory, kategorizace dokumentů a analýza obsahu.

Funkce přijímá text nebo VARIANT výstup z jiných funkcí umělé inteligence, jako je ai_parse_documentnapříklad povolení kompozibilních pracovních postupů.

Informace o verzi uživatelského rozhraní pro iteraci ai_classifynajdete v tématu Klasifikace.

Požadavky

Licence Apache 2.0

Základní modely, které lze v tuto chvíli použít, jsou licencované v rámci licence Apache 2.0, Copyright © Apache Software Foundation. Zákazníci nesou odpovědnost za zajištění dodržování příslušných modelových licencí.

Databricks doporučuje zkontrolovat tyto licence, abyste zajistili soulad s platnými podmínkami. Pokud se modely objeví v budoucnu, které fungují lépe podle interních srovnávacích testů Databricks, může Databricks změnit model (a seznam použitelných licencí uvedených na této stránce).

The model powering this function is made available using Model Serving Foundation Model APIs. Informace o modelech dostupných v Databricks a licencích a zásadách, které řídí používání těchto modelů, najdete v příslušných podmínkách modelu .

Pokud se objeví modely, které fungují lépe podle interních srovnávacích testů Azure Databricks, databricks může změnit modely a aktualizovat dokumentaci.

Návod

Databricks doporučuje používat verzi 2.0 pro ai_classify. Verze 1.0 je starší rozhraní, které tyto funkce nepodporuje a nedoporučuje se pro nové nebo produkční úlohy.

Verze 2.0 podporuje:

  • Popisy popisků pro lepší přesnost
  • Klasifikace více popisků
  • Globální pokyny
  • Až 500 popisků ve verzi 1.0 ve srovnání s 20
  • VARIANT vstup z upstreamových funkcí umělé inteligence, jako je ai_parse_document
  • Vrátí strukturu VARIANT s informacemi o chybách.

Pokud chcete připnout verzi 2.0 explicitně, předejte options => map('version', '2.0').

Syntaxe

ai_classify(content, labels [, options])

Verze 1 (starší verze)

ai_classify(content, labels [, options])

Argumenty

  • content: VARIANT nebo STRING výraz. Přijímá buď:

    • Nezpracovaný text jako STRING
    • A VARIANT vytvořené jinou funkcí umělé inteligence (například ai_parse_document nebo ai_extract)
  • labels: Výraz STRING definující popisky klasifikace. Může to být řetězcový literál nebo jakýkoli výraz SQL, který se vyhodnotí jako STRINGsloupec tabulky Delta. Popisky můžou být:

    • Jednoduché popisky: Pole JSON s názvy popisků.
      ["urgent", "not_urgent"]
      
    • Popisky s popisy: Názvy popisků mapování objektů JSON na popisy Popisy popisků musí být 0–1 000 znaků.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Každý popisek musí mít 1 až 100 znaků. labels musí obsahovat alespoň 2 štítky a nesmí obsahovat více než 500 štítků. U taxonomií větších než 500 popisků se podívejte na klasifikaci s 500+ popisky.

  • options: Volitelné MAP<STRING, STRING> obsahující možnosti konfigurace:

    • version: Přepnutí verze na podporu migrace ("1.0" pro chování v1, "2.0" pro chování v2). Výchozí hodnota je založena na vstupních typech, ale vrátí se zpět na "1.0".
    • instructions: Globální popis úlohy a domény, aby se zlepšila kvalita klasifikace. Musí být kratší než 20 000 znaků.
    • multilabel: Pokud se použije více kategorií, nastavte na "true" vrácení více popisků. Výchozí hodnota je "false" (klasifikace s jedním popiskem).

Verze 1 (starší verze)

  • content: Výraz STRING obsahující text, který se má klasifikovat.

  • labels ARRAY<STRING>: Literál s očekávanými popisky klasifikace výstupu. Musí obsahovat alespoň 2 prvky a nesmí obsahovat více než 20 prvků. Každý popisek musí mít 1 až 50 znaků.

  • options: Volitelné MAP<STRING, STRING> obsahující možnosti konfigurace:

    • version: Přepnutí verze na podporu migrace ("1.0" pro chování v1, "2.0" pro chování v2). Výchozí hodnota je založena na vstupních typech, ale vrátí se zpět na "1.0".

Návraty

VARIANT Vrátí hodnotu obsahující:

{
  "response": ["label_name"], // Array with single label (or multiple if multilabel=true)
  "metadata": {
    "version": "2.0"
  },
  "error_message": null // null on success, or error message on failure
}

Pole response obsahuje:

  • Režim s jedním popiskem (výchozí): Pole s jedním prvkem obsahujícím nejlepší odpovídající popisek
  • Režim více popisků (multilabel: "true"): Pole s více popisky při použití více kategorií
  • Názvy popisků přesně odpovídají názvům zadaným v parametru labels .

Vrátí NULL , pokud content je NULL nebo pokud nelze klasifikovat obsah.

Verze 1 (starší verze)

Vrátí hodnotu STRING. Hodnota odpovídá jednomu z řetězců zadaných v argumentu labels .

Vrátí NULL , pokud content je NULL nebo pokud nelze klasifikovat obsah.

Příklady

Jednoduché popisky – jenom názvy popisků

> SELECT ai_classify(
    'My password is leaked.',
    '["urgent", "not_urgent"]'
  );
 {
   "response": ["urgent"],
   "metadata": {
     "version": "2.0"
   },
   "error_message": null
 }

Popisky s popisy

> SELECT ai_classify(
    'Customer cannot complete checkout due to payment processing error.',
    '{
      "billing_error": "Payment, invoice, or refund issues",
      "product_defect": "Any malfunction, bug, or breakage",
      "account_issue": "Login failures, password resets",
      "feature_request": "Customer suggestions for improvements"
    }'
  );
 {
   "response": ["billing_error"],
   "metadata": {
     "version": "2.0"
   },
   "error_message": null
 }

Popisky z tabulky Delta

Předejte popisky z tabulky Delta jejich převodem na řetězec JSON. Pokud máte například tabulku popisků se schématem news_topics(topic STRING, description STRING), můžete popisky ai_classify předat následujícím způsobem:

SELECT
  ai_classify(
    "Leicester City Wins Premier League Title at 5000-1 Odds",
    l.labels,
    map('version', '2.0')
  ) AS classification
FROM (
  SELECT to_json(map_from_entries(collect_list(struct(topic, description)))) AS labels
  FROM news_topics
) l;

Použití globálních pokynů

> SELECT ai_classify(
    'User reports app crashes on startup after update.',
    '["critical", "high", "medium", "low"]',
    MAP('instructions', 'Classify bug severity based on user impact and frequency.')
  );
 {
   "response": ["critical"],
   "metadata": {
     "version": "2.0"
   },
   "error_message": null
 }

Klasifikace více popisků

> SELECT ai_classify(
    'Customer wants refund and reports product arrived broken.',
    '{
      "billing_issue": "Payment or refund requests",
      "product_defect": "Damaged or malfunctioning items",
      "shipping_issue": "Delivery problems"
    }',
    MAP('version', '2.0','multilabel', 'true')
  );
 {
   "response": ["billing_issue", "product_defect"],
   "metadata": {
     "version": "2.0"
   },
   "error_message": null
 }

Kompozability with ai_parse_document

> WITH parsed_docs AS (
    SELECT
      path,
      ai_parse_document(
        content,
        MAP('version', '2.0')
      ) AS parsed_content
    FROM READ_FILES('/Volumes/support/tickets/', format => 'binaryFile')
  )
  SELECT
    path,
    ai_classify(
      parsed_content,
      '["billing_error", "product_defect", "account_issue", "feature_request"]',
      MAP('instructions', 'Customer support ticket classification.')
    ) AS ticket_category
  FROM parsed_docs;

Dávková klasifikace

> SELECT
    description,
    ai_classify(
      description,
      '["clothing", "shoes", "accessories", "furniture", "electronics"]'
    ) AS category
  FROM products
  LIMIT 10;

Klasifikace s 500+ popisky

Pokud chcete klasifikovat více než 500 popisků, doporučujeme vložit dokumenty a popisky, načíst horní k popisky na dokument a pak spustit ai_classify menší podmnožinu.

Viz kurz: Klasifikace dokumentů s popisky 500+ pro podrobný návod.

Verze 1 (starší verze)

> SELECT ai_classify("My password is leaked.", ARRAY("urgent", "not urgent"));
  urgent

> SELECT
    description,
    ai_classify(description, ARRAY('clothing', 'shoes', 'accessories', 'furniture')) AS category
  FROM
    products
  LIMIT 10;

Omezení

Omezení verze 2:

  • Tato funkce není k dispozici v Azure Databricks SQL Classic.

  • Tuto funkci nelze použít se zobrazeními.

  • Názvy popisků musí mít každý 1 až 100 znaků.

  • Parametr labels musí obsahovat 2 až 500 jedinečných popisků.

  • Popisy popisků musí mít každý z nich 0–1 000 znaků.

  • Maximální celková velikost kontextu je 128 000 tokenů.

Verze 1 (starší verze)

Omezení verze 1 (starší verze):

  • Tato funkce není k dispozici v Azure Databricks SQL Classic.

  • Tuto funkci nelze použít se zobrazeními.

  • Názvy popisků musí mít každý 1–50 znaků.

  • Matice labels musí obsahovat 2 až 20 popisků.

  • Vstup content musí být menší než 128 000 tokenů (asi 300 000 znaků).