Analisar os dados telemétricos do seu bot
APLICA-SE A: SDK v4
Analisar o comportamento do bot
A coleção de consultas a seguir pode ser usada para analisar o comportamento do bot. Você pode usar a coleção para criar consultas personalizadas no Log Analytics do Azure Monitor e para criar painéis de monitoramento e visualização do Power BI .
Pré-requisitos
É útil ter uma compreensão básica dos seguintes conceitos:
- Consultas Kusto
- Como usar o Log Analytics no portal do Azure para escrever consultas de log do Azure Monitor
- Os conceitos básicos de Consultas de log no Azure Monitor
Dica
Se você criar seu bot usando ferramentas como o Copilot Studio ou o Composer, convém usar a versão da Caixa de diálogo adaptável de cada consulta, quando disponível.
Dashboards
Os Painéis do Azure oferecem uma ótima maneira de exibir e compartilhar informações geradas de suas consultas. Você pode criar painéis personalizados para ajudar a monitorar a atividade dos seus bots associando suas consultas aos blocos que você adiciona ao seu painel. Para obter informações sobre painéis e como associar suas consultas a eles, confira Criar e compartilhar painéis de dados do Log Analytics. O restante deste artigo mostra exemplos de algumas das consultas que você pode achar úteis no monitoramento do comportamento dos seus bots.
Consultas Kusto de exemplo
Observação
É recomendável dinamizar em diferentes dimensões, como período, canal e localidade para todas as consultas neste artigo.
Número de usuários por período
Este exemplo resulta em um gráfico de linha que mostra quantos usuários diferentes comunicaram-se com seu bot por dia nos últimos 14 dias. O período pode ser facilmente alterado atribuindo diferentes valores às variáveis queryStartDate
, queryEndDate
e interval
.
Importante
Você só obterá uma contagem correta de usuários exclusivos nessa consulta se eles forem usuários autenticados, e os resultados também podem depender dos recursos do canal.
// number of users per period
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| summarize uc=dcount(user_Id) by bin(timestamp, groupByInterval)
| render timechart
Dica
O operador summarize do Kusto é usado para produzir uma tabela que agrega o conteúdo da tabela de entrada.
A função Bin é uma função escalar Kusto que, quando usada em conjunto com o summarize operator
, agrupará os resultados da consulta no valor especificado. No exemplo acima, isso é agrupado por dia. O Kusto também aceitará h=horas, m=minutos, s=segundos, ms=milissegundos, microsecond=microssegundos.
O operador render permite renderizar gráficos facilmente, como o gráfico de tempo, um gráfico de linhas em que o eixo x é um datetime e qualquer outra coluna numérica pode ser usada para o eixo y. Ele manterá automaticamente o espaço do eixo x bem uniforme mesmo se seus dados não tiverem todo horário especificado. Se nenhuma instrução render for usada, o padrão será table
.
Exemplo de resultados da consulta de número de usuários por período
Atividade por período
Este exemplo ilustra como medir o volume de atividade por dimensão desejada, como uma contagem do número de conversas, caixas de diálogo ou mensagens por dia nos últimos 14 dias. O período pode ser facilmente alterado atribuindo diferentes valores às variáveis querystartdate
, queryEndDate
e interval
. A dimensão desejada é definida pela extend
cláusula no exemplo a seguir, metric
pode ser definida como InstanceId, DialogId ou activityId.
Atribua a métrica à dimensão que você deseja exibir:
- InstanceId mede o número de Conversas
- DialogId mede o número de Caixas de diálogo
- ActivityId mede o número de Mensagens
// Measures the number of activity's (conversations, dialogs, messages) per period.
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and InstanceId != '' and user_Id != ''
| extend metric = InstanceId // DialogId or ActivityId
| summarize Count=dcount(metric) by bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render timechart
Dica
O operador extend do Kusto é usado para criar colunas calculadas e acrescentá-las ao conjunto de resultados.
Exemplos de resultados da consulta atividade por período
Atividade por usuário por período
Este exemplo demonstra como contar o número de atividades por usuário por período. Essa consulta detalha a consulta de atividade por período para se concentrar na atividade por usuário por período. As atividades incluem caixas de diálogo, conversas ou mensagens. Essa consulta mede a interação do usuário com o bot, o que pode ajudar a encontrar possíveis problemas, como:
- Dias com muita atividade de um único usuário podem significar um ataque ou teste
- Dias com pouca interação pode indicar problemas de integridade do serviço
Dica
Você pode remover by user_Id para obter o volume de atividade de bot geral que pode ser dinamizado em tempo e caixas de diálogo, mensagens ou conversas.
// number of users per period per dialogs
let queryStartDate = ago(14d);
let queryEndDate = now();
let interval = 6h;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and InstanceId != '' and user_Id != ''
| extend metric = ActivityId // InstanceId // DialogId // or InstanceId for conversation count
| summarize Count=dcount(metric) by user_Id, bin(timestamp, groupByInterval)
| order by Count desc nulls last
Exemplos de resultados da consulta atividade por usuário por período
user_Id | timestamp | Count |
---|---|---|
User-8107ffd2 | 2019-09-03T00:00:00Z | 14 |
User-75f2cc8f | 2019-08-30T00:00:00Z | 13 |
User-75f2cc8d | 2019-09-03T00:00:00Z | 13 |
User-3060aada | 2019-09-03T00:00:00Z | 10 |
Conclusão da caixa de diálogo
Depois de definir o cliente de telemetria para uma caixa de diálogo, a caixa de diálogo (e seus filhos) emitirá alguns dados telemétricos padrão, como iniciado e concluído. Esse exemplo pode ser usado para medir as caixas de diálogo concluídas com relação às caixas de diálogo iniciadas. Se o número de caixas de diálogo iniciadas for maior que o número concluído, alguns de seus usuários não estarão concluindo o fluxo de caixas de diálogo. Você pode usar essa consulta para ajudá-lo a identificar e solucionar problemas de qualquer lógica de diálogo potencial. Ele também pode ser usado para identificar quais diálogos são usados com mais e menos frequência.
Dica
Se você criar seu bot usando ferramentas como o Copilot Studio ou o Composer, convém usar a versão de diálogo adaptável de cada consulta.
Conclusão da caixa de diálogo em cascata
// % Completed Waterfall Dialog: shows completes relative to starts
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name=="WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend InstanceId = tostring(customDimensions['InstanceId'])
| join kind=leftouter (
customEvents
| where name=="WaterfallComplete"
| extend InstanceId = tostring(customDimensions['InstanceId'])
) on InstanceId
| summarize started=countif(name=='WaterfallStart'), completed=countif(name1=='WaterfallComplete') by tostring(DialogId)
| where started > 100 // filter for sample
// Show starts vs. completes
| project tostring(DialogId), started, completed
| order by started desc, completed asc nulls last
| render barchart with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)
Dica
O operador join do Kusto é usado para mesclar as linhas de duas tabelas para formar uma nova correspondendo valores das colunas especificadas de cada tabela.
O operador project é usado para selecionar os campos que você deseja exibir na saída. Semelhante ao extend operator
que adiciona um novo campo, o project operator
pode escolher dentre o conjunto de campos existente ou adicionar um novo campo.
Caixas de diálogo adaptáveis iniciadas e concluídas
// % Completed adaptive dialog: shows completes relative to starts. This type is the default dialog type when using Copilot Studio or Composer.
customEvents
| where name=="AdaptiveDialogStart" or name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
| summarize started=countif(name=='AdaptiveDialogStart'), completed=countif(name=='AdaptiveDialogComplete') by DialogId
| project DialogId, started, completed
| order by started desc, completed asc nulls last
| render barchart with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)
Exemplos de resultados da consulta de conclusão de caixa de diálogo
Não conclusão da caixa de diálogo
Este exemplo pode ser usado para contar o número de fluxos de caixa de diálogo que foram iniciados, mas nunca concluídos devido ao cancelamento ou abandono durante o período especificado. Você pode usá-lo para revisar diálogos incompletos e examinar se eles foram ativamente cancelados devido à confusão do usuário ou abandonados devido à distração do usuário ou perda de interesse.
Caixas de diálogo em cascata não concluídas
// Show incomplete dialogs when using waterfall dialogs.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name == "WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftanti (
customEvents
| where name == "WaterfallComplete"
| extend instanceId = tostring(customDimensions['InstanceId'])
) on instanceId
| summarize cnt=count() by tostring(DialogId)
| order by cnt
| render barchart
Caixas de diálogo adaptáveis não concluídas
// Show incomplete dialogs for adaptive dialogs; this type is the default dialog type when using Copilot Studio or Composer.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where name == "AdaptiveDialogStart"
| extend DialogId = tostring(customDimensions['DialogId'])
| join kind=rightanti (
customEvents
| where name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
) on name, DialogId
| summarize cnt=count() by DialogId
| order by cnt
| render barchart
Dica
O operador order do Kusto (o mesmo que sort operator
) é usado para classificar as linhas da tabela de entrada em ordem por uma ou mais colunas. Nota: Se você deseja excluir valores nulos dos resultados de qualquer consulta, você pode filtrá-los em sua where
instrução, por exemplo, você pode adicionar "and isnotnull(Timestamp)", ou para retornar valores nulos no início ou no final, adicione o nulls first
ou nulls first
ao final da instrução order.
Exemplos de resultados da consulta de incompletude da caixa de diálogo
Busca detalhada de sequência da caixa de diálogo
Início/etapa/conclusão da cascata para caixa de diálogo na conversa
Este exemplo mostra a sequência de etapas de diálogo, agrupadas por conversa (instanceId), que pode ser útil para determinar quais etapas levam à interrupção do diálogo.
Para executar esta consulta, insira o valor do desejado DialogId
no lugar de <SampleDialogId>
// Drill down: Show waterfall start/step/complete for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogActivity=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == dlgid
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
};
// For example see SampleDialogId behavior
DialogActivity("<SampleDialogId>")
Dica
Essa consulta foi escrita usando uma função definida por consulta, que é uma função definida pelo usuário definida e usada no escopo de uma única consulta e definida por meio de uma instrução let. Essa consulta escrita sem o uso do query-defined function
:
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == "<SampleDialogId>"
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
Resultados da consulta de exemplo
timestamp | name | StepName | InstanceId |
---|---|---|---|
2019-08-23T20:04... | WaterfallStart | nulo | ...79c0f03d8701 |
2019-08-23T20:04... | WaterfallStep | GetPointOfInterestLocations | ...79c0f03d8701 |
2019-08-23T20:04... | WaterfallStep | ProcessPointOfInterestSelection | ...79c0f03d8701 |
2019-08-23T20:04... | WaterfallStep | GetRoutesToDestination | ...79c0f03d8701 |
2019-08-23T20:05... | WaterfallStep | ResponseToStartRoutePrompt | ...79c0f03d8701 |
2019-08-23T20:05... | WaterfallComplete 1 | nulo | ...79c0f03d8701 |
2019-08-28T23:35... | WaterfallStart | nulo | ...6ac8b3211b99 |
2019-08-28T23:35... | WaterfallStep 2 | GetPointOfInterestLocations | ...6ac8b3211b99 |
2019-08-28T19:41... | WaterfallStart | nulo | ...8137d76a5cbb |
2019-08-28T19:41... | WaterfallStep 2 | GetPointOfInterestLocations | ...8137d76a5cbb |
2019-08-28T19:41... | WaterfallStart | nulo | ...8137d76a5cbb |
1 Concluída
2 Abandonada
Interpretação: os usuários parecem abandonar a conversa na etapa GetPointOfInterestLocations.
Observação
As caixas de diálogo de em cascata executam uma sequência (início, várias etapas, conclusão). Se uma sequência mostra o início sem conclusão, isso significa que a caixa de diálogo foi interrompida devido ao abandono do usuário ou ao cancelamento da caixa de diálogo. Nesta análise detalhada, pode-se ver esse comportamento (veja etapas concluídas versus abandonadas).
Totais de agregação das etapas início/etapa/conclusão/cancelamento em cascata
Esse exemplo mostra os totais de agregação do número total de vezes que uma sequência de caixa de diálogo foi iniciada, o número total combinado de etapas em cascata, quantas foram concluídas com êxito, quantas foram canceladas e a diferença entre WaterfallStart e o total combinado de WaterfallComplete, além de que WaterfallCancel fornecerá o número total de abandonadas.
// Drill down: Aggregate view of waterfall start/step/complete/cancel steps totals for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogSteps=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| where DialogId == dlgid
| project name
| summarize count() by name
};
// For example see SampleDialogId behavior
DialogSteps("<SampleDialogId>")
Exemplos de resultados da consulta de agregação em cascata
name | count |
---|---|
WaterfallStart | 21 |
WaterfallStep | 47 |
WaterfallComplete | 11 |
WaterfallCancel | 1 |
Interpretação: Das 21 invocações da sequência de diálogo, apenas 11 foram concluídas, 9 foram abandonadas e uma foi cancelada pelo usuário.
Duração média na caixa de diálogo
Esse exemplo mede a quantidade média de tempo que os usuários passam em uma determinada caixa de diálogo. Seu bot pode se beneficiar da simplificação de caixas de diálogo que levam muito tempo para serem concluídas pelo usuário.
// Average dialog duration
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name=="WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftouter (customEvents | where name=="WaterfallCancel" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| join kind=leftouter (customEvents | where name=="WaterfallComplete" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| extend duration = case(not(isnull(timestamp1)), timestamp1 - timestamp,
not(isnull(timestamp2)), timestamp2 - timestamp, 0s) // Abandoned aren't counted. Alternate: now()-timestamp
| extend seconds = round(duration / 1s)
| summarize AvgSeconds=avg(seconds) by tostring(DialogId)
| order by AvgSeconds desc nulls last
| render barchart with (title="Duration in Dialog")
Exemplos de resultados de consulta de duração média
Etapas médias na caixa de diálogo
Este exemplo mostra o "comprimento" de cada caixa de diálogo invocada, calculado por média, mínimo, máximo e desvio padrão. Isso pode ajudar a analisar a qualidade da caixa de diálogo. Por exemplo:
- Diálogos com muitas etapas devem ser avaliados quanto a oportunidades de simplificação.
- Caixas de diálogo com uma ampla lacuna entre mín/máx/média podem significar que os usuários ficam paralisados tentando concluir as tarefas. Talvez seja necessário avaliar a possibilidade de haver caminhos menores para concluir as tarefas ou maneiras de reduzir a complexidade da caixa de diálogo.
- Diálogos com um grande desvio padrão sugerem caminhos complexos ou experiência quebrada (abandono/cancelamento).
- Diálogos com poucos passos podem ser assim porque nunca foram concluídos. Analisar as taxas de conclusão/abandono pode ajudar a fazer essa determinação.
// min/max/std/avg steps per dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = tostring(customDimensions['DialogId'])
| extend StepName = tostring(customDimensions['StepName'])
| extend InstanceId = tostring(customDimensions['InstanceId'])
| where name == "WaterfallStart" or name == "WaterfallStep" or name == "WaterfallComplete"
| order by InstanceId, timestamp asc
| project timestamp, DialogId, name, InstanceId, StepName
| summarize cnt=count() by InstanceId, DialogId
| summarize avg=avg(cnt), minsteps=min(cnt),maxsteps=max(cnt), std=stdev(cnt) by DialogId
| extend avgsteps = round(avg, 1)
| extend avgshortbysteps=maxsteps-avgsteps
| extend avgshortbypercent=round((1.0 - avgsteps/maxsteps)*100.0, 1)
| project DialogId, avgsteps, minsteps, maxsteps, std, avgshortbysteps, avgshortbypercent
| order by std desc nulls last
Exemplos de resultados da consulta de etapas médias
ID de diálogo | etapas médias | etapas mín | etapas máx | std | média curta por etapas | média curta por percentual |
---|---|---|---|---|---|---|
FindArticlesDialog | 6.2 | 2 | 7 | 2,04 | 0.8 | 11,4% |
CreateTicket | 4.3 | 2 | 5 | 1.5 | 0.7 | 14% |
CheckForCurrentLocation | 3.9 | 2 | 5 | 1,41 | 1,1 | 22% |
BaseAuth | 3.3 | 2 | 4 | 1,03 | 0.7 | 17,5% |
integração | 2.7 | 2 | 4 | 0.94 | 1,3 | 32,5% |
__Interpretation: Por exemplo, FindArticlesDialog tem uma ampla dispersão entre min / max e deve ser investigado e possivelmente redesenhado e otimizado.
Atividade do canal por métrica de atividade
Esse exemplo mede a quantidade de atividade que seu bot recebe por canal no período determinado. Ele faz isso contando qualquer uma das seguintes métricas: mensagens recebidas, usuários, conversas ou caixas de diálogo. Isso pode ser útil para a análise de integridade do serviço ou para medir a popularidade dos canais.
// number of metric: messages, users, conversations, dialogs by channel
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| extend ChannelId = tostring(customDimensions['channelId'])
| where DialogId != '' and InstanceId != '' and user_Id != ''
| extend metric = user_Id // InstanceId or ActivityId or user_Id
| summarize Count=count(metric) by ChannelId, bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render barchart with (title="Users", kind=stacked) // or Incoming Messages or Conversations or Users
Dica
Talvez convenha considerar experimentar estas variações:
- Execute a consulta sem o bucket de carimbo de data/hora:
bin(timestamp, groupByInterval)
. - Também é possível usar
dcount
para usuários distintos ecount
para todas as atividades de eventos do usuário. Isso também funciona para usuários repetidos.
Exemplos de resultados da consulta de atividade por atividade de canal
Interpretação: O teste do emulador costumava ser o mais popular, mas uma vez que entramos no ar, o DirectLineSpeech é o canal mais popular.
Total de intenções por popularidade
Este exemplo aplica-se a bots habilitados para LUIS. Ele mostra um resumo de todas as intenções por popularidade e a pontuação de certeza de detecção de intenção correspondente.
Observação
O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.
A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.
- Na prática, a exibição deve ser separada para cada métrica.
- Os caminhos de intenção populares devem ser otimizados para a experiência do usuário.
- Pontuações médias baixas indicam baixo reconhecimento e possível ausência de intenção do usuário real.
// show total intents
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name startswith "LuisResult"
| extend intentName = tostring(customDimensions['intent'])
| extend intentScore = todouble(customDimensions['intentScore'])
| summarize ic=count(), ac=avg(intentScore)*100 by intentName
| project intentName, ic, ac
| order by ic desc nulls last
| render barchart with (kind=unstacked, xcolumn=intentName, ycolumns=ic,ac, title="Intents Popularity")
Exemplos de resultados da consulta de intenções por popularidade
Interpretação: por exemplo, a intenção mais popular, confirmar, é detectada apenas com 23% de confiança em média.
Dica
Gráficos de barras são um de mais de uma dezena de opções disponíveis com consultas Kusto. Algumas outras opções incluem: anomalychart, areachart, columnChart, linechart, scatterchart. Para obter mais informações, consulte o tópico do operador de renderização.
Esquema da instrumentação de análise de bot
As tabelas a seguir mostram os campos mais comuns nos quais seu bot registrará dados telemétricos.
Envelope Geral
Campos de análise de logs comuns na instrumentação do Application Insights.
Campo | Descrição | Valores de Exemplo |
---|---|---|
name | Tipo de mensagem | BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure |
customDimensions | Análise de Bot do SDK | activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=pt-br, recipientId=<id>, recipientName=Bot, text=encontre uma cafeteria |
timestamp | Horário do evento | 2019-09-05T18:32:45.287082Z |
instance_Id | ID da conversa | f7b2c416-a680-4b2c-b4cc-79c0f03d8711 |
operation_Id | ID de turno | 084b2856947e3844a5a18a8476d99aaa |
user_Id | ID de usuário exclusivo do canal | emulator7c259c8e-2f47... |
client_IP | Endereço IP do cliente | 127.0.0.1 (pode estar ausente devido ao bloqueio de privacidade) |
client_City | Cidade do cliente | Redmond (se detectada, pode estar ausente) |
Observação
O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
Respostas às perguntas personalizadas, um recurso de Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, confira reconhecimento de linguagem natural.
Observação
O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.
A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.
Dimensões Personalizadas
A maioria dos dados da atividade específicos do bot é armazenada no campo customDimensions.
Campo | Descrição | Valores de Exemplo |
---|---|---|
activityId | ID da mensagem | <Identificação>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a |
activityType | Tipo de mensagem | message, conversationUpdate, event, invoke |
channelId | Identificador do canal | emulator, directline, msteams, webchat |
fromId | Identificador De | <id> |
fromName | Nome de usuário do cliente | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
localidade | Localidade de origem do cliente | en-us, zh-cn, en-GB, de-de, zh-CN |
recipientId | Identificador do destinatário | <id> |
recipientName | Nome do destinatário | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
text | Texto na mensagem | encontre uma cafeteria |
Dimensões personalizadas: LUIS
Observação
O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.
A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.
A instrumentação do LUIS armazena os dados nos campos Dimensões Personalizados a seguir.
Campo | Descrição | Valores de Exemplo |
---|---|---|
intenção | Intenção detectada pelo LUIS | pointOfInterestSkill |
intentScore | Pontuação de reconhecimento do LUIS | 0,98 |
Entidades | Entidades detectadas pelo LUIS | FoodOfGrocery = [["coffee"]], KEYWORD= ["coffee shop"] |
Pergunta | Pergunta detectada pelo LUIS | encontre uma cafeteria |
sentimentLabel | Sentimento detectado pelo LUIS | positivo |
Dimensões personalizadas: QnAMaker
Observação
O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
Respostas às perguntas personalizadas, um recurso de Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, confira reconhecimento de linguagem natural.
a instrumentação do QnAMaker armazena os dados nos campos Dimensões Personalizadas a seguir.
Dica
Para habilitar o log de informações pessoais, como perguntas e respostas, o parâmetro de log de informações pessoais deve ser definido como true no construtor da classe QnA Maker .
Campo | Descrição | Valores de Exemplo |
---|---|---|
pergunta | Pergunta detectada pelo QnA | o que você pode fazer? |
resposta | Resposta do QnA | Você tem perguntas, eu posso ter respostas. |
articleFound | QnA | true |
questionId | ID da pergunta do QnA | 488 |
knowledgeBaseId | ID da base de dados de conhecimento do QnA | 2a4936f3-b2c8-44ff-b21f-67bc413b9727 |
matchedQuestion | Matriz de perguntas correspondidas | ["Você pode me explicar qual é o seu papel?","Você pode me contar um pouco sobre você?","Você pode me falar sobre você?","Você poderia me ajudar","Hmmm, então o que você pode fazer?","Como você pode me ajudar","Como você pode me ajudar?","Como você pode ajudar?","Então, como posso usá-lo em meus projetos?", "Fale comigo sobre sua capacidade", "Do que você é capaz?", ...] |
Confira também
- Para obter um tutorial sobre como escrever consultas de log, confira Introdução às consultas de log no Azure Monitor
- Visualizando dados do Azure Monitor
- Saiba como Adicionar telemetria ao seu bot
- Saiba mais sobre Consultas de log do Azure Monitor
- Listagem completa de eventos do Application Insights do Bot Framework
- Create and share dashboards of Log Analytics data