Функция ai_classify

Область применения:отметка 'Да' Databricks SQL отметка 'Да' Databricks Runtime

Функция ai_classify() классифицирует текстовое содержимое в соответствии с предоставленными пользовательскими метками. Вы можете использовать простые имена меток для базовой классификации или добавить описания меток и инструкции для повышения точности для таких вариантов использования, как маршрутизация поддержки клиентов, классификация документов и анализ содержимого.

Функция принимает текст или VARIANT выходные данные из других функций ИИ, таких как ai_parse_documentвключение составных рабочих процессов.

Сведения о версии пользовательского интерфейса для итерации ai_classifyсм. в разделе "Классификация".

Безопасность данных

Данные документа обрабатываются в периметре безопасности Databricks. Databricks не хранит параметры, передаваемые в вызовы функций AI, но сохраняет детали запуска метаданных, такие как используемая версия Databricks Runtime.

Требования

Лицензия Apache 2.0

Базовые модели, которые могут использоваться в настоящее время, лицензируются в соответствии с лицензией Apache 2.0, авторским правом © Apache Software Foundation. Клиенты отвечают за обеспечение соответствия применимым лицензиям модели.

Databricks рекомендует просматривать эти лицензии, чтобы обеспечить соответствие любым применимым условиям. Если модели появляются в будущем, которые лучше работают в соответствии с внутренними тестами Databricks, Databricks может изменить модель (и список применимых лицензий, предоставленных на этой странице).

Модель, работающая с этой функцией, становится доступной с помощью API модели обслуживания модели. Сведения о моделях, доступных в Databricks, и лицензиях и политиках, которые управляют использованием этих моделей, см. в применимых условиях модели.

Если модели появляются, которые лучше работают в соответствии с внутренними тестами Azure Databricks, Databricks может изменить модели и обновить документацию.

Tip

Databricks рекомендует использовать версию 2.1 для ai_classify. Версия 1.0 — это устаревший интерфейс, который не поддерживает эти возможности и не рекомендуется для новых рабочих нагрузок или рабочих нагрузок.

Версия 2.0 поддерживает:

  • Описания меток для повышения точности
  • Классификация нескольких меток
  • Глобальные инструкции
  • До 500 меток по сравнению с 20 в версии 1.0
  • VARIANT входные данные из вышестоящих функций ИИ, таких как ai_parse_document
  • Возвращает структурированную VARIANT информацию об ошибке

Версия 2.1 также поддерживает:

  • Оценки достоверности для каждой возвращаемой метки с включенным enableConfidenceScores
  • Рационализаторы, объясняющие каждую возвращаемую метку, включенную с поддержкой enableRationales

В версии 2.1 каждая классификация response является объектом для каждой метки с ключом value вместо обычной строки меток. Это изменение формы выходных данных применяется ко всем вызовам версии 2.1, даже если новые параметры отключены. Переход с версии 2.0 на 2.1 не совместим с выходными данными. Обновите запросы и подчиненный код, чтобы считывать метку из value ключа, а не читать ее напрямую.

Чтобы закрепить версию явно, передайте options => map('version', '2.1').

Синтаксис

ai_classify(content, labels [, options])

Версия 2

ai_classify(content, labels [, options])

Версия 1 (устаревшая версия)

ai_classify(content, labels [, options])

Аргументы

  • content: ВыражениеVARIANT или STRING. Принимает любую из них:

    • Необработанный текст в виде STRING
    • Созданная VARIANT другой функцией ИИ (например ai_parse_document , или ai_extract)
  • labels STRING: выражение, определяющее метки классификации. Это может быть строковый литерал или любое выражение SQL, которое оценивается как STRINGстолбец таблицы Delta. Метки могут быть следующими:

    • Простые метки: массив JSON имен меток.
      ["urgent", "not_urgent"]
      
    • Метки с описаниями: имена меток сопоставления объектов JSON с описаниями. Описания меток должны быть 0–1000 символов.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Каждая метка должна содержать 1–100 символов. labels должен содержать не менее 2 меток и не более 500 меток. Сведения о таксономиях размером более 500 меток см. в классификации с метками 500+.

  • options: необязательный, MAP<STRING, STRING> содержащий параметры конфигурации:

    • version: переключение версий для поддержки миграции ("1.0", "2.0"или "2.1"). Значение по умолчанию основано на типах входных данных, но возвращается обратно "1.0".
    • instructions: глобальное описание задачи и домена для улучшения качества классификации. Должно быть меньше 20 000 символов.
    • multilabel: устанавливается для "true" возврата нескольких меток при применении нескольких категорий. По умолчанию используется "false" классификация одноклеек.
    • enableConfidenceScores: установите для "true" включения confidence_score (0–1) для каждой возвращаемой метки. Требуется версия "2.1". По умолчанию — "false".
    • enableRationales: задайте для "true" включения короткого объяснения каждой возвращаемой метки, заземленной в входном тексте. Требуется версия "2.1". По умолчанию — "false".

Версия 2

  • content: ВыражениеVARIANT или STRING. Принимает любую из них:

    • Необработанный текст в виде STRING
    • Созданная VARIANT другой функцией ИИ (например ai_parse_document , или ai_extract)
  • labels STRING: выражение, определяющее метки классификации. Это может быть строковый литерал или любое выражение SQL, которое оценивается как STRINGстолбец таблицы Delta. Метки могут быть следующими:

    • Простые метки: массив JSON имен меток.
      ["urgent", "not_urgent"]
      
    • Метки с описаниями: имена меток сопоставления объектов JSON с описаниями. Описания меток должны быть 0–1000 символов.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Каждая метка должна содержать 1–100 символов. labels должен содержать не менее 2 меток и не более 500 меток. Сведения о таксономиях размером более 500 меток см. в классификации с метками 500+.

  • options: необязательный, MAP<STRING, STRING> содержащий параметры конфигурации:

    • version: параметр версии для поддержки миграции ("1.0" для поведения "2.0" версии 1 для поведения версии 2). Значение по умолчанию основано на типах входных данных, но возвращается обратно "1.0".
    • instructions: глобальное описание задачи и домена для улучшения качества классификации. Должно быть меньше 20 000 символов.
    • multilabel: устанавливается для "true" возврата нескольких меток при применении нескольких категорий. По умолчанию используется "false" классификация одноклеек.

Версия 1 (устаревшая версия)

  • content STRING: выражение, содержащее текст для классификации.

  • labels ARRAY<STRING>: литерал с ожидаемыми метками классификации выходных данных. Должен содержать не менее 2 элементов и не более 20 элементов. Каждая метка должна быть 1–50 символами.

  • options: необязательный, MAP<STRING, STRING> содержащий параметры конфигурации:

    • version: параметр версии для поддержки миграции ("1.0" для поведения "2.0" версии 1 для поведения версии 2). Значение по умолчанию основано на типах входных данных, но возвращается обратно "1.0".

Возвраты

VARIANT Возвращает содержащийся:

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

Каждый элемент является response объектом для каждой метки с ключом value , а не строкой простой метки. При enableConfidenceScores этом "true"каждый объект также включает в confidence_score себя (0–1). Когда enableRationales это "true", каждый объект также включает в rationaleсебя . При включении обоих параметров порядок ключей в каждом объекте имеет valueзначение , confidence_scoreа затем rationale.

Поле содержит следующее response :

  • Режим одноклейки (по умолчанию): массив с одним элементом, содержащим лучшую метку сопоставления
  • Режим нескольких меток (multilabel: "true"): массив с несколькими метками при применении нескольких категорий
  • Имена меток точно соответствуют указанным в параметре labels

Возвращает значение NULLcontent, если NULL содержимое не может быть классифицировано.

Версия 2

VARIANT Возвращает содержащийся:

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

Поле содержит следующее response :

  • Режим одноклейки (по умолчанию): массив с одним элементом, содержащим лучшую метку сопоставления
  • Режим нескольких меток (multilabel: "true"): массив с несколькими метками при применении нескольких категорий
  • Имена меток точно соответствуют указанным в параметре labels

Возвращает значение NULLcontent, если NULL содержимое не может быть классифицировано.

Версия 1 (устаревшая версия)

STRINGВозвращает значение . Значение соответствует одной из строк, предоставленных в аргументе labels .

Возвращает значение NULLcontent, если NULL содержимое не может быть классифицировано.

Примеры

Простые метки — только имена меток

В версии 2.1 каждая классификация является объектом для каждой метки с ключом 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
 }

С оценкой достоверности

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

С рационализаторами

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

С оценкой достоверности и обоснованием (многоэтапные)

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

Возможность создания с помощью 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;

Классификация пакетной службы

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

Классификация с помощью меток 500+

Чтобы классифицировать более 500 меток, рекомендуется внедрить документы и метки, получить верхние метки k для каждого документа, а затем запустить ai_classify в меньшем подмножестве.

См . руководство. Классификация документов с 500+ метками для пошагового руководства.

Версия 2

Простые метки — только имена меток

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

Метки с описаниями

> 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, преобразовав их в строку JSON. Например, учитывая таблицу меток со схемой news_topics(topic STRING, description STRING), можно передать метки 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;

Использование глобальных инструкций

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

Классификация нескольких меток

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

Версия 1 (устаревшая версия)

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

Ограничения

Ограничения версии 2.1:

  • Эта функция недоступна в Azure Databricks классической версии SQL.

  • Эту функцию нельзя использовать с представлениями.

  • Имена меток должны иметь 1–100 символов.

  • Параметр labels должен содержать от 2 до 500 уникальных меток.

  • Описания меток должны быть 0–1000 символов.

  • Максимальный общий размер контекста составляет 128 000 маркеров.

Версия 2

Ограничения версии 2.

  • Эта функция недоступна в Azure Databricks классической версии SQL.

  • Эту функцию нельзя использовать с представлениями.

  • Имена меток должны иметь 1–100 символов.

  • Параметр labels должен содержать от 2 до 500 уникальных меток.

  • Описания меток должны быть 0–1000 символов.

  • Максимальный общий размер контекста составляет 128 000 маркеров.

Версия 1 (устаревшая версия)

Ограничения версии 1 (устаревшая версия):

  • Эта функция недоступна в Azure Databricks классической версии SQL.

  • Эту функцию нельзя использовать с представлениями.

  • Имена меток должны иметь 1–50 символов.

  • Массив labels должен содержать от 2 до 20 меток.

  • Входные content данные должны быть меньше 128 000 маркеров (около 300 000 символов).