Поделиться через


Сообщения бота с содержимым, созданным ИИ

Метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности в сообщениях бота повышают вовлеченность пользователей и повышают прозрачность и доверие.

  • Метка ИИ позволяет пользователям идентифицировать, что сообщение было создано с помощью ИИ.
  • Ссылки позволяют пользователям ссылаться на источник сообщения бота с помощью текстовых ссылок и ссылок.
  • Кнопки обратной связи позволяют пользователям предоставлять положительные или отрицательные отзывы в сообщениях бота.
  • Метка конфиденциальности позволяет пользователям понять конфиденциальность сообщения бота.

На следующих снимках экрана показано, как сообщения бота можно улучшить с помощью меток ИИ, ссылок, кнопок обратной связи и меток конфиденциальности.

Примечание.

Метка ИИ

Метка ИИ, добавленная в сообщение бота, указывает, что сообщение создается СИ. Боты ИИ используют большие языковые модели (LLM), которые, как правило, являются надежными, однако добавление метки ИИ предотвращает путаницу в источнике информации.

Снимок экрана: метка ИИ в сообщении бота.

Добавление метки ИИ

Для бота, созданного с помощью библиотеки ИИ Teams, метка ИИ автоматически включается для всех сообщений бота на основе ИИ в модуле ai в действии PredictedSayCommand . Дополнительные сведения см. в разделе Интерфейс AIEntity.

Если вы используете пакет SDK Microsoft Bot Framework для создания бота, добавьте additionalType в entities массив объекта сущности message . Ниже приведен пример фрагмента кода:

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
    }
  ]
});
Свойство Тип Обязательный Описание
additionalType Array Да Включает метку ИИ в сообщении бота. Единственное допустимое значение — AIGeneratedContent.

После добавления метки ИИ в сообщении бота рядом с именем бота отображается метка, созданная ИИ , с заявлением об отказе от наведении курсора на сообщение о том, что содержимое, созданное ИИ, может быть неправильным. Метку ИИ и заявление об отказе от ответственности нельзя настроить для ботов на основе ИИ.

Обработка ошибок

Код ошибки Описание
400 Несколько сущностей корневого сообщения, найденных в массиве entities
400 Ошибка синтаксического анализа сущности сообщения из entities массива

Цитаты

Важно процитировать источники сообщения бота, чтобы помочь пользователям задавать дальнейшие вопросы или проводить независимые исследования. Цитировать источники данных, такие как файлы, сообщения, сообщения электронной почты и рабочие элементы, чтобы предоставить пользователям ценные аналитические сведения. Ссылки важны для ботов, использующих такие методы, как получение дополненного поколения (RAG).

Снимок экрана: ответ бота ИИ с текстовой ссылкой.

Ссылки на сообщение бота включают текстовые ссылки, сведения для ссылки и метки конфиденциальности для содержимого, на которое ссылается ссылка.

  • Текстовые ссылки обозначают номера ссылок, добавленные в сообщение бота в формате [#], каждый из которых соответствует ссылке. Ссылку можно вставить в любом месте текста.
  • Сведения для ссылки на ссылку включают заголовок, ключевые слова, абстракт, гиперссылку и сведения о конфиденциальности. Ссылки отображаются в виде всплывающих окон для каждой текстовой ссылки.
  • Метки конфиденциальности для ссылок указывают на конфиденциальность ссылочного содержимого и не добавляются автоматически. Сведения о добавлении меток конфиденциальности для ссылок см. в статье Добавление метки конфиденциальности.

Примечание.

  • В сообщении отображается не более 10 ссылок.
  • Адаптивные карточки не отображаются во всплывающем окне ссылки. Однако адаптивные карточки можно отобразить в сообщении бота.

Добавление ссылок

Для ботов, созданных с помощью библиотеки ИИ Teams, ссылки добавляются в сообщение бота ИИ автоматически с помощью PredictedSayCommand действия. Вы также можете изменить действие, PredictedSayCommand чтобы добавить ссылки на сообщение бота. Дополнительные сведения см. в разделе Интерфейс ClientCitation.

Если вы используете пакет SDK Bot Framework для создания бота, добавьте в citationentities массив. Ниже приведен пример фрагмента кода:

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
        },
      },
    ],
  },
],
})
Свойство Тип Обязательный Описание
citation Объект Да Сведения о ссылке.
citation.@type String Да Объект ссылки. Единственное допустимое значение — Claim.
citation.position Integer Да Отображает номер ссылки. Значения ограничены менее чем восемью.
citation.appearance Объект Да Сведения о внешнем виде ссылки.
citation.appearance.@type String Да Объект внешнего вида ссылки. Единственное допустимое значение — DigitalDocument.
citation.appearance.name String Да Заголовок содержимого, на который ссылается ссылка.
citation.appearance.url String Нет URL-адрес содержимого, на который ссылается ссылка.
citation.appearance.abstract String Нет Извлекает содержимое, на который ссылается ссылка, и его размер ограничен менее чем 1000 символами.
citation.appearance.keywords Array Нет Ключевые слова из указанного содержимого. Нельзя добавить более трех ключевых слов.

После включения ссылок сообщение бота содержит текстовые ссылки и ссылки. Текстовые ссылки отображают сведения о ссылке при наведении указателя мыши на ссылку.

Обработка ошибок

Код ошибки Описание
400 Несколько сущностей корневого сообщения, найденных в массиве entities
400 Ошибка синтаксического анализа сущности сообщения из entities массива
400 Сообщение бота с более чем 10 цитатами
400 Объект appearance пуст.
400 Ошибка при синтаксическом анализе сущности ссылки с идентификатором: X

Кнопки обратной связи

Кнопки обратной связи в сообщениях бота имеют решающее значение для измерения вовлеченности пользователей, выявления ошибок и получения аналитических сведений о производительности бота. Эти аналитические сведения могут привести к целевому и эффективному улучшению возможностей общения бота. Включите кнопки обратной связи, чтобы разрешить пользователям любить или не любить сообщения, а также предоставлять подробные отзывы.

Снимок экрана: кнопки обратной связи в боте.

Когда пользователь нажимает кнопку обратной связи, отображается соответствующая форма обратной связи в зависимости от выбранного пользователем.

Снимок экрана: форма обратной связи в боте.

Кнопки обратной связи расположены в нижнем колонтитуле сообщения бота и включают кнопку 👍 (большие пальцы вверх) и кнопку 👎 (большие пальцы вниз) для выбора пользователем. Вы можете собирать отзывы об ответах бота из общения с одним на один и в групповых чатах.

Добавить кнопки обратной связи

Для бота, созданного с помощью библиотеки ИИ Teams, Teams включает кнопки обратной связи для всех сообщений бота, если enable_feedback_loop в модуле ai задано значение true .

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

Дополнительные сведения см. в разделе переменная приложения const.

После включения кнопок обратной связи все команды SAY от бота автоматически присвоили feedbackLoopEnabled значение true в объекте channelData .

Чтобы включить кнопки обратной связи в боте, созданном с помощью пакета SDK Bot Framework, добавьте channelData объект в сообщение бота feedbackLoopEnabledtrueи задайте для параметра значение .

await context.sendActivity({
  type: ActivityTypes.Message,
  text: `Hey! I'm a friendly AI bot!`,
  channelData: {
    feedbackLoopEnabled: true // Enable feedback buttons
  },
});
Свойство Тип Обязательный Описание
feedbackLoopEnabled Логический Да Включает кнопки обратной связи в сообщении бота

Обработка отзывов

Бот получает входные данные пользователя, полученные в форме обратной связи, через поток вызова бота.

Для бота, созданного с помощью библиотеки ИИ Teams, полученный вызов бота обрабатывается автоматически. Чтобы обработать обратную связь, используйте app.feedbackLoop метод для регистрации обработчика цикла обратной связи, вызываемого при отправке отзывов пользователем.

app.feedbackLoop(async (context, state, feedbackLoopData) => {
  // custom logic here...
});

Дополнительные сведения см. в статье асинхронная функция обратного вызова.

Для бота, созданного с помощью пакета SDK Bot Framework, необходимо иметь onInvokeActivity обработчик для обработки отзывов. Убедитесь, что в качестве ответа возвращается код состояния 200 с пустым объектом JSON.

В следующем фрагменте кода показано, как обрабатывать отзывы, полученные при вызове бота, и возвращать ответ с кодом состояния 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 };
 };

После получения отзывов важно хранить. Поэтому убедитесь, что хранятся идентификаторы сообщений и содержимое сообщений, которые бот отправляет и получает. Когда бот получает вызов, содержащий отзыв, совпадите идентификатор сообщения бота с соответствующим отзывом.

Примечание.

Teams не хранит и не обрабатывает отзывы, а также не предоставляет API или механизм хранения.

Если пользователь удаляет бот и по-прежнему имеет доступ к чату бота, Teams удаляет кнопки обратной связи из сообщений бота, чтобы запретить пользователю отправлять отзыв боту.

Обработка ошибок

Код ошибки Описание
400 message/submitAction Ответ invoke не пуст.

Метка конфиденциальности

Ответы бота могут содержать конфиденциальную информацию или доступную только определенным лицам в организации. Необходимо добавить метку конфиденциальности, чтобы помочь пользователям определить конфиденциальность сообщения, позволяя им проявлять осторожность при совместном использовании сообщения.

Снимок экрана: метка конфиденциальности бота ИИ.

Примечание.

Добавьте метку конфиденциальности в сообщения бота, только если они содержат конфиденциальную информацию.

Добавление метки конфиденциальности

Для ботов, созданных с помощью библиотеки ИИ Teams, метки конфиденциальности можно добавить с помощью PredictedSayCommand действия. Дополнительные сведения см. в разделе Интерфейс SensitivityUsageInfo.

Для ботов, созданных с помощью пакета SDK Bot Framework, добавьте метку конфиденциальности в сообщение бота, изменив сообщение для включения usageInfo в entities объект .

В следующем фрагменте кода показано, как добавить метки конфиденциальности как в сообщения бота, так и в ссылку на ссылки:

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",
      },
    },
  ],
});
Свойство Тип Обязательный Описание
usageInfo.@type String Да Включает метку конфиденциальности в сообщении бота.
citation.usageInfo.@id String Да Включает метку конфиденциальности в ссылке. Это необходимо при добавлении метки конфиденциальности в ссылку на ссылку.
usageInfo.name String Да Указывает заголовок метки конфиденциальности.
usageInfo.description String Нет Указывает сообщение всплывающего окна, которое появляется при наведении указателя мыши на метку конфиденциальности.

После добавления метки конфиденциальности сообщение бота содержит значок щита. Пользователи могут навести указатель мыши на значок, чтобы найти заявление об отказе от конфиденциальности сообщения.

Обработка ошибок

Код ошибки Описание
400 Несколько сущностей корневого сообщения, найденных в массиве entities
400 Ошибка синтаксического анализа сущности сообщения из entities массива
400 Значение уровня usageInfo.@id цитирования не соответствует уровню usageInfo.@id сообщения по крайней мере в одном экземпляре
400 Существует несколько свойств уровня usageInfo ссылки с одинаковыми @idсвойствами , но их name свойства и description отличаются.

Модифицировать PredictedSayCommand

Для бота, созданного с помощью библиотеки ИИ Teams, предоставляет контроль над тем, PredictedSayCommand как метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности добавляются в действия бота. Ниже приведен фрагмент кода для изменения PredictedSayCommand:

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

Дополнительные сведения о PredictedSayCommandсм. в разделе Интерфейс PredictedSayCommand.

Пример кода

Название примера Описание Node.js C#
Бот для беседы в Teams Этот пример приложения отображает метку ИИ, ссылки, кнопки обратной связи и метки конфиденциальности в сообщениях. Просмотр
TeamsAzureOpenAI Этот бот для общения использует библиотеку ИИ Teams и содержит метку ИИ, кнопки обратной связи, метку конфиденциальности и ссылки в созданных сообщениях. Просмотр

См. также