Сообщения бота с содержимым, созданным ИИ
Метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности в сообщениях бота повышают вовлеченность пользователей и повышают прозрачность и доверие.
- Метка ИИ позволяет пользователям идентифицировать, что сообщение было создано с помощью ИИ.
- Ссылки позволяют пользователям ссылаться на источник сообщения бота с помощью текстовых ссылок и ссылок.
- Кнопки обратной связи позволяют пользователям предоставлять положительные или отрицательные отзывы в сообщениях бота.
- Метка конфиденциальности позволяет пользователям понять конфиденциальность сообщения бота.
На следующих снимках экрана показано, как сообщения бота можно улучшить с помощью меток ИИ, ссылок, кнопок обратной связи и меток конфиденциальности.
Примечание.
- Метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности доступны в общедоступной предварительной версии для разработчиков для чатов "один на один" и групповых чатов, но не поддерживаются в каналах.
- Метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности доступны только в веб-клиентах и настольных клиентах Teams.
- Метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности доступны в средах Сообщества государственных организаций (GCC), GCC High и Министерства обороны (DOD).
Метка ИИ
Метка ИИ, добавленная в сообщение бота, указывает, что сообщение создается СИ. Боты ИИ используют большие языковые модели (LLM), которые, как правило, являются надежными, однако добавление метки ИИ предотвращает путаницу в источнике информации.
Добавление метки ИИ
Для бота, созданного с помощью библиотеки ИИ Teams, метка ИИ автоматически включается для всех сообщений бота на основе ИИ в модуле ai
в действии PredictedSayCommand
. Дополнительные сведения см. в разделе Интерфейс AIEntity.
Если вы используете пакет SDK для Microsoft Bot Framework для создания ботаentities
, добавьте additionalType
в массив объекта сущности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 . |
После добавления метки ИИ в сообщении бота рядом с именем бота отображается метка, созданная ИИ , с заявлением об отказе от наведении курсора на сообщение о том, что содержимое, созданное ИИ, может быть неправильным. Метку ИИ и заявление об отказе от ответственности нельзя настроить для ботов на основе ИИ.
Примечание.
Метка , созданная ИИ , доступна только при отправке нового сообщения с помощью SendActivity
. При обновлении сообщения с помощью UpdateActivity
добавляется метка Edited .
Обработка ошибок
Код ошибки | Описание |
---|---|
400 | Несколько сущностей корневого сообщения, найденных в массиве entities |
400 | Ошибка синтаксического анализа сущности сообщения из entities массива |
Цитаты
Важно процитировать источники сообщения бота, чтобы помочь пользователям задавать дальнейшие вопросы или проводить независимые исследования. Цитировать источники данных, такие как файлы, сообщения, сообщения электронной почты и рабочие элементы, чтобы предоставить пользователям ценные аналитические сведения. Ссылки важны для ботов, использующих такие методы, как получение дополненного поколения (RAG).
Ссылки на сообщение бота включают текстовые ссылки, сведения для ссылки и метки конфиденциальности для содержимого, на которое ссылается ссылка.
- Текстовые ссылки обозначают номера ссылок, добавленные в сообщение бота в формате [#], каждый из которых соответствует ссылке. Ссылку можно вставить в любом месте текста.
- Сведения для ссылки на ссылку включают заголовок, ключевые слова, абстракт, гиперссылку и сведения о конфиденциальности. Ссылки отображаются в виде всплывающих окон для каждой текстовой ссылки.
- Метки конфиденциальности для ссылок указывают на конфиденциальность ссылочного содержимого и не добавляются автоматически. Сведения о добавлении меток конфиденциальности для ссылок см. в статье Добавление метки конфиденциальности.
Примечание.
- В сообщении отображается не более 10 ссылок.
- Адаптивные карточки не отображаются во всплывающем окне ссылки. Однако адаптивные карточки можно отобразить в сообщении бота.
Добавление ссылок
Для ботов, созданных с помощью библиотеки ИИ Teams, ссылки добавляются в сообщение бота ИИ автоматически с помощью PredictedSayCommand
действия. Вы также можете изменить действие, PredictedSayCommand
чтобы добавить ссылки на сообщение бота. Дополнительные сведения см. в разделе Интерфейс ClientCitation.
Если вы используете пакет SDK Bot Framework для создания бота, добавьте в citation
entities
массив. Ниже приведен пример фрагмента кода:
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
объект в сообщение бота feedbackLoopEnabled
true
и задайте для параметра значение .
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 и содержит метку ИИ, кнопки обратной связи, метку конфиденциальности и ссылки в созданных сообщениях. | Просмотр |
См. также
Platform Docs