Compartir vía


Mejora de los mensajes de bot generados por IA

La etiqueta de IA, la cita, los botones de comentarios y la etiqueta de confidencialidad en los mensajes del bot mejoran la interacción del usuario y fomentan la transparencia y la confianza.

  • La etiqueta de IA permite a los usuarios identificar que el mensaje se generó mediante IA.
  • Cita permite a los usuarios hacer referencia al origen del mensaje del bot a través de citas y referencias en texto.
  • Los botones de comentarios permiten a los usuarios proporcionar comentarios positivos o negativos a los mensajes del bot.
  • La etiqueta de confidencialidad permite a los usuarios comprender la confidencialidad del mensaje del bot.

En las capturas de pantalla siguientes se muestra cómo se pueden mejorar los mensajes de bot con etiqueta de inteligencia artificial, cita, botones de comentarios y etiqueta de confidencialidad:

Antes

Captura de pantalla que muestra un mensaje de bot sin etiqueta de inteligencia artificial, cita, botones de comentarios y etiqueta de confidencialidad.

Después

Captura de pantalla que muestra un mensaje de bot con etiqueta de IA, cita, botones de comentarios y etiqueta de confidencialidad en el cliente de escritorio de Teams.

Nota:

  • La etiqueta de IA, la cita, los botones de comentarios y la etiqueta de confidencialidad están disponibles para los bots en chats personales, chats de grupo y canales.
  • La etiqueta de inteligencia artificial, la cita, los botones de comentarios y la etiqueta de confidencialidad están disponibles en los entornos de Government Community Cloud (GCC), GCC High y Department of Defense (DOD).

Etiqueta de IA

Una etiqueta de inteligencia artificial en el mensaje del bot indica que la inteligencia artificial la genera. Aunque los bots con tecnología de inteligencia artificial que usan modelos de lenguaje grande (LLM) suelen ser confiables, la etiqueta ayuda a evitar confusiones sobre el origen de la información.

Captura de pantalla que muestra una etiqueta de IA en un mensaje de bot.

Agregar etiqueta de IA

Si usa la biblioteca de inteligencia artificial de Teams para compilar el bot, la etiqueta de IA se habilita automáticamente para todos los mensajes de bot con tecnología de inteligencia artificial en el ai módulo dentro de la PredictedSayCommand acción. Para obtener más información, vea Interfaz de AIEntity.

Si usa Microsoft Bot Framework SDK para compilar el bot, incluya additionalType en la entities matriz del message objeto de entidad. El siguiente fragmento de código muestra cómo habilitar la etiqueta de IA en un mensaje 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
    }
  ]
});
Propiedad Tipo Obligatorio Descripción
additionalType Matriz Yes Habilita la etiqueta de IA en el mensaje del bot.
Valor permitido: AIGeneratedContent

Después de agregar una etiqueta de IA, el mensaje del bot muestra una etiqueta generada por IA junto al nombre del bot. Al mantener el puntero sobre la etiqueta de IA, aparece una declinación de responsabilidad que indica que el contenido generado por IA puede ser incorrecto. La etiqueta de IA y la declinación de responsabilidades no se pueden personalizar para los bots con tecnología de inteligencia artificial.

Control de errores

Código de error Descripción
400 Se han encontrado varias entidades de mensaje raíz en la entities matriz.
400 Error al analizar la entidad de mensaje de la entities matriz.

Citas

La cita de orígenes en mensajes de bot ayuda a los usuarios a formular preguntas de seguimiento o a realizar investigaciones independientes. Cite orígenes de datos como archivos, mensajes, correos electrónicos y elementos de trabajo para proporcionar información valiosa. Las citas son fundamentales para los bots que usan técnicas como la generación de Retrieval-Augmented (RAG).

Citas

Captura de pantalla que muestra una respuesta de bot con tecnología de inteligencia artificial con citas.

Ventana modal

Captura de pantalla que muestra una ventana emergente modal a partir de una cita en un mensaje de bot con tecnología de inteligencia artificial.

Las citas en los mensajes del bot pueden incluir lo siguiente:

  • Las citas en texto denotan los números de cita agregados al mensaje de bot en el formato [#], cada uno correspondiente a una referencia. Una cita se puede insertar en cualquier parte del texto.
  • Los detalles de la referencia de cita incluyen el título, el icono, las palabras clave, el resumen, el hipervínculo, la información de confidencialidad y un botón para abrir una ventana modal con contenido adicional. Las referencias aparecen como ventanas emergentes para cada cita en texto.
  • Las etiquetas de confidencialidad de las citas indican la confidencialidad del contenido de cita al que se hace referencia y no se agregan automáticamente. Para agregar etiquetas de confidencialidad para citas, consulte Agregar etiqueta de confidencialidad.
  • La ventana modal con contenido adicional representa una tarjeta adaptable sin ningún elemento interactivo.

Nota:

  • Un máximo de 20 citas se muestran en un mensaje.
  • Las citas con tarjetas adaptables están disponibles en versión preliminar para desarrolladores públicos.
  • Las tarjetas adaptables no se representan en la ventana emergente de citas. Sin embargo, las tarjetas adaptables se pueden representar en el mensaje del bot o en la ventana modal de la cita accesible desde la ventana emergente.

Agregar citas

Si usa la biblioteca de inteligencia artificial de Teams para compilar el bot, las citas se agregan a un mensaje de bot con tecnología de inteligencia artificial automáticamente a través de PredictedSayCommand la acción. También puede modificar la PredictedSayCommand acción para agregar citas al mensaje del bot. Para obtener más información, vea Interfaz ClientCitation.

Si usa bot framework SDK para compilar el bot, incluya citation en la entities matriz. A continuación se muestra un fragmento de código de ejemplo:

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"
        },
       },
      },
    ],
  },
],
})
Propiedad Tipo Obligatorio Descripción
citation Object ✔️ Detalles de la cita.
citation.@type Cadena ✔️ Objeto de la cita.
Valor permitido: Claim
citation.position Entero ✔️ Muestra el número de cita.
citation.appearance Objeto ✔️ Información sobre la apariencia de la cita.
citation.appearance.@type Cadena ✔️ Objeto de la apariencia de la cita.
Valor permitido: DigitalDocument
citation.appearance.name Cadena ✔️ Título del contenido al que se hace referencia. Caracteres máximos: 80
citation.appearance.url Cadena Dirección URL del contenido al que se hace referencia.
citation.appearance.abstract Cadena Resumen del contenido al que se hace referencia. Caracteres máximos: 160
citation.appearance.text Cadena Tarjeta adaptable con cadena con información adicional sobre la cita. Se representa dentro de la ventana modal accesible desde la ventana emergente.
citation.appearance.keywords Matriz Palabras clave del contenido al que se hace referencia. No puede agregar más de tres palabras clave. Cada palabra clave solo puede contener 28 caracteres.
citation.appearance.encodingFormat Cadena Formato de codificación del citation.appearance.text campo.
Valor permitido: application/vnd.microsoft.card.adaptive
citation.appearance.image Objeto Información sobre el icono de la cita.
citation.appearance.image.@type Cadena ✔️ Objeto del icono de cita. Debe ser ImageObject.
citation.appearance.image.name Cadena ✔️ Nombre del icono predefinido. Representa el icono de cita en los detalles de la referencia de cita.
Valores permitidos: Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft OneNote, Microsoft SharePoint, Microsoft Visio, Microsoft WhiteboardMicrosoft Loop, , Source Code, , Sketch, Adobe Illustrator, Adobe Photoshop, Adobe InDesign, Adobe Flash, Image, GIF, Video, Sound, ZIP, , TextPDF

Después de habilitar las citas, el mensaje del bot incluye citas y referencias en texto. Las citas en texto muestran los detalles de referencia cuando los usuarios mantienen el puntero sobre la cita.

Control de errores

Código de error Descripción
400 Se han encontrado varias entidades de mensaje raíz en la entities matriz.
400 Error al analizar la entidad de mensaje de la entities matriz.
400 Mensaje de bot con más de 20 citas.
400 El appearance objeto está vacío.
400 Error al analizar la entidad de cita con el identificador: X.

Botones de comentarios

Los botones de comentarios en los mensajes de bot son esenciales para realizar un seguimiento de la interacción del usuario, identificar errores y obtener información sobre el rendimiento del bot. Estas conclusiones permiten mejoras dirigidas de las funcionalidades conversacionales del bot. Habilite los botones de comentarios para permitir que a los usuarios les gusten o no les gusten los mensajes y proporcionen comentarios detallados.

Captura de pantalla que muestra los botones de comentarios de un bot.

Cuando el usuario selecciona un botón de comentarios, aparece un formulario de comentarios en función de la selección del usuario. Puedes usar el formulario de comentarios predeterminado o personalizarlo para satisfacer las necesidades de la aplicación.

Captura de pantalla que muestra el formulario de comentarios predeterminado en un bot.

Nota:

Los formularios de comentarios personalizables están disponibles en la versión preliminar para desarrolladores públicos.

Los botones de comentarios se encuentran en el pie de página del mensaje del bot e incluyen un 👍 botón (pulgar hacia arriba) y un 👎 botón (pulgar hacia abajo) que el usuario selecciona.

Agregar botones de comentarios

Para un bot creado mediante la biblioteca de inteligencia artificial de Teams, Teams habilita los botones de comentarios para todos los mensajes de bot cuando enable_feedback_loop se establece true en en el ai módulo.

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

Para obtener más información, consulte la variable de aplicación const.

Después de habilitar los botones de comentarios, todos los SAY comandos del bot tienen feedbackLoopEnabled en el channelData objeto establecido trueautomáticamente en .

Para habilitar los botones de comentarios en un bot creado mediante bot framework SDK, defina un feedbackLoop objeto bajo el channelData objeto del mensaje del bot.

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey! I'm a friendly AI bot!`,
  channelData: {
    feedbackLoop: { // Enable feedback buttons
        type: "custom"
  },
});
Propiedad Tipo Obligatorio Descripción
feedbackLoop Object ✔️ Habilita los botones de comentarios en el mensaje del bot.
feedbackLoop.type Cadena ✔️ Define el tipo de formulario de comentarios que aparece cuando un usuario selecciona los botones de comentarios.
Valores permitidos: custom, default

Si establece en feedbackLoop.typedefault, el formulario de comentarios predeterminado aparece cuando un usuario selecciona los botones de comentarios. Si desea mostrar un formulario de comentarios personalizado, establezca en feedbackLoop.typecustom. La siguiente solicitud de invocación se envía al bot para recuperar un formulario personalizado que se mostrará al usuario:

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

Debe responder a esta llamada de invocación con un cuadro de diálogo (denominados módulos de tareas en TeamsJS v1.x), de la misma manera que respondería a una task/fetch invocación. Para obtener más información sobre cómo invocar diálogos en bots, consulte Uso de diálogos con bots.

Control de comentarios

El bot recibe la entrada del usuario del formulario de comentarios a través de un flujo de invocación de bot. En el caso de los bots creados con la biblioteca de inteligencia artificial de Teams, la solicitud de invocación de bot se controla automáticamente. Para controlar los comentarios, use el app.feedbackLoop método para registrar un controlador de bucles de comentarios al que se llamará cuando el usuario proporcione comentarios.

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

Para obtener más información, vea la función de devolución de llamada asincrónica.

Para un bot creado con Bot Framework SDK, debe tener un onInvokeActivity controlador para procesar los comentarios. Asegúrese de devolver un código 200 de estado con un objeto JSON vacío como respuesta.

El siguiente fragmento de código muestra cómo controlar los comentarios recibidos en una invocación de bot y devolver una respuesta con el código 200de estado :

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

Almacene los comentarios guardando los identificadores de mensaje y el contenido de los mensajes que el bot envía y recibe. Cuando el bot obtiene una solicitud de invocación con comentarios, coincide con el identificador de mensaje con los comentarios correspondientes.

Nota:

Teams no almacena ni procesa comentarios. No proporciona una API ni un mecanismo de almacenamiento.

Si un usuario desinstala el bot y sigue teniendo acceso al chat del bot, Teams quita los botones de comentarios de los mensajes del bot para evitar que el usuario proporcione comentarios al bot.

Control de errores

Código de error Descripción
400 message/submitAction invoke response no está vacío.

Etiqueta de confidencialidad

Las respuestas de bots pueden contener información confidencial o ser accesibles solo para determinadas personas dentro de la organización. Agregue una etiqueta de confidencialidad para ayudar a los usuarios a identificar la confidencialidad de un mensaje, lo que les permite tener precaución al compartirlo.

Captura de pantalla que muestra una etiqueta de confidencialidad de bots con tecnología de inteligencia artificial.

Nota:

Agregue una etiqueta de confidencialidad a los mensajes del bot solo cuando contengan información confidencial.

Agregar etiqueta de confidencialidad

En el caso de los bots creados con la biblioteca de inteligencia artificial de Teams, la etiqueta de confidencialidad se puede agregar a través de PredictedSayCommand la acción. Para obtener más información, vea SensitivityUsageInfo (interfaz).

En el caso de los bots creados con Bot Framework SDK, agregue una etiqueta de confidencialidad al mensaje del bot modificando el mensaje para incluirlo usageInfo en el entities objeto.

El siguiente fragmento de código muestra cómo agregar etiquetas de confidencialidad a los mensajes de bot y a la referencia de citas:

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",
      },
    },
  ],
});
Propiedad Tipo Obligatorio Descripción
usageInfo.@type Cadena ✔️ Habilita la etiqueta de confidencialidad en el mensaje del bot.
citation.usageInfo.@id Cadena ✔️ Habilita la etiqueta de confidencialidad en la referencia de cita. Es necesario al agregar la etiqueta de confidencialidad a la referencia de cita.
usageInfo.name Cadena ✔️ Especifica el título de la etiqueta de confidencialidad.
usageInfo.description Cadena Especifica el mensaje de ventana emergente que aparece cuando un usuario mantiene el puntero sobre la etiqueta de confidencialidad.

Después de agregar la etiqueta de confidencialidad, el mensaje del bot muestra un icono de escudo. Los usuarios pueden mantener el puntero sobre el icono para ver una declinación de responsabilidades sobre la confidencialidad del mensaje.

Control de errores

Código de error Descripción
400 Se han encontrado varias entidades de mensaje raíz en la entities matriz.
400 Error al analizar la entidad de mensaje de la entities matriz.
400 El valor de nivel usageInfo.@id de cita no coincide con el nivel usageInfo.@id de mensaje en al menos una instancia.
400 Hay varias propiedades de nivel usageInfo de cita con el mismo @id, pero sus name propiedades y description son diferentes.

Modificar PredictedSayCommand

Para un bot creado mediante la PredictedSayCommand biblioteca de inteligencia artificial de Teams, proporciona control sobre cómo se agregan la etiqueta de IA, la cita, el botón de comentarios y la etiqueta de confidencialidad a la actividad del bot. A continuación se muestra el 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 obtener más información sobre PredictedSayCommand, vea PredictedSayCommand interface.

Ejemplos de código

Ejemplo de nombre Descripción Node.js .NET
Bot de conversación de Teams Esta aplicación de ejemplo muestra la etiqueta de IA, la cita, los botones de comentarios y la etiqueta de confidencialidad en los mensajes. View ND
Azure OpenAI en los datos Este bot conversacional usa la biblioteca de inteligencia artificial de Teams y contiene la etiqueta de IA, los botones de comentarios, la etiqueta de confidencialidad y la cita en sus mensajes generados. ND Ver

Consulte también