Bot messages with AI-generated content (Mensagens de bot com conteúdo gerado por IA)
As etiquetas de IA, citações, botões de feedback e etiquetas 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.
- As citações permitem 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 feedback positivo ou negativo à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 etiquetas de IA, citações, botões de feedback e etiquetas de confidencialidade:
Observação
- As etiquetas de IA, citações, botões de feedback e etiquetas de confidencialidade estão disponíveis na pré-visualização do programador público para conversas um-a-um e de grupo, mas não são suportadas em canais.
- A etiqueta de IA, citações, botões de feedback e etiquetas de confidencialidade só estão disponíveis em clientes web e de ambiente de trabalho do Teams.
- As etiquetas de IA, citações, botões de feedback e etiquetas de confidencialidade estão disponíveis em ambientes GCC (Government Community Cloud), GCC High e Department of Defense (DOD ).
Etiqueta de IA
Uma etiqueta de IA adicionada à mensagem do bot especifica que a mensagem é gerada pela IA. Os bots de IA utilizam Modelos de Linguagem Grande (LLMs) que são geralmente fiáveis, no entanto, adicionar uma etiqueta de IA impede a confusão sobre a origem das informações.
Adicionar etiqueta de IA
Para um bot criado com a biblioteca de IA do Teams, uma 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 o SDK do Microsoft Bot Framework para criar o bot, inclua additionalType
na entities
matriz do message
objeto de entidade. 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 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. O único valor permitido é AIGeneratedContent . |
Depois de uma etiqueta de IA ser adicionada, a mensagem do bot apresenta uma etiqueta gerada por IA junto ao nome do bot com uma exclusão de responsabilidade que indica 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
É importante citar as fontes da mensagem do bot para ajudar 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 aos utilizadores. As citações são importantes para bots que utilizam técnicas como a Geração Aumentada de Obtenção (RAG).
As citações à sua mensagem de bot incluem citações em texto, detalhes da referência de citação e etiquetas de confidencialidade para o conteúdo referenciado.
- 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, palavras-chave, uma informação abstrata, hiperligação e confidencialidade. 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.
Observação
- Um máximo de 10 citações são apresentadas numa mensagem.
- 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.
Adicionar citações
Para bots criados com a biblioteca de IA do Teams, as citações são adicionadas automaticamente a uma mensagem de bot de IA através da PredictedSayCommand
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
keywords: ["keyword 1", "keyword 2", "keyword 3"], // Appears in the citation pop-up window
},
},
],
},
],
})
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
citation |
Objeto | Sim | Detalhes da citação. |
citation.@type |
Cadeia de caracteres | Sim | Objeto da citação. O único valor permitido é Claim . |
citation.position |
Número inteiro | Sim | Apresenta o número da citação. Os valores estão limitados a menos de oito. |
citation.appearance |
Objeto | Sim | Informação sobre o aparecimento da citação. |
citation.appearance.@type |
Cadeia de caracteres | Sim | Objeto do aspeto da citação. O único valor permitido é DigitalDocument . |
citation.appearance.name |
Cadeia de caracteres | Sim | Título do conteúdo referenciado. |
citation.appearance.url |
Cadeia de caracteres | Não | URL do conteúdo referenciado. |
citation.appearance.abstract |
Cadeia de caracteres | Não | Extração do conteúdo referenciado e está limitado a menos de 1000 carateres. |
citation.appearance.keywords |
Matriz | Não | Palavras-chave do conteúdo referenciado. Não pode adicionar mais do que três palavras-chave. |
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 10 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 cruciais para medir o envolvimento do utilizador, identificar erros e obter informações sobre o desempenho do bot. Estas informações podem levar a melhoramentos direcionados e eficazes 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 respetivo formulário de feedback com base na seleção do utilizador.
Os botões de feedback estão localizados no rodapé da mensagem do bot e incluem um 👍 botão (polegar para cima) e um 👎 botão (polegar para baixo) para o utilizador escolher. Pode recolher feedback sobre as respostas do bot a partir de conversas um-para-um e de grupo.
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 comandos SAY do bot são feedbackLoopEnabled
definidos automaticamente como true
no channelData
objeto.
Para ativar os botões de feedback num bot criado com o SDK do Bot Framework, adicione um channelData
objeto na mensagem do bot e defina o valor de feedbackLoopEnabled
como true
.
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey! I'm a friendly AI bot!`,
channelData: {
feedbackLoopEnabled: true // Enable feedback buttons
},
});
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
feedbackLoopEnabled |
Booliano | Sim | Ativa os botões de feedback na mensagem do bot |
Processar comentários
O bot recebe a entrada do utilizador, recebida no formulário de feedback, através de um fluxo de invocação de bot.
Para um bot criado com a biblioteca de IA do Teams, a invocação do bot recebida é processada automaticamente. Para processar comentários, utilize o app.feedbackLoop
método para registar um processador de ciclos de comentários chamado quando o utilizador fornecer feedback.
app.feedbackLoop(async (context, state, 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 de estado 200 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 de estado 200:
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 };
};
É importante armazenar comentários depois de o receber. Assim, certifique-se de que armazena os IDs da mensagem e o conteúdo das mensagens que o bot envia e recebe. Quando o bot recebe uma invocação que contém comentários, corresponda ao ID da mensagem do bot com o feedback correspondente.
Observação
O Teams não armazena nem processa comentários, nem 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 apenas acessíveis a determinadas pessoas na organização. Tem de adicionar uma etiqueta de confidencialidade para ajudar os utilizadores a identificar a confidencialidade de uma mensagem, permitindo-lhes ter cuidado ao partilhar a mensagem.
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, as etiquetas de confidencialidade podem ser adicionadas 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 | Sim | Ativa a etiqueta de confidencialidade na mensagem do bot. |
citation.usageInfo.@id |
Cadeia de caracteres | Sim | 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 | Sim | Especifica o título da etiqueta de confidencialidade. |
usageInfo.description |
Cadeia de caracteres | Não | 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 contém um ícone de escudo. Os utilizadores podem pairar o rato sobre o ícone para encontrar 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 as etiquetas de IA, citações, botões de feedback e etiquetas de confidencialidade são adicionadas à 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).
Exemplo de código
Nome do exemplo | Descrição | Node.js | C# |
---|---|---|---|
Bot de conversas do Teams | Esta aplicação de exemplo apresenta a etiqueta de IA, citações, botões de feedback e etiquetas de confidencialidade nas mensagens. | View | |
TeamsAzureOpenAI | 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 as citações nas mensagens geradas. | Exibir |