Usando APIs de aprendizado de máquina

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 6 min. de leitura
  • Uso ServiceNowAPIs de aprendizado de máquina (ML) para treinar modelos de aprendizado de máquina e executar inferências.

    As APIs DE ML permitem treinamento de soluções e gestão de versões de soluções. Você pode obter e definir versões ativas, monitorar o status do treinamento e muito mais. A API DE ML também fornece codificadores, que permitem o uso de frequência de termo – frequência inversa de documento (TF-IDF) como um corpus de palavras. As estimativas de previsibilidade permitem avaliar o valor preditivo das colunas da tabela.

    Nota:
    Inteligência preditiva Execução de APIs com privilégios totais antes de Washington DCVersão do patch 7. Após essa versão, conceda acesso usando ACLs. Para obter mais informações, consulte Query ACLs.

    Visão geral da classe de API DE ML

    Esta seção descreve resumidamente as aulas para treinamento de soluções DE ML e execução de inferências com soluções treinadas.

    Conjuntos de dados

    Um conjunto de dados é Um conjunto de registros, incluindo um nome de tabela, colunas e critérios de seleção de linha para usar como entrada para algoritmos de treinamento DE ML. Os conjuntos de dados não contêm os dados reais.

    Para obter mais informações, consulte DatasetDefinition .

    Objetos DE ML - Soluções, codificadores e estimativas

    Os objetos DE ML definem uma configuração de treinamento específica a ser aplicada em um conjunto de dados. Algumas operações são comuns em objetos DE ML. Os objetos de solução incluem classificação, clustering, regressão e semelhança.

    Os codificadores são objetos de processamento de texto que são pré-treinados ou treinados com base nos conjuntos de dados de idiomas fornecidos. Você pode treinar codificadores que determinam como o sistema interpreta e processa campos de texto. Para soluções DE ML que incluem texto, você pode treinar um codificador para especificar como processar texto e usar o codificador treinado em uma solução.

    Os objetos Estimate estimam quais campos em um conjunto de dados são previsíveis e os recursos nos quais essa previsibilidade se baseia.

    Para obter mais informações, consulte:
    • ClassificationSolution
    • ClusteringSolution
    • Codificador
    • PredicabilityEstimate
    • RegressãoSolução
    • SimilaridadeSolução
    Lojas

    Os objetos DE ML são mantidos em um armazenamento específico para cada tipo de objeto. Cada classe de armazenamento inclui métodos para adicionar, obter, atualizar e excluir operações.

    Para obter mais informações, consulte:
    • ClassificationSolutionStore
    • ClusteringSolutionStore
    • CoderStore
    • PredicabilityEstimateStore
    • RegressãoSolutionStore
    • ArmazenamentoSolução SimilariaArmazenamentoSolução
    Versões

    Cada objeto treinado resulta em uma nova versão na qual você pode executar tarefas. Use a API de versão para obter qualquer versão da solução e executar tarefas nela.

    Para obter mais informações, consulte:
    • ClassificationSolutionVersion
    • ClusteringSolutionVersion
    • CodificadorVersion
    • PredicabilityEstimateVersion
    • RegressãoSolutionVersion
    • SimilaridadeSolutionVersion

    Juntando: Fluxos de API de ML

    Você pode usar o fluxo a seguir para configurar e treinar soluções, codificadores e estimativas de previsibilidade:
    Figura 1. Fluxo de API de ML - Solução, codificador e treinamento de estimativa
    Esta imagem ilustra o fluxo da API desde a definição do conjunto de dados, a criação de um objeto de ML, a adição do objeto DE ML a um armazenamento e o treinamento do objeto DE ML.
    Nota:
    As definições do codificador são compatíveis com várias definições de conjunto de dados, mas têm o mesmo fluxo de treinamento.
    Para treinar uma solução com um codificador, crie o codificador primeiro e, em seguida, inclua o codificador na configuração da solução.
    Figura 2. Fluxo de API de ML – Treinamento de API da solução com codificador
    Esta imagem ilustra o fluxo de API da definição do conjunto de dados, da criação de um objeto de solução que especifica um codificador existente, da adição da solução a uma loja e do treinamento da solução.

    Requisitos do codificador de objeto de ML:

    • Necessário em soluções de API de semelhança.
    • Necessário em soluções de API de clustering, a menos que o algoritmo de distância Levenshtein seja usado, caso em que os codificadores são opcionais.
    • Opcional para soluções de classificação e regressão.
    • Indisponível para estimativas de previsibilidade.

    Treinamento da solução de API de ML

    Siga este detalhamento de exemplo para saber como configurar e treinar uma solução.

    Configure e treine uma solução
    Esta imagem ilustra o fluxo de API da definição do conjunto de dados, da criação de um objeto de solução de classificação, da adição da solução a uma loja e do treinamento da solução.
    1. Defina um conjunto de dados usando DatasetDefinition API.
      var myData = new sn_ml.DatasetDefinition({
      
        'tableName' : 'incident',
        'fieldNames' : ['assignment_group', 'short_description', 'description'],
        'encodedQuery' : 'activeANYTHING'
      
      });
    2. Use o construtor para definir a solução, incluindo o conjunto de dados na configuração.
      var mySolution = new sn_ml.ClassificationSolution({
      
        'label': "my solution definition",
        'dataset' : myData,
        'predictedFieldName' : 'assignment_group',
        'inputFieldNames':['short_description']
      
      });
      • ClassificaçãoSolução()
      • Solução de Clustering()
      • Codificador ()
      • PredictabilityEstimate()
      • RegressãoSolução()
      • SimilaridadeSolução()
    3. Adicione a definição da solução à loja usando adicionar() método.
      var my_unique_name = sn_ml.ClassificationSolutionStore.add(mySolution);
      • ClassificationSolutionStore - add()
      • ClusteringSolutionStore – add()
      • CoderStore - add()
      • PredictabilityEstimateStore - add()
      • RegressionSolutionStore - add()
      • SimilaritySolutionStore - add()
    4. Treine a solução usando TrainingJob() método. Após a conclusão do treinamento, você poderá gerenciar a solução treinada usando uma API de versão da solução. Uma solução pode ser retreinada várias vezes. Cada treinamento resulta em uma nova "versão" da solução na qual você pode executar inferências.
      var myClassifierVersion = mySolution.submitTrainingJob();
      • ClassificationSolution - submitTrainingJob()
      • ClusteringSolutionVersion – submitTrainingJob()
      • Codificador - submitTrainingJob()
      • PredictabilityEstimate - submitTrainingJob()
      • RegressãoSolution - submitTrainingJob()
      • SimilaritySolution - submitTrainingJob()
    Exibir todas as soluções de classificação em uma loja
    Você pode usar a loja GetAllNames() método para ver uma lista de todas as soluções que foram adicionadas à loja.
    gs.print(JSON.stringify(JSON.parse(sn_ml.ClassificationSolutionStore.getAllNames()), null, 2));

    Na saída, o sistema nomeou a solução ml_x_snc_global_global_my_solution_definition . Use este nome nos exemplos subsequentes para obter informações da versão.

    *** Script: [
      "ml_incident_assignment",
      "ml_x_snc_global_global_my_solution_definition",
      "ml_incident_categorization"
    ]
    • ClassificationSolutionStore - getAllNames()
    • ClusteringSolutionStore – getAllNames()
    • CoderStore - getAllNames()
    • PredictabilityEstimateStore - getAllNames()
    • RegressionSolutionStore - getAllNames()
    • SimilaritySolutionStore - getAllNames()

    Introdução às versões da solução da API de ML

    Siga estes exemplos de detalhamentos para saber como gerenciar versões de solução treinadas.

    Verifique o status do treinamento

    Obtenha a solução de classificação na loja, escolha uma versão e verifique o status do treinamento. Os métodos usados para verificar o status do treinamento são aplicáveis a todos os tipos de objeto DE ML.

    Esta imagem ilustra o fluxo da API de acessar uma solução de classificação na loja, escolher uma versão da solução e verificar seu status de treinamento.
    1. Obtenha a solução do armazenamento de soluções de classificação usando get() método.
      // Get the solution created in the previous example from the classification solution store
      var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition');
      • ClassificationSolutionStore - Get()
      • ClusteringSolutionStore – get()
      • CoderStore - Get()
      • PredictabilityEstimateStore - Get()
      • RegressionSolutionStore - Get()
      • SimilaritySolutionStore - Get()
    2. Acesse a versão mais recente da solução usando GetLatestVersion() método de solução e obter seu status de treinamento usando GetStatus() método de versão.
      // Access the latest version of the solution and print its training status
      gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus(), null, 2)));

      Saída quando o treinamento for concluído:

      *** Script: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
      GetLatestVersion() GetStatus()
      ClassificationSolution - getLatestVersion() ClassificationSolutionVersion - getStatus()
      ClusteringSolution – getLatestVersion() ClusteringSolutionVersion – getStatus()
      Codificador - getLatestVersion() CoderVersion - getStatus()
      PredictabilityEstimate - getLatestVersion() PredictabilityEstimateVersion - getStatus()
      RegressãoSolution - getLatestVersion() RegresssionSolutionVersion - getStatus()
      SimilaritySolution - getLatestVersion() SimilaritySolutionVersion - getStatus()
    Obtenha previsões usando uma versão da solução
    Depois que a solução for treinada, obtenha a versão treinada e execute uma previsão nela. Obtenha a solução que você criou na loja. Em seguida, escolha a versão treinada e preveja a versão treinada. Esta imagem ilustra o fluxo da API do acesso à solução de classificação na loja, da escolha de uma versão da solução e da obtenção de dados de entrada de previsão.
    Nota:
    As previsões não podem ser feitas em codificadores e estimativas de previsibilidade.
    1. Obtenha a solução do armazenamento de soluções de classificação usando get() método.
      // Get the solution created in the first example from the classification solution store
      var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition');
    2. Use o. GlideRecord API get() Método para fornecer um registro da tabela Incidente [incidente].
      // single GlideRecord input
      var input = new GlideRecord("incident");
      input.get("<sys_id>");
    3. Opcional. Configure o. ClassificationSolutionVersion – Predict() método optionsparâmetro para retornar os três principais resultados e retornar todos os resultados.
      // configure optional parameters
      var options = {};
      options.top_n = 3;
      options.apply_threshold = false;
    4. Declare uma variável chamada resultados e atribua-o ao trabalho de previsão. Para executar o trabalho de previsão, obtenha a versão mais recente da solução usando ClassificationSolution – getLatestVersion() e chamar o. ClassificationSolutionVersion – Predict() nele.
      var results = mlSolution.getLatestVersion().predict(input, options);
      • ClassificationSolutionVersion - Previsão()
      • ClusteringSolutionVersion – Predict()
      • RegresssionSolutionVersion - Previsão()
      • SimilaritySolutionVersion - Previsão()
    5. Imprima a saída de resultados previstos.
      gs.print(JSON.stringify(JSON.parse(results), null, 2));

      Saída de exemplo de resultados previstos:

      *** Script: {
        "<sys_id>": [
          {
            "confidence": 99,
            "threshold": 24.75,
            "predictedValue": "Email",
            "predictedSysId": ""
          },
          {
            "confidence": 5.88210244009169,
            "threshold": 100,
            "predictedValue": "Email (I/f)",
            "predictedSysId": ""
          },
          {
            "confidence": 2.3461203499840932,
            "threshold": 14.81,
            "predictedValue": "Authentication",
            "predictedSysId": ""
          }
        ]
      }