ai_decide Função

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

Importante

Este recurso está em versão Beta.

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

Todas as perguntas numa chamada usam a mesma entrada, chamada state. Podes combinar diferentes tipos de perguntas numa ú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 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 Apache 2.0

Os modelos subjacentes que poderão ser usados atualmente estão licenciados sob a Licença Apache 2.0, Direitos de Autor © da Apache Software Foundation. Os clientes são responsáveis por garantir a conformidade com as licenças de modelo aplicáveis.

A Databricks recomenda a revisão dessas licenças para garantir a conformidade com quaisquer termos aplicáveis. Se surgirem modelos no futuro com melhor desempenho de acordo com os benchmarks internos da Databricks, a Databricks poderá alterar o modelo (e a lista de licenças aplicáveis fornecida nesta página).

O modelo que alimenta esta função está disponível através das APIs Model Serving Foundation Model Model. Consulte Termos de modelo Aplicável para informações sobre quais modelos estão disponíveis nos Databricks e as licenças e políticas que regem a utilização desses modelos.

Se surgirem modelos que tenham melhor desempenho segundo os benchmarks internos do Azure Databricks, o Databricks poderá alterar os modelos e atualizar a documentação.

Syntax

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 consoante a linha. Aceita um:

    • A contendo STRING texto simples ou um objeto ou array codificado em JSON. Os objetos e arrays JSON são interpretados como dados estruturados. Outras cadeias são tratadas como texto.
    • Um VARIANT produzido 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 tecla é um ID de pergunta não vazio, e cada valor é uma definição de pergunta. As mesmas definições aplicam-se a todas as linhas. Ver 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, choice, ou 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 uma pergunta ser verdadeira. O resultado é um número de 0 a 1.

O objeto opcional criteria pode conter true e false teclas para descrever esses resultados. Cada descrição pode ser uma string, objeto JSON ou array JSON. Omita criteria quando não precisares destas descrições. Se fornecida, 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 uma etiqueta a partir de um conjunto de critérios nomeados.

O objeto requerido 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 só o rótulo 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 requerido criteria contém de 2 a 10 descrições, ordenadas do mais baixo para o mais alto. Cada descrição pode ser uma string, objeto JSON ou array JSON. O primeiro critério tem índice 0, o seguinte tem índice 1, e assim sucessivamente.

O resultado é a média ponderada pela probabilidade destes índices. Pode ser fracionado e varia de 0 até ao 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"
    ]
  }
}

Devoluções

Devolve 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 seguintes exemplos mostram o response campo para cada tipo de pergunta:

  • Perguntas de Noul: A probability de 0 para 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 que mapeia cada rótulo à sua probabilidade. confidence é um número de 0 a 1 que indica quão bem 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 pela probabilidade dos índices critério, um legend mapeamento de índices de cadeia (como "0") para as descrições originais do critério, e um probabilities objeto que mapeia esses índices para probabilidades. confidence é um número de 0 a 1 que indica quão bem 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.

No caso da 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 seguinte mostra como avaliar várias perguntas numa só chamada. As respostas geradas podem variar entre chamadas.

Avalie vários tipos de perguntas

Este exemplo avalia uma lista de produtos pela sua categoria, uso de materiais reciclados e adequação para caminhadas 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
}