ai_classify işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

işlevi, ai_classify() metin içeriğini sağladığınız özel etiketlere göre sınıflandırır. Temel sınıflandırma için basit etiket adları kullanabilir veya müşteri desteği yönlendirmesi, belge kategorilere ayırma ve içerik analizi gibi kullanım örneklerinin doğruluğunu geliştirmek için etiket açıklamaları ve yönergeleri ekleyebilirsiniz.

İşlev, gibi VARIANTdiğer yapay zeka işlevlerinden metin veya ai_parse_document çıktı kabul ederek birleştirilebilir iş akışlarını etkinleştirir.

üzerinde ai_classifyyineleyici bir kullanıcı arabirimi sürümü için bkz . Sınıflandırma.

Veri güvenliği

Belge verileriniz Databricks güvenlik çevresi içinde işlenir. Databricks, yapay zeka fonksiyon çağrılarına iletilen parametreleri saklamaz, ancak kullanılan Databricks Çalışma Zamanı versiyonu gibi metaveri çalışma detaylarını korur.

Gereksinimler

Apache 2.0 lisansı

Şu anda kullanılabilecek temel modeller Apache 2.0 Lisansı, Telif Hakkı © Apache Software Foundation kapsamında lisanslandırılır. Müşteriler, geçerli model lisanslarıyla uyumluluğu sağlamakla sorumludur.

Databricks, geçerli koşullarla uyumluluğu sağlamak için bu lisansların gözden geçirilmesini önerir. Gelecekte Databricks'in iç karşılaştırmalarına göre daha iyi performans gösteren modeller ortaya çıkarsa Databricks modeli (ve bu sayfada sağlanan geçerli lisansların listesini) değiştirebilir.

Bu işlevi güçlendiren model, Model Sunma Temeli Model API'leri kullanılarak kullanılabilir hale getirilir. Databricks'te hangi modellerin kullanılabildiği ve bu modellerin kullanımını yöneten lisanslar ve ilkeler hakkında bilgi için bkz. Geçerli model koşulları .

Azure Databricks iç karşılaştırmalarına göre daha iyi performans gösteren modeller ortaya çıkarsa Databricks modelleri değiştirebilir ve belgeleri güncelleştirebilir.

Tip

Databricks, için ai_classify kullanılmasını önerir. Sürüm 1.0, bu özellikleri desteklemeyen eski bir arabirimdir ve yeni veya üretim iş yükleri için önerilmez.

Sürüm 2.0 şu desteği destekler:

  • İyileştirilmiş doğruluk için etiket açıklamaları
  • Çok etiketli sınıflandırma
  • Genel yönergeler
  • Sürüm 1.0'da 20 etiketle karşılaştırıldığında en fazla 500 etiket
  • VARIANT gibi yukarı akış yapay zeka işlevlerinden giriş ai_parse_document
  • Hata bilgileriyle yapılandırılmış VARIANT bir değer döndürür

Sürüm 2.1 de şunları destekler:

  • Döndürülen her etiket için güvenilirlik puanları enableConfidenceScores
  • Ile etkinleştirilen, döndürülen her etiketi açıklayan rasyonaliteler enableRationales

Sürüm 2.1'de response içindeki her sınıflandırma, düz etiket dizesi yerine anahtar içeren value etiket başına bir nesnedir. Bu çıkış şekli değişikliği, yeni seçenekler devre dışı bırakıldığında bile tüm sürüm 2.1 çağrıları için geçerlidir. Sürüm 2.0'dan 2.1'e geçiş çıkış uyumlu değildir. Doğrudan okumak yerine anahtardan value etiketi okumak için sorgularınızı ve aşağı akış kodunuzu güncelleştirin.

Bir sürümü açıkça sabitlemek için geçirin options => map('version', '2.1').

Söz dizimi

ai_classify(content, labels [, options])

Sürüm 2

ai_classify(content, labels [, options])

Sürüm 1 (Eski)

ai_classify(content, labels [, options])

Argümanlar

  • content: VARIANT veya STRING ifadesi. Kabul eder:

  • labels STRING: Sınıflandırma etiketlerini tanımlayan bir ifade. Bu bir dize değişmez değeri veya delta tablo sütunu da dahil olmak üzere bir olarak değerlendirilen herhangi bir STRINGSQL ifadesi olabilir. Etiketler şu şekilde olabilir:

    • Basit etiketler: Etiket adlarının JSON dizisi.
      ["urgent", "not_urgent"]
      
    • Açıklamalı etiketler: Etiket adlarını açıklamalarla eşleştiren bir JSON nesnesi. Etiket açıklamaları 0-1000 karakter uzunluğunda olmalıdır.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Her etiket 1-100 karakter uzunluğunda olmalıdır. labels en az 2 etiket içermeli ve 500'den fazla etiket içermemelidir. 500'den büyük taksonomiler için bkz. 500'den fazla etiketli sınıflandırma.

  • options: Yapılandırma seçeneklerini içeren isteğe bağlı MAP<STRING, STRING> bir seçenek:

    • version: Geçişi ("1.0", "2.0"veya "2.1") desteklemek için sürüm anahtarı. Varsayılan, giriş türlerini temel alır, ancak öğesine geri döner "1.0".
    • instructions: Sınıflandırma kalitesini artırmak için görevin ve etki alanının genel açıklaması. 20.000 karakterden az olmalıdır.
    • multilabel: Birden çok kategori uygulandığında birden çok etiket döndürmek için olarak ayarlayın "true" . Varsayılan değerdir "false" (tek etiketli sınıflandırma).
    • enableConfidenceScores: Döndürülen her etiket için bir "true" (0-1) içerecek şekilde confidence_score ayarlayın. Sürümü "2.1"gerektirir. Varsayılan "false" değeridir.
    • enableRationales: Giriş metninde "true" topraklanmış, döndürülen her etiketi açıklayan kısa bir rasyonalite içerecek şekilde ayarlayın. Sürümü "2.1"gerektirir. Varsayılan "false" değeridir.

Sürüm 2

  • content: VARIANT veya STRING ifadesi. Kabul eder:

  • labels STRING: Sınıflandırma etiketlerini tanımlayan bir ifade. Bu bir dize değişmez değeri veya delta tablo sütunu da dahil olmak üzere bir olarak değerlendirilen herhangi bir STRINGSQL ifadesi olabilir. Etiketler şu şekilde olabilir:

    • Basit etiketler: Etiket adlarının JSON dizisi.
      ["urgent", "not_urgent"]
      
    • Açıklamalı etiketler: Etiket adlarını açıklamalarla eşleştiren bir JSON nesnesi. Etiket açıklamaları 0-1000 karakter uzunluğunda olmalıdır.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Her etiket 1-100 karakter uzunluğunda olmalıdır. labels en az 2 etiket içermeli ve 500'den fazla etiket içermemelidir. 500'den büyük taksonomiler için bkz. 500'den fazla etiketli sınıflandırma.

  • options: Yapılandırma seçeneklerini içeren isteğe bağlı MAP<STRING, STRING> bir seçenek:

    • version: Geçişi desteklemek için sürüm anahtarı ("1.0" v1 davranışı için, "2.0" v2 davranışı için). Varsayılan, giriş türlerini temel alır, ancak öğesine geri döner "1.0".
    • instructions: Sınıflandırma kalitesini artırmak için görevin ve etki alanının genel açıklaması. 20.000 karakterden az olmalıdır.
    • multilabel: Birden çok kategori uygulandığında birden çok etiket döndürmek için olarak ayarlayın "true" . Varsayılan değerdir "false" (tek etiketli sınıflandırma).

Sürüm 1 (Eski)

  • content STRING: Sınıflandırılacak metni içeren ifade.

  • labels ARRAY<STRING>: Beklenen çıkış sınıflandırma etiketlerine sahip değişmez değer. En az 2 öğe ve en fazla 20 öğe içermelidir. Her etiket 1-50 karakter uzunluğunda olmalıdır.

  • options: Yapılandırma seçeneklerini içeren isteğe bağlı MAP<STRING, STRING> bir seçenek:

    • version: Geçişi desteklemek için sürüm anahtarı ("1.0" v1 davranışı için, "2.0" v2 davranışı için). Varsayılan, giriş türlerini temel alır, ancak öğesine geri döner "1.0".

İadeler

Şunu içeren bir VARIANT döndürür:

{
  "response": [{ "value": "label_name", "confidence_score": 0.97, "rationale": "Short justification for the label." }],
  "metadata": {
    "version": "2.1"
  },
  "error_message": null // null on success, or error message on failure
}

içindeki response her öğe, düz etiket dizesi yerine anahtara sahip value etiket başına bir nesnedir. olduğunda enableConfidenceScores"true", her nesne bir confidence_score de (0-1) içerir. olduğunda enableRationales"true", her nesne bir rationalede içerir. Her iki seçenek de etkinleştirildiğinde, her nesnedeki valueanahtar sırası , confidence_scoreve olur rationale.

Alanı response aşağıdakileri içerir:

  • Tek etiket modu (varsayılan): En iyi eşleşen etiketi içeren bir öğeye sahip dizi
  • Çoklu etiket modu (multilabel: "true"): Birden çok kategori uygulandığında birden çok etiketi olan bir dizi
  • Etiket adları, parametresinde labels sağlanan adlarla tam olarak eşleşer

ise NULLcontent veya içerik sınıflandırılamıyorsa döndürürNULL.

Sürüm 2

Şunu içeren bir VARIANT döndürür:

{
  "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
}

Alanı response aşağıdakileri içerir:

  • Tek etiket modu (varsayılan): En iyi eşleşen etiketi içeren bir öğeye sahip dizi
  • Çoklu etiket modu (multilabel: "true"): Birden çok kategori uygulandığında birden çok etiketi olan bir dizi
  • Etiket adları, parametresinde labels sağlanan adlarla tam olarak eşleşer

ise NULLcontent veya içerik sınıflandırılamıyorsa döndürürNULL.

Sürüm 1 (Eski)

bir STRINGdöndürür. Değer, labels argümanında sağlanan dizelerden biriyle eşleşir.

ise NULLcontent veya içerik sınıflandırılamıyorsa döndürürNULL.

Örnekler

Basit etiketler - yalnızca etiket adları

Sürüm 2.1'de her sınıflandırma, yeni seçenekler devre dışı bırakıldığında bile düz dize yerine anahtar içeren etiket başına bir nesnedir value .

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

Güvenilirlik puanlarıyla

> SELECT ai_classify(
    'My password is leaked.',
    '["urgent", "not_urgent"]',
    MAP('version', '2.1', 'enableConfidenceScores', 'true')
  );
 {
   "response": [{"value": "urgent", "confidence_score": 0.97}],
   "metadata": {
     "version": "2.1"
   },
   "error_message": null
 }

Rasyonellerle

> SELECT ai_classify(
    'My password is leaked.',
    '["urgent", "not_urgent"]',
    MAP('version', '2.1', 'enableRationales', 'true')
  );
 {
   "response": [{"value": "urgent", "rationale": "A leaked password is a security incident requiring immediate action."}],
   "metadata": {
     "version": "2.1"
   },
   "error_message": null
 }

Güvenilirlik puanları ve rasyonaliteleri ile (çok etiketli)

> SELECT ai_classify(
    'Customer wants refund and reports product arrived broken.',
    '{
      "billing_issue": "Payment or refund requests",
      "product_defect": "Damaged or malfunctioning items"
    }',
    MAP('version', '2.1', 'multilabel', 'true', 'enableConfidenceScores', 'true', 'enableRationales', 'true')
  );
 {
   "response": [
     {"value": "billing_issue", "confidence_score": 0.91, "rationale": "Customer explicitly requests a refund."},
     {"value": "product_defect", "confidence_score": 0.88, "rationale": "Reports the product arrived broken."}
   ],
   "metadata": {
     "version": "2.1"
   },
   "error_message": null
 }

ile birlikte kullanılabilirlik 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('version', '2.1', 'instructions', 'Customer support ticket classification.')
    ) AS ticket_category
  FROM parsed_docs;

Toplu sınıflandırma

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

500'den fazla etiketle sınıflandırma

500'den fazla etiketle sınıflandırmak için, belgelerinizi ve etiketlerinizi eklemenizi, belge başına üst k etiketlerini almanızı ve daha küçük alt kümede çalıştırmanızı ai_classify öneririz.

Adım adım izlenecek yol için bkz . Öğretici: Belgeleri 500'den fazla etiketle sınıflandırma .

Sürüm 2

Basit etiketler - yalnızca etiket adları

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

Açıklamalı etiketler

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

Delta Tablosundan Etiketler

Delta tablosundaki etiketleri JSON dizesine dönüştürerek geçirin. Örneğin, şemasına news_topics(topic STRING, description STRING)sahip bir etiket tablosu verdiyseniz etiketlerinizi aşağıdaki gibi geçirebilirsiniz ai_classify :

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;

Genel yönergeleri kullanma

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

Çok etiketli sınıflandırma

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

Sürüm 1 (Eski)

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

Sınırlamalar

Sürüm 2.1 sınırlamaları:

  • Bu işlev Azure Databricks SQL Classic'te kullanılamaz.

  • Bu işlev Görünümler ile kullanılamaz.

  • Etiket adları her birinde 1-100 karakter olmalıdır.

  • labels parametresi 2 ile 500 arasında benzersiz etiket içermelidir.

  • Etiket açıklamalarının her birinde 0-1.000 karakter olmalıdır.

  • Toplam bağlam boyutu üst sınırı 128.000 belirteçtir.

Sürüm 2

Sürüm 2 sınırlamaları:

  • Bu işlev Azure Databricks SQL Classic'te kullanılamaz.

  • Bu işlev Görünümler ile kullanılamaz.

  • Etiket adları her birinde 1-100 karakter olmalıdır.

  • labels parametresi 2 ile 500 arasında benzersiz etiket içermelidir.

  • Etiket açıklamalarının her birinde 0-1.000 karakter olmalıdır.

  • Toplam bağlam boyutu üst sınırı 128.000 belirteçtir.

Sürüm 1 (Eski)

Sürüm 1 (Eski) sınırlamaları:

  • Bu işlev Azure Databricks SQL Classic'te kullanılamaz.

  • Bu işlev Görünümler ile kullanılamaz.

  • Etiket adları her birinde 1-50 karakter olmalıdır.

  • Dizi labels 2 ile 20 arasında etiket içermelidir.

  • Giriş content 128.000'den az belirteç (yaklaşık 300.000 karakter) olmalıdır.