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:
Observação
- A etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade estão disponíveis para bots em conversas pessoais, conversas de grupo e canais.
- A etiqueta de IA, citação, botões de feedback e etiqueta de confidencialidade estão disponíveis em ambientes de Cloud da Comunidade Governamental (GCC), GCC High e Departamento de Defesa (DOD ).
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.
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).
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 OneNote Microsoft PowerPoint , Microsoft SharePoint , Microsoft Visio , Microsoft Loop , Microsoft Whiteboard , Source Code , Adobe Illustrator Sketch , , Adobe Photoshop , Adobe InDesign , , Adobe Flash , Image , , GIF , , Video , Sound , , , Text ZIP PDF |
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.
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.
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 200
de 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.
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 PredictedSayCommand
o , 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 |