Partilhar via


Melhorar mensagens de bot geradas por IA

A etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade nas mensagens do bot melhoram o envolvimento do utilizador e promovem a transparência e a confiança.

  • A etiqueta de IA permite que os utilizadores identifiquem que a mensagem foi gerada com IA.
  • A citação permite que os utilizadores consultem a origem da mensagem do bot através de citações e referências em texto.
  • Os botões de feedback permitem que os utilizadores forneçam comentários positivos ou negativos às mensagens do bot.
  • A etiqueta de confidencialidade permite que os utilizadores compreendam a confidencialidade da mensagem do bot.

As capturas de ecrã seguintes mostram como as mensagens de bot podem ser melhoradas com a etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade:

Antes

Captura de ecrã a mostrar uma mensagem de bot sem etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade.

Depois

Captura de ecrã a mostrar uma mensagem de bot com etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade no cliente de ambiente de trabalho do Teams.

Observação

Etiqueta de IA

Uma etiqueta de IA na mensagem do bot indica que é gerada pela IA. Embora os bots com tecnologia de IA que utilizam Modelos de Linguagem Grande (LLMs) sejam geralmente fiáveis, a etiqueta ajuda a evitar confusões sobre a origem das informações.

Captura de ecrã a mostrar uma etiqueta de IA numa mensagem de bot.

Adicionar etiqueta de IA

Se estiver a utilizar a biblioteca de IA do Teams para criar o bot, a etiqueta de IA é ativada automaticamente para todas as mensagens de bot com tecnologia de IA no ai módulo dentro da ação.PredictedSayCommand Para obter mais informações, veja Interface AIEntity.

Se estiver a utilizar Microsoft Bot Framework SDK para criar o bot, inclua additionalType na entities matriz do message objeto de entidade. O fragmento de código seguinte mostra como ativar a etiqueta de IA numa mensagem de bot:

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey! I'm a friendly AI bot. This message is generated by AI.`,
  entities: [
    {
     type: "https://schema.org/Message",
     "@type": "Message",
     "@context": "https://schema.org",
     additionalType: ["AIGeneratedContent"], // Enables AI label
    }
  ]
});
Propriedade Tipo Obrigatório Descrição
additionalType Matriz Sim Ativa a etiqueta de IA na mensagem do bot.
Valor permitido: AIGeneratedContent

Depois de adicionar uma etiqueta de IA, a mensagem do bot mostra uma etiqueta gerada por IA junto ao nome do bot. Quando paira o cursor sobre a etiqueta de IA, é apresentada uma exclusão de responsabilidade a indicar que o conteúdo gerado pela IA pode estar incorreto.. A etiqueta de IA e a exclusão de responsabilidade não podem ser personalizadas para bots baseados em IA.

Tratamento de erros

Código de erro Descrição
400 Várias entidades de mensagens de raiz encontradas na entities matriz.
400 Erro ao analisar a entidade da mensagem da entities matriz.

Citações

Citar fontes em mensagens de bot ajuda os utilizadores a fazer perguntas de seguimento ou a realizar pesquisas independentes. Cite origens de dados como ficheiros, mensagens, e-mails e itens de trabalho para fornecer informações valiosas. As citações são cruciais para bots que utilizam técnicas como Retrieval-Augmented Generation (RAG).

Citações

Captura de ecrã a mostrar uma resposta de bot com tecnologia de IA com citações.

Janela modal

Captura de ecrã a mostrar um pop-up de janela modal a partir de uma citação numa mensagem de bot com tecnologia de IA.

As citações nas mensagens do bot podem incluir o seguinte:

  • As citações em texto indicam os números de citação adicionados à mensagem de bot no formato [#], cada uma correspondente a uma referência. Uma citação pode ser inserida em qualquer parte do texto.
  • Os detalhes da referência de citação incluem o título, ícone, palavras-chave, abstrato, hiperligação, informações de confidencialidade e um botão para abrir uma janela modal com conteúdo adicional. As referências aparecem como janelas de pop-up para cada citação em texto.
  • Os rótulos de confidencialidade das citações indicam a confidencialidade do conteúdo da citação referenciado e não são adicionados automaticamente. Para adicionar etiquetas de confidencialidade para citações, consulte Adicionar etiqueta de confidencialidade.
  • A janela Modal com conteúdo adicional compõe um Cartão Ajustável sem itens interativos.

Observação

  • Um máximo de 20 citações são apresentadas numa mensagem.
  • As citações com Cartões Ajustáveis estão disponíveis na pré-visualização do programador público.
  • Os Cartões Ajustáveis não são compostos na janela de pop-up de citação. No entanto, os Cartões Ajustáveis podem ser compostos na mensagem do bot ou na janela modal da citação acessível a partir da janela de pop-up.

Adicionar citações

Se estiver a utilizar a biblioteca de IA do Teams para criar o bot, as citações são adicionadas automaticamente a uma mensagem de bot com tecnologia de IA através PredictedSayCommand da ação. Também pode modificar a ação PredictedSayCommand para adicionar citações à sua mensagem de bot. Para obter mais informações, veja ClientCitation interface (Interface clientCitation).

Se estiver a utilizar o SDK do Bot Framework para criar o bot, inclua citation na entities matriz. Segue-se um fragmento de código de exemplo:

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey I'm a friendly AI bot. This message is generated through AI [1]`, // cite with [1],
  entities: [
  {
    type: "https://schema.org/Message",
    "@type": "Message",
    "@context": "https://schema.org",
    citation: [
    {
      "@type": "Claim",
      position: 1, // Required. Must match the [1] in the text above
      appearance: {
        "@type": "DigitalDocument",
        name: "AI bot", // Title
        url: "https://example.com/claim-1", // Hyperlink on the title
        abstract: "Excerpt description", // Appears in the citation pop-up window
        text: "{\"type\":\"AdaptiveCard\",\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"version\":\"1.6\",\"body\":[{\"type\":\"TextBlock\",\"text\":\"Adaptive Card text\"}]}", // Appears as a stringified Adaptive Card
        keywords: ["keyword 1", "keyword 2", "keyword 3"], // Appears in the citation pop-up window
        encodingFormat: "application/vnd.microsoft.card.adaptive",
        image: {
          "@type": "ImageObject",
          name: "Microsoft Word"
        },
       },
      },
    ],
  },
],
})
Propriedade Tipo Obrigatório Descrição
citation Objeto ✔️ Detalhes da citação.
citation.@type Cadeia de caracteres ✔️ Objeto da citação.
Valor permitido: Claim
citation.position Número inteiro ✔️ Apresenta o número da citação.
citation.appearance Objeto ✔️ Informação sobre o aparecimento da citação.
citation.appearance.@type Cadeia de caracteres ✔️ Objeto do aspeto da citação.
Valor permitido: DigitalDocument
citation.appearance.name Cadeia de caracteres ✔️ Título do conteúdo referenciado. Máximo de carateres: 80
citation.appearance.url Cadeia de caracteres URL do conteúdo referenciado.
citation.appearance.abstract Cadeia de caracteres Um resumo do conteúdo referenciado. Máximo de carateres: 160
citation.appearance.text Cadeia de caracteres Um Cartão Ajustável com cadeias com informações adicionais sobre a citação. É composto na janela modal acessível a partir da janela de pop-up.
citation.appearance.keywords Matriz Palavras-chave do conteúdo referenciado. Não pode adicionar mais do que três palavras-chave. Cada palavra-chave só pode conter 28 carateres.
citation.appearance.encodingFormat Cadeia de caracteres O formato de codificação do citation.appearance.text campo.
Valor permitido: application/vnd.microsoft.card.adaptive
citation.appearance.image Objeto Informações sobre o ícone da citação.
citation.appearance.image.@type Cadeia de caracteres ✔️ O objeto do ícone de citação. Deve ser ImageObject.
citation.appearance.image.name Cadeia de caracteres ✔️ O nome do ícone predefinido. Compõe o ícone de citação nos detalhes da referência da citação.
Valores permitidos: Microsoft Word, , Microsoft Excel, Microsoft OneNoteMicrosoft PowerPoint, Microsoft SharePoint, Microsoft Visio, Microsoft Loop, Microsoft Whiteboard, Source Code, Adobe IllustratorSketch, , Adobe Photoshop, Adobe InDesign, , Adobe Flash, Image, , GIF, , Video, Sound, , , TextZIPPDF

Depois de ativar as citações, a mensagem do bot inclui citações e referências em texto. As citações em texto apresentam os detalhes de referência quando os utilizadores pairam o cursor sobre a citação.

Tratamento de erros

Código de erro Descrição
400 Várias entidades de mensagens de raiz encontradas na entities matriz.
400 Erro ao analisar a entidade da mensagem da entities matriz.
400 Mensagem de bot com mais de 20 citações.
400 O appearance objeto está vazio.
400 Erro ao analisar a entidade de citação com o ID: X.

Botões de comentários

Os botões de feedback nas mensagens do bot são essenciais para controlar a interação do utilizador, identificar erros e obter informações sobre o desempenho do bot. Estas informações permitem melhoramentos direcionados das capacidades de conversação do bot. Ative os botões de feedback para permitir que os utilizadores gostem ou não gostem de mensagens e forneçam comentários detalhados.

Captura de ecrã a mostrar os botões de feedback num bot.

Quando o utilizador seleciona um botão de feedback, é apresentado um formulário de feedback com base na seleção do utilizador. Pode utilizar o formulário de feedback predefinido ou personalizá-lo de acordo com as necessidades da sua aplicação.

Captura de ecrã a mostrar o formulário de feedback predefinido num bot.

Observação

Os formulários de comentários personalizáveis estão disponíveis na pré-visualização do programador público.

Os botões de comentários estão localizados no rodapé da mensagem do bot e incluem um 👍 botão (polegar para cima) e um 👎 botão (polegar para baixo) que o utilizador seleciona.

Adicionar botões de feedback

Para um bot criado com a biblioteca de IA do Teams, o Teams ativa botões de feedback para todas as mensagens de bot quando enable_feedback_loop está definido como true no ai módulo.

export const app = new Application<ApplicationTurnState>({
    ai: {
        planner: planner,
        enable_feedback_loop: true
    },

Para obter mais informações, veja a variável da aplicação const.

Depois de ativar os botões de feedback, todos os SAY comandos do bot têm feedbackLoopEnabled no channelData objeto definido automaticamente como true.

Para ativar os botões de feedback num bot criado com o SDK do Bot Framework, defina um feedbackLoop objeto sob o channelData objeto da sua mensagem de bot.

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey! I'm a friendly AI bot!`,
  channelData: {
    feedbackLoop: { // Enable feedback buttons
        type: "custom"
  },
});
Propriedade Tipo Obrigatório Descrição
feedbackLoop Objeto ✔️ Ativa os botões de feedback na mensagem do bot.
feedbackLoop.type Cadeia de caracteres ✔️ Define o tipo de formulário de feedback que é apresentado quando um utilizador seleciona os botões de feedback.
Valores permitidos: custom, default

Se definir feedbackLoop.type como default, o formulário de feedback predefinido é apresentado quando um utilizador seleciona os botões de feedback. Se quiser apresentar um formulário de feedback personalizado, defina feedbackLoop.type como custom. O seguinte pedido de invocação é enviado para o bot para obter um formulário personalizado a apresentar ao utilizador:

{
    "type": "invoke",
    "name": "message/fetchTask",
    "value": {
        "actionName": "feedback",
        "actionValue": {
            "reaction": "like" // like or dislike
        }
    }
}

Tem de responder a esta chamada de invocação com uma caixa de diálogo (referida como módulos de tarefas no TeamsJS v1.x), da mesma forma que responderia a uma task/fetch invocação. Para obter mais informações sobre como invocar caixas de diálogo em bots, veja Utilizar caixas de diálogo com bots.

Processar comentários

O bot recebe a entrada do utilizador a partir do formulário de comentários através de um fluxo de invocação de bot. Para bots criados com a biblioteca de IA do Teams, o pedido de invocação do bot é processado automaticamente. Para processar comentários, utilize o app.feedbackLoop método para registar um processador de ciclos de comentários para ser chamado quando o utilizador fornecer feedback.

app.feedbackLoop(async (_context: TurnContext, _state: TurnState, feedbackLoopData: FeedbackLoopData) => {
  // custom logic here...
});

Para obter mais informações, veja a função de chamada de retorno assíncrona.

Para um bot criado com o SDK do Bot Framework, tem de ter um onInvokeActivity processador para processar o feedback. Certifique-se de que devolve um código 200 status com um objeto JSON vazio como resposta.

O fragmento de código seguinte mostra como processar os comentários recebidos num bot que invocam e devolvem uma resposta com o código 200de status :

public async onInvokeActivity(context: TurnContext): Promise<InvokeResponse> {
    try {
      switch (context.activity.name) {
        case "message/submitAction":
           console.log('Your feedback is ' + JSON.stringify(context.activity.value))
           // Your feedback is {"actionName":"feedback","actionValue":{"reaction":"like","feedback":"{\"feedbackText\":\"This is my feedback.\"}"}}
           return CreateInvokeResponse(200, {});
        default:
          return {
            status: 200,
            body: `Unknown invoke activity handled as default- ${context.activity.name}`,
          };
      }
    } catch (err) {
      console.log(`Error in onInvokeActivity: ${err}`);
      return {
        status: 500,
        body: `Invoke activity received- ${context.activity.name}`,
      };
    }
  }

 export const CreateInvokeResponse = (
  status: number,
  body?: unknown
 ): InvokeResponse => {
    return { status, body };
 };

Armazene o feedback ao guardar os IDs de mensagens e o conteúdo das mensagens que o bot envia e recebe. Quando o bot recebe um pedido de invocação com feedback, corresponda o ID da mensagem ao feedback correspondente.

Observação

O Teams não armazena nem processa comentários. Não fornece uma API ou um mecanismo de armazenamento.

Se um utilizador desinstalar o bot e continuar a ter acesso ao chat do bot, o Teams remove os botões de feedback das mensagens do bot para impedir que o utilizador forneça comentários ao bot.

Tratamento de erros

Código de erro Descrição
400 message/submitAction A resposta de invocação não está vazia.

Rótulo de confidencialidade

As respostas do bot podem conter informações confidenciais ou estar acessíveis apenas a determinadas pessoas na organização. Adicione uma etiqueta de confidencialidade para ajudar os utilizadores a identificar a confidencialidade de uma mensagem, permitindo-lhes ter cuidado ao partilhá-la.

Captura de ecrã a mostrar uma etiqueta de confidencialidade do bot com tecnologia de IA.

Observação

Adicione uma etiqueta de confidencialidade às mensagens do bot apenas quando contêm informações confidenciais.

Adicionar etiqueta de confidencialidade

Para bots criados com a biblioteca de IA do Teams, a etiqueta de confidencialidade pode ser adicionada através da PredictedSayCommand ação. Para obter mais informações, veja SensitivityUsageInfo interface (Interface SensitivityUsageInfo).

Para bots criados com o SDK do Bot Framework, adicione uma etiqueta de confidencialidade à mensagem do bot ao modificar a mensagem a incluir usageInfo no entities objeto.

O fragmento de código seguinte mostra como adicionar etiquetas de confidencialidade a mensagens de bot e referência de citação:

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey, I'm a friendly AI bot. This message is generated through AI [1]`,
  entities: [
    {
      type: "https://schema.org/Message",
      "@type": "Message",
      "@context": "https://schema.org",
      usageInfo: {
        "@type": "CreativeWork",
        name: "Sensitivity title",
        description: "Sensitivity description",
      },
    },
  ],
});
Propriedade Tipo Obrigatório Descrição
usageInfo.@type Cadeia de caracteres ✔️ Ativa a etiqueta de confidencialidade na mensagem do bot.
citation.usageInfo.@id Cadeia de caracteres ✔️ Ativa a etiqueta de confidencialidade na referência de citação. É necessário ao adicionar a etiqueta de confidencialidade à referência de citação.
usageInfo.name Cadeia de caracteres ✔️ Especifica o título da etiqueta de confidencialidade.
usageInfo.description Cadeia de caracteres Especifica a mensagem de janela de pop-up que é apresentada quando um utilizador passa o rato sobre a etiqueta de confidencialidade.

Depois de adicionar a etiqueta de confidencialidade, a mensagem do bot apresenta um ícone de escudo. Os utilizadores podem pairar o rato sobre o ícone para ver uma exclusão de responsabilidade sobre a confidencialidade da mensagem.

Tratamento de erros

Código de erro Descrição
400 Várias entidades de mensagens de raiz encontradas na entities matriz.
400 Erro ao analisar a entidade da mensagem da entities matriz.
400 O valor de nível usageInfo.@id de citação não corresponde ao nível usageInfo.@id da mensagem em, pelo menos, uma instância.
400 Existem várias propriedades ao nível usageInfo da citação com o mesmo @id, mas as respetivas name propriedades e description são diferentes.

Modificar PredictedSayCommand

Para um bot criado com a biblioteca de IA do Teams, o PredictedSayCommand fornece controlo sobre como a etiqueta de IA, citação, botão de feedback e etiqueta de confidencialidade são adicionados à atividade do bot. Segue-se o fragmento de código para modificar PredictedSayCommand:

app.ai.action<PredictedSayCommand>(AI.SayCommandActionName, async (context, state, data, action) => {
  // custom logic here...
  await context.sendActivity(data.content);
  return "";
});

Para obter mais informações sobre PredictedSayCommando , veja PredictedSayCommand interface (Interface PredictedSayCommand).

Exemplos de código

Nome do exemplo Descrição Node.js .NET
Bot de conversas do Teams Esta aplicação de exemplo apresenta a etiqueta de IA, a citação, os botões de feedback e a etiqueta de confidencialidade nas mensagens. View NA
Azure OpenAI nos seus dados Este bot de conversação utiliza a biblioteca de IA do Teams e contém a etiqueta de IA, os botões de feedback, a etiqueta de confidencialidade e a citação nas mensagens geradas. NA Exibir

Confira também