Partager via


Améliorer les messages de bot générés par l’IA

L’étiquette IA, la citation, les boutons de commentaires et l’étiquette de confidentialité dans les messages de votre bot améliorent l’engagement des utilisateurs et favorisent la transparence et la confiance.

  • L’étiquette IA permet aux utilisateurs d’identifier que le message a été généré à l’aide de l’IA.
  • Citation permet aux utilisateurs de faire référence à la source du message du bot par le biais de citations et de références dans le texte.
  • Les boutons de commentaires permettent aux utilisateurs de fournir des commentaires positifs ou négatifs aux messages du bot.
  • L’étiquette de confidentialité permet aux utilisateurs de comprendre la confidentialité du message du bot.

Les captures d’écran suivantes montrent comment les messages de bot peuvent être améliorés avec l’étiquette IA, la citation, les boutons de commentaires et l’étiquette de confidentialité :

Avant

Capture d’écran montrant un message de bot sans étiquette IA, citation, boutons de commentaires et étiquette de confidentialité.

Après

Capture d’écran montrant un message de bot avec une étiquette IA, une citation, des boutons de commentaires et une étiquette de confidentialité dans le client de bureau Teams.

Remarque

  • L’étiquette d’IA, la citation, les boutons de commentaires et l’étiquette de confidentialité sont disponibles pour les bots dans les conversations personnelles, les conversations de groupe et les canaux.
  • Les étiquettes d’IA, les citations, les boutons de commentaires et l’étiquette de confidentialité sont disponibles dans les environnements Cloud de la communauté du secteur public (GCC), GCC High et Department of Defense (DOD).

Étiquette IA

Une étiquette IA sur le message de votre bot indique qu’il est généré par l’IA. Bien que les bots basés sur l’IA qui utilisent des modèles llm (Large Language Models) soient généralement fiables, l’étiquette permet d’éviter toute confusion au sujet de la source des informations.

Capture d’écran montrant une étiquette IA dans un message de bot.

Ajouter une étiquette IA

Si vous utilisez la bibliothèque IA Teams pour générer votre bot, l’étiquette IA est automatiquement activée pour tous les messages de bot basés sur l’IA dans le ai module au sein de l’action PredictedSayCommand . Pour plus d’informations, consultez Interface AIEntity.

Si vous utilisez Microsoft Bot Framework SDK pour générer votre bot, incluez additionalType sous le entities tableau de l’objet d’entitémessage. L’extrait de code suivant montre comment activer l’étiquette IA dans un message 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
    }
  ]
});
Propriété Type Requis Description
additionalType Tableau Oui Active l’étiquette IA dans le message du bot.
Valeur autorisée : AIGeneratedContent

Une fois que vous avez ajouté une étiquette IA, le message de votre bot affiche une étiquette générée par l’IA en regard du nom du bot. Lorsque vous pointez sur l’étiquette IA, une clause d’exclusion de responsabilité s’affiche indiquant que le contenu généré par l’IA peut être incorrect. L’étiquette IA et la clause d’exclusion de responsabilité ne peuvent pas être personnalisées pour les bots basés sur l’IA.

Gestion des erreurs

Code d'erreur Description
400 Plusieurs entités de message racine trouvées sous le entities tableau.
400 Erreur lors de l’analyse de l’entité de message à partir du entities tableau.

Citations

La citation de sources dans les messages de bot permet aux utilisateurs de poser des questions de suivi ou de mener des recherches indépendantes. Citez des sources de données telles que des fichiers, des messages, des e-mails et des éléments de travail pour fournir des informations précieuses. Les citations sont cruciales pour les bots utilisant des techniques telles que Retrieval-Augmented Generation (RAG).

Citations

Capture d’écran montrant une réponse de bot basée sur l’IA avec des citations.

Fenêtre modale

Capture d’écran montrant une fenêtre modale contextuelle à partir d’une citation dans un message de bot basé sur l’IA.

Les citations dans les messages de votre bot peuvent inclure les éléments suivants :

  • Les citations dans le texte indiquent les numéros de citation ajoutés au message du bot au format [#], chacun correspondant à une référence. Une citation peut être insérée n’importe où dans le texte.
  • Les détails de la référence de citation incluent le titre, l’icône, les mots clés, le résumé, le lien hypertexte, les informations de confidentialité et un bouton pour ouvrir une fenêtre modale avec du contenu supplémentaire. Les références apparaissent sous forme de fenêtres contextuelles pour chaque citation en texte.
  • Les étiquettes de confidentialité aux citations indiquent la confidentialité du contenu de citation référencé et ne sont pas ajoutées automatiquement. Pour ajouter des étiquettes de confidentialité pour les citations, consultez Ajouter une étiquette de confidentialité.
  • La fenêtre modale avec du contenu supplémentaire affiche une carte adaptative sans aucun élément interactif.

Remarque

  • Un maximum de 20 citations sont affichées dans un message.
  • Les citations avec cartes adaptatives sont disponibles en préversion publique pour les développeurs.
  • Les cartes adaptatives ne sont pas affichées dans la fenêtre contextuelle de citation. Toutefois, les cartes adaptatives peuvent être affichées dans le message du bot ou dans la fenêtre modale de la citation accessible à partir de la fenêtre contextuelle.

Ajouter des citations

Si vous utilisez la bibliothèque IA Teams pour générer votre bot, des citations sont automatiquement ajoutées à un message de bot alimenté par l’IA par PredictedSayCommand action. Vous pouvez également modifier l’action PredictedSayCommand pour ajouter des citations à votre message de bot. Pour plus d’informations, consultez Interface ClientCitation.

Si vous utilisez le Kit de développement logiciel (SDK) Bot Framework pour générer votre bot, incluez citation sous le entities tableau . Voici un exemple d’extrait de code :

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"
        },
       },
      },
    ],
  },
],
})
Propriété Type Requis Description
citation Objet ✔️ Détails de la citation.
citation.@type String ✔️ Objet de la citation.
Valeur autorisée : Claim
citation.position Entier ✔️ Affiche le numéro de citation.
citation.appearance Objet ✔️ Informations sur l’apparence de la citation.
citation.appearance.@type String ✔️ Objet de l’apparence de la citation.
Valeur autorisée : DigitalDocument
citation.appearance.name String ✔️ Titre du contenu référencé. Nombre maximal de caractères : 80
citation.appearance.url String URL du contenu référencé.
citation.appearance.abstract String Résumé du contenu référencé. Nombre maximal de caractères : 160
citation.appearance.text String Carte adaptative stringifiée avec des informations supplémentaires sur la citation. Il s’affiche dans la fenêtre modale accessible à partir de la fenêtre contextuelle.
citation.appearance.keywords Tableau Mots clés du contenu référencé. Vous ne pouvez pas ajouter plus de trois mots clés. Chaque mot clé ne peut contenir que 28 caractères.
citation.appearance.encodingFormat String Format d’encodage du citation.appearance.text champ.
Valeur autorisée : application/vnd.microsoft.card.adaptive
citation.appearance.image Objet Informations sur l’icône de la citation.
citation.appearance.image.@type String ✔️ Objet de l’icône de citation. Doit être ImageObject.
citation.appearance.image.name String ✔️ Nom de l’icône prédéfinie. Il affiche l’icône de citation dans les détails de la référence de citation.
Valeurs autorisées : Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft OneNote, Microsoft VisioMicrosoft SharePoint, Microsoft LoopSource CodeSketchAdobe IllustratorAdobe InDesignImageAdobe FlashGIFVideoAdobe PhotoshopMicrosoft Whiteboard, , Sound, ZIP, , TextPDF

Une fois que vous avez activé les citations, le message du bot inclut des citations et des références dans le texte. Les citations dans le texte affichent les détails de référence lorsque les utilisateurs pointent sur la citation.

Gestion des erreurs

Code d'erreur Description
400 Plusieurs entités de message racine trouvées sous le entities tableau.
400 Erreur lors de l’analyse de l’entité de message à partir du entities tableau.
400 Message de bot avec plus de 20 citations.
400 L’objet appearance est vide.
400 Erreur lors de l’analyse de l’entité de citation avec l’ID : X.

Boutons de commentaires

Les boutons de commentaires dans les messages de bot sont essentiels pour suivre l’engagement des utilisateurs, identifier les erreurs et obtenir des insights sur les performances des bots. Ces insights permettent des améliorations ciblées des fonctionnalités de conversation du bot. Activez les boutons de commentaires pour permettre aux utilisateurs d’aimer ou de ne pas aimer les messages et de fournir des commentaires détaillés.

Capture d’écran montrant les boutons de commentaires dans un bot.

Lorsque l’utilisateur sélectionne un bouton de commentaires, un formulaire de commentaires s’affiche en fonction de la sélection de l’utilisateur. Vous pouvez utiliser le formulaire de commentaires par défaut ou le personnaliser en fonction des besoins de votre application.

Capture d’écran montrant le formulaire de commentaires par défaut dans un bot.

Remarque

Les formulaires de commentaires personnalisables sont disponibles dans la préversion publique pour les développeurs.

Les boutons de commentaires se trouvent au pied de page du message du bot et incluent un 👍 bouton (pouce vers le haut) et un 👎 bouton (pouce vers le bas) que l’utilisateur sélectionne.

Ajouter des boutons de commentaires

Pour un bot créé à l’aide de la bibliothèque d’IA Teams, Teams active les boutons de commentaires pour tous les messages du bot quand enable_feedback_loop est défini sur true dans le ai module.

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

Pour plus d’informations, consultez la variable d’application const.

Une fois que vous avez activé les boutons de commentaires, toutes les SAY commandes du bot ont feedbackLoopEnabled dans l’objet channelData automatiquement défini sur true.

Pour activer les boutons de commentaires dans un bot créé à l’aide du Kit de développement logiciel (SDK) Bot Framework, définissez un feedbackLoop objet sous l’objet channelData de votre message de bot.

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey! I'm a friendly AI bot!`,
  channelData: {
    feedbackLoop: { // Enable feedback buttons
        type: "custom"
  },
});
Propriété Type Requis Description
feedbackLoop Objet ✔️ Active les boutons de commentaires dans le message du bot.
feedbackLoop.type String ✔️ Définit le type de formulaire de commentaires qui s’affiche lorsqu’un utilisateur sélectionne les boutons de commentaires.
Valeurs autorisées : custom, default

Si vous définissez feedbackLoop.typedefaultsur , le formulaire de commentaires par défaut s’affiche lorsqu’un utilisateur sélectionne les boutons de commentaires. Si vous souhaitez afficher un formulaire de commentaires personnalisé, définissez sur feedbackLoop.typecustom. La demande d’appel suivante est envoyée au bot pour récupérer un formulaire personnalisé à afficher à l’utilisateur :

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

Vous devez répondre à cet appel d’appel avec une boîte de dialogue (appelée modules de tâche dans TeamsJS v1.x), de la même façon que vous répondriez à un task/fetch appel. Pour plus d’informations sur l’appel de dialogues dans les bots, consultez Utiliser des dialogues avec des bots.

Gérer les commentaires

Le bot reçoit les entrées utilisateur du formulaire de commentaires par le biais d’un flux d’appel de bot. Pour les bots créés à l’aide de la bibliothèque IA Teams, la demande d’appel de bot est gérée automatiquement. Pour gérer les commentaires, utilisez la app.feedbackLoop méthode pour inscrire un gestionnaire de boucles de commentaires à appeler lorsque l’utilisateur fournit des commentaires.

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

Pour plus d’informations, consultez la fonction de rappel asynchrone.

Pour un bot créé à l’aide du Kit de développement logiciel (SDK) Bot Framework, vous devez disposer d’un onInvokeActivity gestionnaire pour traiter les commentaires. Veillez à renvoyer un code 200 status avec un objet JSON vide en tant que réponse.

L’extrait de code suivant montre comment gérer les commentaires reçus dans un appel de bot et retourner une réponse avec le code 200status :

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 };
 };

Stockez les commentaires en enregistrant les ID de message et le contenu des messages que votre bot envoie et reçoit. Lorsque votre bot reçoit une demande d’appel avec des commentaires, faites correspondre l’ID du message avec les commentaires correspondants.

Remarque

Teams ne stocke ni ne traite les commentaires. Il ne fournit pas d’API ou de mécanisme de stockage.

Si un utilisateur désinstalle votre bot et a toujours accès à la conversation du bot, Teams supprime les boutons de commentaires des messages du bot pour empêcher l’utilisateur de fournir des commentaires au bot.

Gestion des erreurs

Code d'erreur Description
400 message/submitAction invoke response n’est pas vide.

Étiquette de confidentialité

Les réponses du bot peuvent contenir des informations confidentielles ou être accessibles uniquement à certaines personnes au sein du organization. Ajoutez une étiquette de confidentialité pour aider les utilisateurs à identifier la confidentialité d’un message, ce qui leur permet de faire preuve de prudence lors du partage de celui-ci.

Capture d’écran montrant une étiquette de confidentialité de bot basée sur l’IA.

Remarque

Ajoutez une étiquette de confidentialité aux messages de votre bot uniquement lorsqu’ils contiennent des informations sensibles.

Ajouter une étiquette de confidentialité

Pour les bots créés à l’aide de la bibliothèque IA Teams, l’étiquette de confidentialité peut être ajoutée par PredictedSayCommand action. Pour plus d’informations, consultez Interface SensitivityUsageInfo.

Pour les bots créés à l’aide du Kit de développement logiciel (SDK) Bot Framework, ajoutez une étiquette de confidentialité à votre message de bot en modifiant le message à inclure usageInfo dans l’objet entities .

L’extrait de code suivant montre comment ajouter des étiquettes de confidentialité aux messages de bot et aux références de citation :

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",
      },
    },
  ],
});
Propriété Type Requis Description
usageInfo.@type String ✔️ Active l’étiquette de confidentialité dans le message du bot.
citation.usageInfo.@id String ✔️ Active l’étiquette de confidentialité dans la référence de citation. Elle est requise lors de l’ajout d’une étiquette de confidentialité à la référence de citation.
usageInfo.name String ✔️ Spécifie le titre de l’étiquette de confidentialité.
usageInfo.description String Spécifie le message de fenêtre contextuelle qui s’affiche lorsqu’un utilisateur pointe sur l’étiquette de confidentialité.

Une fois que vous avez ajouté l’étiquette de confidentialité, votre message de bot affiche une icône de bouclier. Les utilisateurs peuvent pointer sur l’icône pour afficher une clause d’exclusion de responsabilité concernant la sensibilité du message.

Gestion des erreurs

Code d'erreur Description
400 Plusieurs entités de message racine trouvées sous le entities tableau.
400 Erreur lors de l’analyse de l’entité de message à partir du entities tableau.
400 La valeur du niveau usageInfo.@id de citation ne correspond pas au niveau usageInfo.@id du message dans au moins un instance.
400 Il existe plusieurs propriétés au niveau usageInfo de la citation avec le même @id, mais leurs name propriétés et description sont différentes.

Modifier PredictedSayCommand

Pour un bot créé à l’aide de la bibliothèque IA Teams, le permet de contrôler la façon dont l’étiquette IA, la PredictedSayCommand citation, le bouton de commentaires et l’étiquette de confidentialité sont ajoutés à l’activité du bot. Voici l’extrait de code à modifier PredictedSayCommand:

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

Pour plus d’informations sur , consultez l’interface PredictedSayCommandPredictedSayCommand.

Exemples de code

Exemple de nom Description Node.js .NET
Bot de conversation Teams Cet exemple d’application affiche l’étiquette IA, la citation, les boutons de commentaires et l’étiquette de confidentialité dans les messages. View N/A
Azure OpenAI sur vos données Ce bot conversationnel utilise la bibliothèque IA Teams et contient l’étiquette IA, les boutons de commentaires, l’étiquette de confidentialité et la citation dans ses messages générés. N/A View

Voir aussi