ai_decide Função

Aplica-se a:seleção marcada como sim Databricks SQL seleção marcada como sim Databricks Runtime

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

A ai_decide() função avalia uma ou mais perguntas com base em texto ou dados estruturados. Para cada pergunta, retorna uma probabilidade, uma escolha entre critérios nomeados ou uma pontuação em uma escala ordenada. Use-o para encaminhar chamados de suporte, avaliar se um evento precisa de atenção ou priorizar o trabalho usando uma rubrica que você definir.

Todas as perguntas em uma chamada usam a mesma entrada, chamada state. Você pode combinar diferentes tipos de perguntas em uma única chamada e usar as respostas retornadas em consultas SQL posteriores.

Segurança de dados

Os dados do documento são processados dentro do perímetro de segurança do Databricks. O Databricks não armazena os parâmetros que são passados para as chamadas de função de IA, mas mantém detalhes de execução de metadados, como a versão de Runtime do Databricks utilizada.

Requisitos

Licença do Apache 2.0

Os modelos subjacentes que podem ser usados neste momento são licenciados sob a Licença do Apache 2.0, direitos autorais © do Apache Software Foundation. Os clientes são responsáveis por garantir a conformidade com as licenças de modelo aplicáveis.

O Databricks recomenda revisar essas licenças para garantir a conformidade com quaisquer termos aplicáveis. Se surgirem modelos no futuro com melhor desempenho de acordo com os parâmetros de comparação internos do Databricks, o Databricks poderá alterar o modelo (e a lista de licenças aplicáveis fornecidas nesta página).

O modelo que alimenta essa função é disponibilizado usando AS APIs de modelo do Model Serving Foundation. Consulte os termos de modelo aplicáveis para obter informações sobre quais modelos estão disponíveis no Databricks e as licenças e políticas que regem o uso desses modelos.

Se surgirem modelos com melhor desempenho de acordo com os parâmetros de comparação internos da Azure Databricks, o Databricks poderá alterar os modelos e atualizar a documentação.

Sintaxe

ai_decide(state, questions [, options])

Arguments

  • state: A VARIANT ou STRING expressão contendo o conteúdo, contexto e exemplos necessários para responder às perguntas. O valor pode variar de linha para linha. Aceita um:

    • Um contendo STRING texto simples ou um objeto ou array codificado em JSON. Objetos e arrays JSON são interpretados como dados estruturados. Outras cadeias são tratadas como texto.
    • Uma VARIANT produzida por outra função de IA (como ai_parse_document ou ai_extract)
  • questions: Uma expressão constante STRING contendo um objeto JSON não vazio. Cada chave é um ID de pergunta não vazio, e cada valor é uma definição de pergunta. As mesmas definições se aplicam a todas as linhas. Veja definições de perguntas.

  • options: Uma expressão constante MAP<STRING, STRING> opcional. A opção suportada é version, com o valor '1.0'. A versão 1.0 é a padrão. Para especificar explicitamente, use map('version', '1.0').

Definições de perguntas

Cada definição de pergunta requer type e instructions, mais criteria quando exigido pelo tipo de pergunta. Campos obrigatórios não podem ser null. Outros campos não são suportados.

  • type: um de noul, choiceou score.
  • instructions: Instruções para avaliar o estado, expressas como uma string, objeto JSON ou array JSON.
  • criteria: As descrições que definem como responder. A forma necessária depende de type.

Noul pergunta

Use noul para estimar a probabilidade de que uma pergunta seja verdadeira. O resultado é um número de 0 a 1.

O objeto opcional criteria pode conter true chaves e false para descrever esses resultados. Cada descrição pode ser uma string, objeto JSON ou array JSON. Omita criteria quando não precisar dessas descrições. Se fornecido, criteria deve ser um objeto e não pode ser 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."
    }
  }
}

Perguntas de escolha

Use choice para selecionar um rótulo entre um conjunto de critérios nomeados.

O objeto necessário criteria mapeia de 1 a 255 rótulos não vazios para descrições. Cada descrição pode ser uma string, objeto JSON, array JSON ou null. Use null quando o rótulo sozinho descreve a escolha.

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

Perguntas sobre pontuação

Use score para avaliar o estado em relação a uma escala ordenada.

O array necessário criteria contém de 2 a 10 descrições, ordenadas do menor ao mais alto. Cada descrição pode ser uma string, objeto JSON ou array JSON. O primeiro critério tem índice 0, o próximo tem índice 1, e assim por diante.

O resultado é a média ponderada pela probabilidade desses índices. Pode ser fracional e varia de 0 até o número de critérios menos um. Por exemplo, probabilidades de 0.1, , e 0.6 em três critérios produzem uma pontuação de 1.50.3.

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

Retorna a VARIANT com os campos response, metadata, e error_message. O response campo contém um answers objeto com uma entrada por pergunta. Os IDs das perguntas correspondem exatamente aos fornecidos no questions parâmetro. Cada resposta inclui um type campo que corresponde ao tipo de pergunta: noul, choice, ou score. Os exemplos a seguir mostram o response campo para cada tipo de questão:

  • Perguntas de Noul: A probability de 0 a 1 estimando a probabilidade de a pergunta ser verdadeira.

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • Perguntas de escolha: A contendo choice o rótulo com maior probabilidade e um probabilities objeto mapeando cada rótulo à sua probabilidade. confidence é um número de 0 a 1 que indica o quanto o estado apoia a avaliação. Os probabilities valores somam 1. Os nomes das etiquetas correspondem exatamente aos fornecidos em criteria.

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • Perguntas de pontuação: A score contendo a média ponderada por probabilidade dos índices critério, uma legend cadeia de mapeamento dos índices (como "0") para as descrições originais do critério, e um probabilities objeto mapeando esses índices para probabilidades. confidence é um número de 0 a 1 que indica o quanto o estado apoia a avaliação. Os probabilities valores somam 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
        }
      }
    }
    

Em caso de sucesso, metadata.version identifica a versão da função usada e error_message é null.

Sobre a falha, response é null e error_message descreve a falha. Tipos de argumentos inválidos ou definições de perguntas não constantes também podem causar erros de consulta.

Exemplos

O exemplo a seguir mostra como avaliar várias perguntas em uma única chamada. As respostas geradas podem variar entre as ligações.

Avalie vários tipos de perguntas

Este exemplo avalia uma lista de produto para sua categoria, uso de materiais reciclados e adequação para trilhas em tempo chuvoso:

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;

Resposta de exemplo:

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