Estender o aplicativo no runtime de previsão

Importante

O LUIS será desativado em 1º de outubro de 2025 e, a partir de 1º de abril de 2023, você não poderá criar novos recursos do LUIS. É recomendável migrar seus aplicativos LUIS para a compreensão da linguagem coloquial a fim de usufruir do suporte contínuo ao produto e dos recursos multilíngues.

O esquema do aplicativo (modelos e recursos) é treinado e publicado no ponto de extremidade de previsão. Esse modelo publicado é usado no runtime de previsão. Você pode transmitir novas informações junto ao enunciado do usuário para o runtime de previsão para aumentar a previsão.

Duas alterações do esquema de runtime de previsão incluem:

Entidades externas

Entidades externas dão ao seu aplicativo LUIS a capacidade de identificar e rotular entidades durante o runtime, que podem ser usadas como recursos para entidades existentes. Isso permite que você use seus próprios extratores de entidade personalizados e separados antes de enviar consultas para seu ponto de extremidade de previsão. Como isso é feito no ponto de extremidade de previsão de consulta, você não precisa treinar novamente e publicar seu modelo.

O aplicativo-cliente está fornecendo seu próprio extrator de entidade gerenciando a correspondência de entidades e determinando o local no enunciado dessa entidade correspondente e, em seguida, enviando essas informações com a solicitação.

Entidades externas são o mecanismo para estender qualquer tipo de entidade e, ao mesmo tempo, ser usadas como sinais para outros modelos.

Isso é útil para uma entidade que possui dados disponíveis somente no runtime de previsão de consulta. Exemplos desse tipo de dados estão constantemente mudando os dados ou são específicos por usuário. Você pode estender uma entidade de contato LUIS com informações externas da lista de contatos de um usuário.

As entidades externas fazem parte da API de criação V3.

A entidade já existe no aplicativo

O valor de entityName para a entidade externa, transmitido no corpo do POST da solicitação de ponto de extremidade, já deve existir no aplicativo treinado e publicado no momento em que a solicitação é feita. O tipo de entidade não importa, todos os tipos têm suporte.

Primeira vez na conversa

Considere um primeiro enunciado em uma conversa de chatbot, onde um usuário insere as seguintes informações incompletas:

Send Hazem a new message

A solicitação do chatbot para o LUIS pode transmitir informações no corpo do POST sobre Hazem para que ela corresponda diretamente a um dos contatos do usuário.

    "externalEntities": [
        {
            "entityName":"contacts",
            "startIndex": 5,
            "entityLength": 5,
            "resolution": {
                "employeeID": "05013",
                "preferredContactType": "TeamsChat"
            }
        }
    ]

A resposta de previsão inclui essa entidade externa, com todas as outras entidades previstas, porque ela é definida na solicitação.

Segunda vez na conversa

O próximo enunciado do usuário no chatbot usa um termo mais vago:

Send him a calendar reminder for the party.

Nesta vez, o enunciado usa him como uma referência a Hazem. O chatbot de conversa, no corpo do POST, pode mapear him para o valor da entidade extraído do primeiro enunciado, Hazem.

    "externalEntities": [
        {
            "entityName":"contacts",
            "startIndex": 5,
            "entityLength": 3,
            "resolution": {
                "employeeID": "05013",
                "preferredContactType": "TeamsChat"
            }
        }
    ]

A resposta de previsão inclui essa entidade externa, com todas as outras entidades previstas, porque ela é definida na solicitação.

Substituir previsões de modelo existentes

A propriedade de opções preferExternalEntities especifica que, se o usuário enviar uma entidade externa que se sobreponha a uma entidade prevista com o mesmo nome, o LUIS escolherá a entidade transferida ou a entidade existente no modelo.

Por exemplo, considere a consulta today I'm free. O LUIS detecta today como um datetimeV2 com a seguinte resposta:

"datetimeV2": [
    {
        "type": "date",
        "values": [
            {
                "timex": "2019-06-21",
                "value": "2019-06-21"
            }
        ]
    }
]

Se o usuário enviar a entidade externa:

{
    "entityName": "datetimeV2",
    "startIndex": 0,
    "entityLength": 5,
    "resolution": {
        "date": "2019-06-21"
    }
}

Se preferExternalEntities for definido como false, o LUIS retornará uma resposta como se a entidade externa não tivesse sido enviada.

"datetimeV2": [
    {
        "type": "date",
        "values": [
            {
                "timex": "2019-06-21",
                "value": "2019-06-21"
            }
        ]
    }
]

Se preferExternalEntities for definido como true, o LUIS retornará uma resposta, incluindo:

"datetimeV2": [
    {
        "date": "2019-06-21"
    }
]

Resolução

A propriedade opcionalresolution retorna na resposta de previsão, permitindo que você transfira os metadados associados à entidade externa e, em seguida, receba-os novamente na resposta.

A principal finalidade é estender entidades predefinidas, mas não se limita a esse tipo de entidade.

A propriedade resolution pode ser um número, uma cadeia de caracteres, um objeto ou uma matriz:

  • "Dallas"
  • {"text": "value"}
  • 12345
  • ["a", "b", "c"]

Listas dinâmicas

As listas dinâmicas permitem estender uma entidade de lista treinada e publicada existente, já no aplicativo LUIS.

Use esse recurso quando os valores da entidade de lista precisarem ser alterados periodicamente. Esse recurso permite estender uma entidade de lista já treinada e publicada:

  • No momento da solicitação de ponto de extremidade de previsão de consulta.
  • Para uma única solicitação.

A entidade de lista pode estar vazia no aplicativo LUIS, mas ela deve existir. A entidade de lista no aplicativo LUIS não é alterada, mas a capacidade de previsão no ponto de extremidade é estendida para incluir até 2 listas com cerca de 1.000 itens.

Corpo da solicitação JSON da lista dinâmica

Envie o seguinte corpo JSON para adicionar uma nova sublista com sinônimos à lista e prever a entidade de lista para o texto, LUIS, com a solicitação de previsão de consulta POST:

{
    "query": "Send Hazem a message to add an item to the meeting agenda about LUIS.",
    "options":{
        "timezoneOffset": "-8:00"
    },
    "dynamicLists": [
        {
            "listEntity*":"ProductList",
            "requestLists":[
                {
                    "name": "Azure AI services",
                    "canonicalForm": "Azure-Cognitive-Services",
                    "synonyms":[
                        "language understanding",
                        "luis",
                        "qna maker"
                    ]
                }
            ]
        }
    ]
}

A resposta de previsão inclui essa entidade de lista, com todas as outras entidades previstas, porque ela é definida na solicitação.

Próximas etapas