ai_decide функция

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

Important

Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".

Функция ai_decide() оценивает один или несколько вопросов по тексту или структурированным данным. Для каждого вопроса он возвращает либо вероятность, либо выбор из указанных критериев, либо балл по упорядоченной шкале. Используйте его для маршрутизации заявок в поддержку, оценки необходимости мероприятия или распределения приоритетов работы с помощью определённой вами рубрики.

Все вопросы в звонке используют один и тот же ввод, называемый state. Вы можете комбинировать разные типы вопросов в одном звонке и использовать ответы в последующих SQL-запросах.

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

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

Требования

Лицензия Apache 2.0

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

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

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

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

Syntax

ai_decide(state, questions [, options])

Arguments

  • state: A VARIANT или STRING выражение, содержащее содержание, контекст и примеры, необходимые для ответа на вопросы. Значение может варьироваться в зависимости от строки. Принимает любую из них:

    • A STRING содержит простой текст или объект или массив с JSON-кодированием. Объекты и массивы JSON интерпретируются как структурированные данные. Другие строки рассматриваются как текст.
    • Созданная VARIANT другой функцией ИИ (например ai_parse_document , или ai_extract)
  • questions: Константное STRING выражение, содержащее непустой JSON-объект. Каждый ключ — это непустой идентификатор вопроса, а каждое значение — определение вопроса. Одинаковые определения применимы к каждой строке. См. определения вопросов.

  • options: Необязательное выражение постоянной MAP<STRING, STRING> . Поддерживаемый вариант — version, со значением '1.0'. Версия 1.0 — по умолчанию. Для явного указания используйте map('version', '1.0').

Определения вопросов

Каждое определение вопроса требует type и instructions, плюс criteria , когда требуется тип вопроса. Обязательные поля не могут быть null. Другие области не поддерживаются.

  • type: один из noul, choiceили score.
  • instructions: Инструкции для оценки состояния, выраженные в виде строки, JSON-объекта или массива JSON.
  • criteria: Описания, которые определяют, как отвечать. Требуемая форма зависит от type.

Вопросы Нуля

Используйте noul для оценки вероятности того, что вопрос истинен. В результате получается число от 0 до 1.

Необязательный criteria объект может содержать true ключи и false для описания этих результатов. Каждое описание может быть строкой, JSON-объектом или массивом JSON. Опускайте, criteria когда вам не нужны эти описания. Если предоставлено, criteria то должно быть объектом и не может быть null.

{
  "needs_escalation": {
    "type": "noul",
    "instructions": "Does this ticket need immediate escalation?",
    "criteria": {
      "true": "An active service outage blocks the customer from working.",
      "false": "The customer can continue working or has a workaround."
    }
  }
}

Вопросы выбора

Используйте choice для выбора одной метки из набора именованных критериев.

Требуемый criteria объект отображает от 1 до 255 непустых меток в описания. Каждое описание может быть строкой, объектом JSON, массивом JSON или null. Используйте null тогда, когда только этикетка описывает выбор.

{
  "team": {
    "type": "choice",
    "instructions": "Which team should handle this ticket?",
    "criteria": {
      "shipping": "Delivery or shipment issues",
      "billing": "Payment or invoice issues",
      "technical_support": "Product technical problems"
    }
  }
}

Вопросы по баллам

Используйте score для оценки состояния по упорядоченной шкале.

Требуемый criteria массив содержит от 2 до 10 описаний, упорядоченных от самого низкого к наибольшему. Каждое описание может быть строкой, JSON-объектом или массивом JSON. Первый критерий имеет индекс 0, следующий — индекс 1, и так далее.

В результате получается взвешенное по вероятности среднее значения этих индексов. Он может быть дробным и варьируется от 0 числа критериев минус один. Например, вероятности 0.1, 0.3, и 0.6 по трём критериям дают оценку 1.5.

{
  "urgency": {
    "type": "score",
    "instructions": "How urgent is this ticket?",
    "criteria": [
      "Routine request with no time pressure",
      "Time-sensitive issue with a workaround",
      "Critical issue that blocks the customer"
    ]
  }
}

Returns

Возвращает a VARIANT с полями response, metadata, и error_message. Поле response содержит answers объект с одной записью на каждый вопрос. Идентификаторы вопросов точно совпадают с теми, что questions указаны в параметре. Каждый ответ содержит type поле, соответствующее типу вопроса: noul, choice, или score. Следующие примеры показывают response поле для каждого типа вопроса:

  • Вопросы Нуля: A probability от 0 до 1 оценивает вероятность истинности вопроса.

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • Вопросы выбора: A, choice содержащий метку с наибольшей вероятностью, и probabilities объект, сопоставляющий каждую метку с её вероятностью. confidence это число от 0 до 1, указывающее на то, насколько хорошо штат поддерживает оценку. Суммируются probabilities значения в 1. Имена ярлыков точно совпадают с теми, что приведены в criteria.

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • Вопросы по оценке: A, score содержащие взвешенное по вероятности среднее индексов критериев, a legend отображает индексы строк (например "0", ) с исходными описаниями критериев и probabilities объект, отображающий эти индексы с вероятностями. confidence это число от 0 до 1, указывающее на то, насколько хорошо штат поддерживает оценку. Суммируются probabilities значения в 1.

    {
      "answers": {
        "urgency": {
          "type": "score",
          "score": 1.5,
          "legend": {
            "0": "Routine request with no time pressure",
            "1": "Time-sensitive issue with a workaround",
            "2": "Critical issue that blocks the customer"
          },
          "probabilities": {
            "0": 0.1,
            "1": 0.3,
            "2": 0.6
          },
          "confidence": 0.8
        }
      }
    }
    

При успехе metadata.version определяется используемая версия функции и error_message равна null.

При неудаче — response есть null и error_message описывает неудачу. Неправильные типы аргументов или непостоянные определения вопросов также могут вызывать ошибки запросов.

Examples

Следующий пример показывает, как оценивать несколько вопросов за один звонок. Генерированные ответы могут различаться между звонками.

Оценивайте несколько типов вопросов

В этом примере оценивается список товаров по категории, использованию переработанных материалов и пригодности для походов в дождливую погоду:

SELECT ai_decide(
  '{"name": "TrailShell jacket", "description": "Lightweight waterproof hiking jacket made from recycled polyester. Packs into its own pocket."}',
  '{
    "category": {
      "type": "choice",
      "instructions": "Which product category best fits this item?",
      "criteria": {
        "outerwear": "Jackets, coats, and other protective outer layers",
        "footwear": "Shoes, boots, and sandals",
        "accessories": "Bags, hats, and other accessories"
      }
    },
    "recycled_materials": {
      "type": "noul",
      "instructions": "Does the listing state that the product uses recycled materials?"
    },
    "hiking_suitability": {
      "type": "score",
      "instructions": "How suitable is this product for hiking in rainy weather?",
      "criteria": [
        "Not suitable for outdoor use in rain",
        "Offers some protection from rain",
        "Designed for hiking with waterproof protection"
      ]
    }
  }',
  map('version', '1.0')
) AS decision;

Пример ответа:

{
  "response": {
    "answers": {
      "category": {
        "type": "choice",
        "choice": "outerwear",
        "probabilities": { "outerwear": 0.95, "footwear": 0.01, "accessories": 0.04 },
        "confidence": 0.95
      },
      "recycled_materials": { "type": "noul", "probability": 0.98 },
      "hiking_suitability": {
        "type": "score",
        "score": 1.8,
        "legend": {
          "0": "Not suitable for outdoor use in rain",
          "1": "Offers some protection from rain",
          "2": "Designed for hiking with waterproof protection"
        },
        "probabilities": { "0": 0.05, "1": 0.1, "2": 0.85 },
        "confidence": 0.9
      }
    }
  },
  "metadata": { "version": "1.0" },
  "error_message": null
}