Декларативная схема агента 1.5 для #REF!

В этой статье описывается схема версии 1.5, используемая манифестом декларативного агента. Манифест — это документ, доступный для машинного чтения, который предоставляет модель большого языка (LLM) с необходимыми инструкциями, знаниями и действиями, чтобы специализироваться на решении определенного набора проблем пользователей. Манифест приложения Microsoft 365 ссылается на декларативные манифесты агента внутри пакета приложения. Дополнительные сведения см. в справочнике по манифесту приложения Microsoft 365.

Важно!

Последняя версия схемы манифеста декларативного агента — версия 1.6. Мы рекомендуем новым агентам использовать последнюю версию схемы.

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

Изменения предыдущей версии

Эта версия схемы содержит следующие изменения по версии 1.4:

  • Добавлена возможность собраний в список capabilities, которая позволяет агентам искать собрания в организации.

Схема JSON

Схему, описанную в этом документе, можно найти в формате схемы JSONздесь.

Конвенций

Относительные ссылки в URL-адресах

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

Длина строки

Если не указано иное, ограничьте все свойства строки 4000 символами. Эта длина строки не задает допустимый размер для всех строковых свойств в документе. Реализации могут устанавливать собственные практические ограничения на длину манифеста.

Нераспознанные свойства

Объекты JSON, определенные в этом документе, поддерживают только описанные свойства. Нераспознанные или посторонние свойства в любом объекте JSON делают весь документ недействительным.

Локализация строк

Локализуемые строки могут использовать ключ локализации вместо значения литерала. Синтаксис : [[key_name]], где key_name — это имя ключа в свойстве localizationKeys в файлах локализации. Дополнительные сведения о локализации см. в статье Локализация агента.

Объект манифеста декларативного агента

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

Объект манифеста декларативного агента содержит следующие свойства.

Свойство Тип Описание
version String Обязательный. Версия схемы. Установите значение v1.5.
id String Необязательный параметр.
name String Обязательный. Локализуемые. Имя декларативного агента. Он должен содержать по крайней мере один символ nonwhitespace и содержать не более 100 символов.
description String Обязательный. Локализуемые. Описание декларативного агента. Он должен содержать по крайней мере один символ nonwhitespace и содержать не более 1000 символов.
instructions String Обязательный. Подробные инструкции или рекомендации о том, как должен вести себя декларативный агент, его функции и любые действия, которые следует избежать. Он должен содержать по крайней мере один символ nonwhitespace и содержать не более 8000 символов.
capabilities Массив объекта Capabilities Необязательный параметр. Содержит массив объектов, определяющих возможности декларативного агента. Массив не может содержать более одного из каждого производного типа объекта Capabilities.
conversation_starters Массив начального объекта Conversation Необязательный параметр. Заголовок и текст локализуются. Список примеров вопросов, на которые может ответить декларативный агент. Массив не может содержать более 12 объектов.
actions Массив объекта Action Необязательный параметр. Список объектов, определяющих подключаемые модули , предоставляющие действия, доступные декларативному агенту.
behavior_overrides Поведение переопределяет объект Необязательный параметр. Содержит параметры конфигурации, изменяющие поведение агента.
disclaimer Объект "Отказ от ответственности" Необязательный параметр. Текст заявления об отказе от ответственности, отображаемый пользователю в начале беседы.

Пример объекта манифеста декларативного агента

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

{
  "name" : "Repairs agent",
  "description": "This declarative agent is meant to help track any tickets and repairs",
  "instructions": "This declarative agent needs to look at my Service Now and Jira tickets/instances to help me keep track of open items"
}

Объект Capabilities

Объект capabilities является базовым типом для объектов в свойстве capabilities объекта манифеста декларативного агента. Возможные типы объектов:

Примечание.

Пользователи могут получить доступ к декларативным агентам с любыми возможностями, кроме поиска в Интернете, только если их клиенты разрешают лимитное использование или если у них есть лицензия на #REF!.

Пример объекта Capabilities

{
  "capabilities": [
    {
      "name": "WebSearch",
      "sites": [
        {
          "url": "https://contoso.com"
        }
      ]
    },
    {
      "name": "OneDriveAndSharePoint",
      "items_by_sharepoint_ids": [
        {
          "site_id": "bc54a8cc-8c2e-4e62-99cf-660b3594bbfd",
          "web_id": "a5377427-f041-49b5-a2e9-0d58f4343939",
          "list_id": "78A4158C-D2E0-4708-A07D-EE751111E462",
          "unique_id": "304fcfdf-8842-434d-a56f-44a1e54fbed2"
        }
      ],
      "items_by_url": [
        {
          "url": "https://contoso.sharepoint.com/teams/admins/Documents/Folders1"
        }
      ]
    },
    {
      "name": "GraphConnectors",
      "connections": [
        {
          "connection_id": "jiraTickets"
        }
      ]
    },
    {
      "name": "GraphicArt"
    },
    {
      "name": "CodeInterpreter"
    },
    {
      "name": "Dataverse",
      "knowledge_sources": [
        {
          "host_name": "organization.crm.dynamics.com",
          "skill": "DVCopilotSkillName",
          "tables": [
            {
              "table_name": "account"
            },
            {
              "table_name": "opportunity"
            }
          ]
        }
      ]
    },
    {
      "name": "TeamsMessages",
      "urls": [
        {
          "url": "https://teams.microsoft.com/l/channel/19%3ApO0102YGEBRSH6RziXCxEgB4mtb7-5hIlDzAjtxs_dg1%40thread.tacv2/G%C3%A9n%C3%A9ral?groupId=2670cf94-acf5-48f4-96d4-c58dd8937afc&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47"
        }
      ]
    },
    {
      "name": "People"
    },
    {
      "name": "ScenarioModels",
      "models": [
        {
          "id": "model_id"
        }
      ]
    },
    {
      "name": "Meetings"
    }
  ]
}

Объект веб-поиска

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

Объект веб-поиска содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение WebSearch.
sites Массив объекта Site Необязательный параметр. Массив объектов, определяющих сайты, которые агенту разрешено искать. Если опустить это свойство, агент может выполнять поиск по всем сайтам. Массив не может содержать более четырех элементов.

Примечание.

Дополнительные сведения о данных, конфиденциальности и безопасности для поиска в Интернете в #REF! и #REF! см. в статье Данные, конфиденциальность и безопасность для поиска в Интернете.

Объект сайта

Указывает сайт, на котором декларативный агент может искать содержимое.

Объект сайта содержит следующее свойство.

Свойство Тип Описание
url String Обязательный. Абсолютный URL-адрес сайта для поиска содержимого. URL-адрес не может содержать более двух сегментов пути (например, https://contoso.com/projects/mark-8 является допустимым, но https://contoso.com/projects/mark-8/beta-program недопустимым). URL-адрес не может содержать параметры запроса.

Объект #REF! и #REF!

Указывает, что декларативный агент может искать в #REF! и #REF! пользователя на наличие сведений о заземлениях.

Объекты #REF! и #REF! содержат следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение OneDriveAndSharePoint.
items_by_sharepoint_ids Массив элементов по идентификаторам #REF! Необязательный параметр. Массив объектов, определяющих источники #REF! или #REF! с помощью идентификаторов. Если опустить свойства items_by_sharepoint_ids и items_by_url , декларативный агент может получить доступ ко всем источникам #REF! и #REF! в организации.
items_by_url Массив элементов по объекту URL-адреса Необязательный параметр. Массив объектов, определяющих источники #REF! или #REF! по URL-адресу. Если опустить свойства items_by_sharepoint_ids и items_by_url , декларативный агент может получить доступ ко всем источникам #REF! и #REF! в организации.

Сведения об оптимизации содержимого #REF! для Copilot см. в статье Оптимизация извлечения содержимого #REF!.

Объект Items by #REF! IDs

Объект items by #REF! IDs содержит следующие свойства.

Свойство Тип Описание
site_id String Необязательный параметр. Уникальный идентификатор GUID для сайта #REF! или #REF!.
web_id String Необязательный параметр. Уникальный идентификатор GUID для определенного веб-сайта #REF! или #REF!.
list_id String Необязательный параметр. Уникальный идентификатор GUID для библиотеки документов на сайте #REF!.
unique_id String Необязательный параметр. Уникальный идентификатор GUID, используемый для область папку или файл в библиотеке документов, указанной свойством list_id .
search_associated_sites Boolean Необязательное свойство. Указывает, следует ли включать поиск связанных сайтов. Это значение применимо только в том случае, site_id если оно ссылается на сайт #REF! HubSite.
part_type String Необязательный параметр. Указывает тип части part_id , на который ссылается. Это значение применимо только при part_id наличии значения. Возможные значения: OneNotePart.
part_id String Необязательный параметр. Уникальный идентификатор GUID, используемый для представления части элемента #REF!, например страницы #REF!.

Совет

Сведения о том, как получить уникальные идентификаторы для ресурса #REF! или #REF!, см. в статье Извлечение идентификаторов возможностей для манифеста декларативного агента.

Элементы по объекту URL-адреса

Объект items by URL содержит следующее свойство.

Свойство Тип Описание
url String Необязательный параметр. Абсолютный URL-адрес ресурса #REF! или #REF!.

Объект соединителей Copilot

Указывает, что декларативный агент может искать сведения о заземлениях выбранных соединителей Copilot.

Объект Соединители Copilot содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение GraphConnectors.
connections Массив объекта Connection Необязательный параметр. Массив объектов, определяющих соединители Copilot, доступные декларативному агенту. Если опустить это свойство, декларативный агент может получить доступ ко всем соединителям Copilot в организации.
Объект Connection

Определяет соединитель Copilot.

Объект connection содержит следующие свойства.

Свойство Тип Описание
connection_id String Обязательный. Уникальный идентификатор соединителя Copilot.
additional_search_terms String Необязательный параметр. Запрос язык KeyQL (KQL) для фильтрации элементов на основе полей в схеме подключения.
items_by_external_id Массив объекта идентификатора элемента Необязательный параметр. Указывает определенные элементы по идентификатору в соединителе Copilot, доступные агенту.
items_by_path Массив объекта Path Необязательный параметр. Фильтрует элементы, доступные агенту, по путям элементов (семантическаяitemPath метка элементов).
items_by_container_name Массив объекта "Имя контейнера" Необязательный параметр. Фильтрует элементы, доступные агенту, по имени контейнера (семантическая containerName метка элементов).
items_by_container_url Массив объекта URL-адреса контейнера Необязательный параметр. Фильтрует элементы, доступные агенту, по URL-адресу контейнера (семантическая containerUrl метка элементов).

Совет

Инструкции по получению уникального идентификатора для соединителя Copilot см. в разделе Извлечение идентификаторов возможностей для манифеста декларативного агента.

Объект идентификатора элемента

Определяет внешний элемент по его идентификатору.

Объект идентификатора элемента содержит следующие свойства.

Свойство Тип Описание
item_id String Обязательный. Уникальный идентификатор внешнего элемента.
Объект Path

Определяет внешний элемент по пути к нему.

Объект path содержит следующие свойства.

Свойство Тип Описание
path String Обязательный. Путь (itemPath значение семантической метки) внешнего элемента.
Объект имени контейнера

Определяет контейнер по его имени.

Объект имени контейнера содержит следующие свойства.

Свойство Тип Описание
container_name String Обязательный. Имя контейнера (containerName значение семантической метки) внешнего элемента.
Объект URL-адреса контейнера

Определяет контейнер по ЕГО URL-адресу.

Объект URL-адреса контейнера содержит следующие свойства.

Свойство Тип Описание
container_url String Обязательный. URL-адрес контейнера (containerUrl значение семантической метки) внешнего элемента.

Графический арт-объект

Указывает, что декларативный агент может создавать изображения и рисунки на основе текстового ввода от пользователя. Дополнительные сведения см. в разделе Генератор изображений.

Графический арт-объект содержит следующее свойство.

Свойство Тип Описание
name String Обязательный. Установите значение GraphicArt.

Объект интерпретатора кода

Указывает, что декларативный агент может создавать и выполнять код Python для решения сложных математических задач, анализа данных, создания визуализаций и многого другого. Дополнительные сведения см. в разделе Интерпретатор кода.

Объект интерпретатора кода содержит следующее свойство.

Свойство Тип Описание
name String Обязательный. Установите значение CodeInterpreter.

Объект Dataverse

Указывает, что декларативный агент может выполнять поиск данных из таблиц в Dataverse.

Объект Dataverse содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение Dataverse.
knowledge_sources Массив источников знаний Необязательный параметр. Массив объектов, содержащий идентификаторы, навыки и имена таблиц для экземпляров Dataverse, которые необходимо включить в качестве знаний.
Объект источников знаний

Содержит сведения об экземплярах Dataverse для включения в качестве знаний.

Объект источников знаний содержит следующие свойства.

Свойство Тип Описание
host_name String Обязательный. Уникальный идентификатор узла в Dataverse.
skill String Уникальный идентификатор, определяющий конфигурацию взаимодействия агента с знаниями Dataverse.
tables Массив таблиц Массив таблиц для область знаний агента.

Чтобы найти уникальный skill идентификатор для источников знаний Dataverse, которые необходимо включить:

  1. В Copilot Studio в области слева выберите Агенты>Copilot для Microsoft 365 и нажмите кнопку Добавить, чтобы создать новый агент.
  2. Следуйте инструкциям в разделе Добавление источника знаний Dataverse , чтобы добавить знания Dataverse.
  3. Выберите Опубликовать, а затем скачайте файл .zip.
  4. Распакуть и открыть файл declarativeAgent.json.
  5. Значение skill включается в knowledge_sources раздел, как показано в следующем примере.
{
  "name": "Dataverse",
  "knowledge_sources": [
    {
      "host_name": "org0f612cfc.crm.dynamics.com",
      "skill": "AIBuilderFileAttachedData_e7eTReDbkX_1t4X1oGoCF",
      "tables": [
        {
          "table_name": "msdyn_aibfileattacheddata"
        }
      ]
    }
  ]
}
Объект Tables

Содержит таблицы для область знаний агента.

Объект tables содержит следующее свойство.

Свойство Тип Описание
table_name String Обязательный. Уникальный идентификатор таблицы.

Объект сообщений #REF!

Указывает, что декларативный агент может выполнять поиск по каналам #REF!, командам, собраниям, чатам 1:1 и групповым чатам.

Объект сообщений #REF! содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение TeamsMessages.
urls Массив URL-адресов #REF! Необязательный параметр. Массив объектов, определяющих URL-адреса каналов #REF!, чатов собраний, групповых чатов или чатов 1:1, доступных декларативному агенту. Массив не может содержать более пяти объектов. Пропуск этого свойства позволяет выполнять поиск без проверки по всем каналам, собраниям, чатам 1:1 и групповым чатам.
Объект URL-адреса #REF!

Определяет канал #REF!, команду или чат для собраний.

Объект URL-адреса #REF! содержит следующие свойства.

Свойство Тип Описание
url String Обязательный. Хорошо отформатированный URL-адрес #REF!, который ссылается на канал #REF!, чат собрания, групповой чат или чат 1:1.

Объект Email

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

Объект email содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение Email.
shared_mailbox Строка Необязательный параметр. SMTP-адрес общего почтового ящика.
folders Массив папок Необязательный параметр. При наличии агенту доступны только сообщения электронной почты в указанных папках.
Объект Folders

Содержит папки для область знаний агента.

Объект folders содержит следующее свойство.

Свойство Тип Описание
folder_id String Обязательный. Известное имя папки или идентификатор папки для ссылки.

Объект пользователя

Указывает, что декларативный агент может искать сведения о людях в организации.

Объект people содержит следующее свойство.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение People.

Объект моделей сценариев

Указывает, что декларативный агент может использовать модели для конкретных задач.

Объект моделей сценариев содержит следующие свойства.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение ScenarioModels.
models Массив объекта Model Обязательно. Массив объектов, определяющий модели для конкретных задач, доступные декларативному агенту.
Объект Model

Определяет модель для конкретной задачи.

Объект модели содержит следующее свойство.

Свойство Тип Описание
id String Обязательный. Уникальный идентификатор модели.

Объект Meetings

Указывает, что декларативный агент может искать сведения о собраниях в организации.

Объект meetings содержит следующее свойство.

Свойство Тип Описание
name String Обязательный. Необходимо указать значение Meetings.

Начальный объект conversation

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

Начальный объект диалога содержит следующие свойства:

Свойство Тип Описание
text String Обязательный. Локализуемые. Предложение, которое пользователь может использовать для получения желаемого результата от декларативного агента. Он должен содержать по крайней мере один символ nonwhitespace.
title String Необязательный параметр. Локализуемые. Уникальное название для начала беседы. Он должен содержать по крайней мере один символ nonwhitespace.

Пример начального объекта conversation

{
  "conversation_starters": [
    {
      "title": "My Open Repairs",
      "text": "What open repairs are assigned to me?"
    }
  ]
}

Объект Actions

Actions — это необязательный объект JSON в манифесте. Они выступают в качестве входных данных для разработчиков и могут рассматриваться как подключаемые модули.

Объект действия содержит следующие свойства.

Свойство Тип Описание
id String Обязательный. Уникальный идентификатор действия. Это может быть GUID.
file String Обязательный. Путь к манифесту подключаемого модуля API для этого действия.

Пример объекта Actions

{
  "actions": [
    {
      "id": "repairsPlugin",
      "file": "plugin.json"
    }
  ]
}

Поведение переопределяет объект

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

Поведение переопределяет объект, содержащий следующие свойства.

Свойство Тип Описание
suggestions Объект Suggestions Необязательный параметр. Содержит параметры конфигурации для функции предложений.
special_instructions Объект специальных инструкций Необязательный параметр. Содержит параметры для внедрения специальных инструкций в запрос.

Объект Suggestions

Необязательный объект JSON, содержащий параметры конфигурации для функции предложений.

Объект suggestions содержит следующее свойство.

Свойство Тип Описание
disabled Логический Обязательно. Если задано значение true, функция предложений отключена. Значение по умолчанию — false.

Объект специальных инструкций

Необязательный объект JSON, содержащий параметры для внедрения специальных инструкций в запрос.

Объект специальных инструкций содержит следующее свойство.

Свойство Тип Описание
discourage_model_knowledge Логический Обязательно. Если задано значение true, агент не использует знания модели при создании ответов. Значение по умолчанию — false.

Объект "Отказ от ответственности"

Заявление об отказе — это необязательный объект JSON в манифесте, указывающий текст заявления об отказе. Агент отображает этот текст пользователю в начале беседы.

Объект disclaimer содержит следующее свойство.

Свойство Тип Описание
text String Обязательный. Текст заявления об отказе. Значение должно содержать по крайней мере один символ, отличный от пробелов, и не должно превышать 500 символов.

Пример манифеста декларативного агента

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

{
  "$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.5/schema.json",
  "version": "v1.5",
  "name": "Agents Toolkit declarative agent",
  "description": "Declarative agent created with Agents Toolkit",
  "instructions": "You are a repairs expert agent. With the response from the listRepairs function, you **must** create a poem out of the repairs listed and always include their title and the assigned person. The poem **must** not use the quote markdown and use regular text. If the user is asking to create a new repair, use the createRepair function and do not add poems.",
  "conversation_starters": [
    {
      "title": "Getting Started",
      "text": "How can I get started with Agents Toolkit?"
    },
    {
      "title": "Getting Help",
      "text": "How can I get help with Agents Toolkit?"
    }
  ],
  "actions": [
    {
      "id": "repairsPlugin",
      "file": "repairs-hub-api-plugin.json"
    }
  ],
  "behavior_overrides": {
    "suggestions": {
      "disabled": true
    },
    "special_instructions": {
      "discourage_model_knowledge": true
    }
  },
  "disclaimer": {
    "text": "This declarative agent is a fictional example. You should not take it seriously."
  },
  "capabilities": [
    {
      "name": "WebSearch",
      "sites": [
        {
          "url": "https://contoso.com/projects/mark-8"
        }
      ]
    },
    {
      "name": "OneDriveAndSharePoint",
      "items_by_url": [
        {
          "url": "https://contoso.sharepoint.com/sites/ProductSupport"
        }
      ]
    },
    {
      "name": "GraphConnectors",
      "connections": [
        {
          "connection_id": "foodStore"
        }
      ]
    },
    {
      "name": "GraphicArt"
    },
    {
      "name": "CodeInterpreter"
    },
    {
      "name": "Dataverse",
      "knowledge_sources": [
        {
          "host_name": "organization.crm.dynamics.com",
          "skill": "DVCopilotSkillName",
          "tables": [
            {
              "table_name": "account"
            },
            {
              "table_name": "opportunity"
            }
          ]
        }
      ]
    },
    {
      "name": "TeamsMessages",
      "urls": [
        {
          "url": "https://teams.microsoft.com/l/channel/19%3ApO0102YGEBRSH6RziXCxEgB4mtb7-5hIlDzAjtxs_dg1%40thread.tacv2/G%C3%A9n%C3%A9ral?groupId=2670cf94-acf5-48f4-96d4-c58dd8937afc&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47"
        }
      ]
    },
    {
      "name": "Email",
      "shared_mailbox": "sample@service.microsoft.com",
      "folders": [
        {
         "folder_id": "inbox"
        }
      ]
    },
    {
      "name": "People"
    },
    {
      "name": "ScenarioModels",
      "models": [
        {
          "id": "model_id"
        }
      ]
    },
    {
      "name": "Meetings"
    }
  ]
}