Улучшение сообщений бота, созданных ИИ
Метка ИИ, ссылка, кнопки обратной связи и метка конфиденциальности в сообщениях бота повышают вовлеченность пользователей и повышают прозрачность и доверие.
- Метка ИИ позволяет пользователям идентифицировать, что сообщение было создано с помощью ИИ.
- Ссылка позволяет пользователям ссылаться на источник сообщения бота с помощью текстовых ссылок и ссылок.
- Кнопки обратной связи позволяют пользователям предоставлять положительные или отрицательные отзывы для сообщений бота.
- Метка конфиденциальности позволяет пользователям понять конфиденциальность сообщения бота.
На следующих снимках экрана показано, как сообщения бота можно улучшить с помощью метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности.
Примечание.
- Метка ИИ, ссылки, кнопки обратной связи и метка конфиденциальности доступны для ботов в личных чатах, групповых чатах и каналах.
- Метка ИИ, ссылки, кнопки обратной связи и метка конфиденциальности доступны в средах Облака сообщества для государственных организаций (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 |
После добавления метки ИИ в сообщении бота рядом с именем бота отображается метка, созданная ИИ . При наведении указателя мыши на метку ИИ отображается заявление об отказе от ответственности, указывающее, что содержимое, созданное ИИ, может быть неправильным. Метку ИИ и заявление об отказе от ответственности нельзя настроить для ботов на основе ИИ.
Обработка ошибок
Код ошибки | Описание |
---|---|
400 | Несколько сущностей корневого сообщения, найденных в массиве entities . |
400 | Ошибка при синтаксическом анализе сущности сообщения из entities массива. |
Цитаты
Цитирование источников в сообщениях бота помогает пользователям задавать дополнительные вопросы или проводить независимые исследования. Цитировать источники данных, такие как файлы, сообщения, сообщения электронной почты и рабочие элементы, чтобы получить ценные аналитические сведения. Ссылки имеют решающее значение для ботов, использующих такие методы, как создание Retrieval-Augmented (RAG).
Ссылки в сообщениях бота могут включать следующие:
- Текстовые ссылки обозначают номера ссылок, добавленные в сообщение бота в формате [#], каждый из которых соответствует ссылке. Ссылку можно вставить в любом месте текста.
- Сведения о ссылке на ссылку включают заголовок, значок, ключевые слова, абстракт, гиперссылку, сведения о конфиденциальности и кнопку для открытия модального окна с дополнительным содержимым. Ссылки отображаются в виде всплывающих окон для каждой текстовой ссылки.
- Метки конфиденциальности для ссылок указывают на конфиденциальность ссылочного содержимого и не добавляются автоматически. Сведения о добавлении меток конфиденциальности для ссылок см. в статье Добавление метки конфиденциальности.
- Модальное окно с дополнительным содержимым отображает адаптивную карточку без интерактивных элементов.
Примечание.
- В сообщении отображается не более 20 ссылок.
- Ссылки с адаптивными карточками доступны в общедоступной предварительной версии для разработчиков.
- Адаптивные карточки не отображаются во всплывающем окне ссылки. Тем не менее адаптивные карточки можно отобразить в сообщении бота или в модальном окне ссылки, доступном во всплывающем окне.
Добавление ссылок
Если вы используете библиотеку ИИ 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
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"
},
},
},
],
},
],
})
Свойство | Тип | Обязательный | Описание |
---|---|---|---|
citation |
Object | ✔️ | Сведения о ссылке. |
citation.@type |
String | ✔️ | Объект ссылки. Допустимое значение: Claim |
citation.position |
Integer | ✔️ | Отображает номер ссылки. |
citation.appearance |
Объект | ✔️ | Сведения о внешнем виде ссылки. |
citation.appearance.@type |
String | ✔️ | Объект внешнего вида ссылки. Допустимое значение: DigitalDocument |
citation.appearance.name |
String | ✔️ | Заголовок содержимого, на который ссылается ссылка. Максимальное число символов: 80 |
citation.appearance.url |
String | URL-адрес содержимого, на который ссылается ссылка. | |
citation.appearance.abstract |
String | Абстракция содержимого, на который ссылается ссылка. Максимальное число символов: 160 | |
citation.appearance.text |
String | Строка адаптивная карточка с дополнительными сведениями о ссылке. Он отображается в модальном окне, доступном из всплывающего окна. | |
citation.appearance.keywords |
Array | Ключевые слова из указанного содержимого. Нельзя добавить более трех ключевых слов. Каждая ключевое слово может содержать только 28 символов. | |
citation.appearance.encodingFormat |
String | Формат citation.appearance.text кодирования поля.Допустимое значение: application/vnd.microsoft.card.adaptive |
|
citation.appearance.image |
Объект | Сведения о значке ссылки. | |
citation.appearance.image.@type |
String | ✔️ | Объект значка ссылки. Должно быть задано значение ImageObject . |
citation.appearance.image.name |
String | ✔️ | Имя предопределенного значка. Он отображает значок ссылки в сведениях о ссылке. Допустимые значения: Microsoft Word , Microsoft Excel , Microsoft PowerPoint , Microsoft OneNote , Microsoft SharePoint , Microsoft Visio , Microsoft Loop , Microsoft Whiteboard , Source Code , Adobe Illustrator Sketch , , Adobe InDesign Adobe Photoshop , , Adobe Flash , Image , , GIF Video , , Sound , , ZIP Text PDF |
После включения ссылок сообщение бота содержит текстовые ссылки и ссылки. Текстовые ссылки отображают сведения о ссылке при наведении указателя мыши на ссылку.
Обработка ошибок
Код ошибки | Описание |
---|---|
400 | Несколько сущностей корневого сообщения, найденных в массиве entities . |
400 | Ошибка при синтаксическом анализе сущности сообщения из entities массива. |
400 | Сообщение бота с более чем 20 цитатами. |
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
в объекте channelData
автоматически задано значение true
.
Чтобы включить кнопки обратной связи в боте, созданном с помощью пакета SDK Bot Framework, определите feedbackLoop
объект в объекте channelData
сообщения бота.
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey! I'm a friendly AI bot!`,
channelData: {
feedbackLoop: { // Enable feedback buttons
type: "custom"
},
});
Свойство | Тип | Обязательный | Описание |
---|---|---|---|
feedbackLoop |
Object | ✔️ | Включает кнопки обратной связи в сообщении бота. |
feedbackLoop.type |
String | ✔️ | Определяет тип формы обратной связи, которая появляется, когда пользователь нажимает кнопки обратной связи. Допустимые значения: custom , default |
Если задано значение feedbackLoop.type
default
, форма обратной связи по умолчанию отображается, когда пользователь нажимает кнопки обратной связи. Если вы хотите отобразить настраиваемую форму обратной связи, задайте для значение feedbackLoop.type
custom
. Следующий запрос на вызов отправляется боту для получения пользовательской формы, отображаемой для пользователя:
{
"type": "invoke",
"name": "message/fetchTask",
"value": {
"actionName": "feedback",
"actionValue": {
"reaction": "like" // like or dislike
}
}
}
Вы должны отвечать на этот вызов с помощью диалогового окна (называемого модулями задач в TeamsJS версии 1.x) так же, как и на task/fetch
вызов. Дополнительные сведения о вызове диалогов в ботах см. в разделе Использование диалогов с ботами.
Обработка отзывов
Бот получает от пользователя входные данные из формы обратной связи через поток вызова бота. Для ботов, созданных с помощью библиотеки ИИ Teams, запрос на вызов бота обрабатывается автоматически. Для обработки обратной app.feedbackLoop
связи используйте метод для регистрации обработчика цикла обратной связи, вызываемого при отправке отзывов пользователем.
app.feedbackLoop(async (_context: TurnContext, _state: TurnState, feedbackLoopData: 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 | .NET |
---|---|---|---|
Бот для беседы в Teams | Этот пример приложения отображает метку ИИ, ссылку, кнопки обратной связи и метку конфиденциальности в сообщениях. | Просмотр | Н/Д |
Azure OpenAI для ваших данных | Этот бот для общения использует библиотеку ИИ Teams и содержит метку ИИ, кнопки обратной связи, метку конфиденциальности и ссылку в созданных сообщениях. | Н/Д | Просмотр |
См. также
Platform Docs