本文介绍声明性代理清单使用的 1.5 架构。 清单是一个计算机可读文档,它提供大型语言模型 (LLM) ,以及专门解决一组选定用户问题所需的说明、知识和作。 Microsoft 365 应用清单引用 应用包内的声明性代理清单。 有关详细信息,请参阅 Microsoft 365 应用清单参考。
重要
声明性代理清单架构的最新版本是 版本 1.6。 建议新代理使用最新的架构版本。
声明性代理在理解和生成类似人类的文本方面很有价值,因此它们可用于编写和回答问题等任务。 此规范侧重于声明性代理清单,该清单充当结构化框架,以专门化和增强特定用户所需的功能。
与以前版本相比的更改
此架构版本引入了 版本 1.4 中的以下更改:
- 向 列表
capabilities添加了会议功能,允许代理在组织中搜索会议。
JSON 架构
约定
URL 中的相对引用
除非另行指定,否则作为 URL 的所有属性都可以是相对引用。 清单文档中的相对引用相对于清单文档的位置。
字符串长度
除非另有说明,否则将所有字符串属性限制为 4,000 个字符。 此字符串长度不会为文档中的所有字符串属性设置可接受的大小。 实现可以对清单长度设置自己的实际限制。
无法识别的属性
本文档中定义的 JSON 对象仅支持所述的属性。 任何 JSON 对象中无法识别或无关的属性会使整个文档无效。
字符串本地化
可本地化字符串可以使用本地化键而不是文本值。 语法为 [[key_name]],其中 key_name 是本地化文件中 属性中的 localizationKeys 键名称。 有关本地化的详细信息,请参阅 本地化代理。
声明性代理清单对象
清单文档的根目录是一个 JSON 对象,它涵盖所需的字段、功能、对话启动器和作。
声明性代理清单对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
version |
String | 必需。 架构版本。 设置为 v1.5。 |
id |
String | 可选。 |
name |
String | 必填。 可本地化。 声明性代理的名称。 它必须至少包含一个非空白字符,并且长度不超过 100 个字符。 |
description |
String | 必填。 可本地化。 声明性代理的说明。 它必须至少包含一个非空白字符,并且长度不超过 1,000 个字符。 |
instructions |
String | 必填。 有关声明性代理的行为方式、其函数以及要避免的任何行为的详细说明或指南。 它必须至少包含一个非空白字符,并且长度不超过 8,000 个字符。 |
capabilities |
Capabilities 对象的数组 | 可选。 包含一个对象数组,这些对象定义声明性代理的功能。 数组不能包含一个以上的每个派生类型的 Capabilities 对象。 |
conversation_starters |
Conversation 初学者对象的数组 | 可选。 标题和文本是可本地化的。 声明性代理可以回答的问题示例列表。 数组不能包含超过 12 个对象。 |
actions |
Action 对象的数组 | 可选。 对象的列表,这些对象标识 API 插件,这些插件 提供声明性代理可访问的作。 |
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 对象的基类型。 可能的对象类型包括:
- Web 搜索对象
- OneDrive 和 SharePoint 对象
- Copilot 连接器对象
- 图形艺术对象
- 代码解释器对象
- Dataverse 对象
- Microsoft Teams 消息对象
- Email 对象
- 用户对象
- 方案模型对象
- Meetings 对象
注意
仅当租户允许按流量计费或具有智能 Microsoft 365 Copilot 副驾驶®许可证时,用户才能使用除 Web 搜索以外的任何功能访问声明性代理。
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"
}
]
}
Web 搜索对象
指示声明性代理可以在 Web 中搜索地面信息。
Web 搜索对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 WebSearch。 |
sites |
Site 对象的数组 | 可选。 对象数组,用于标识允许代理搜索的站点。 如果省略此属性,代理可以搜索所有网站。 数组不能包含四个以上的项。 |
注意
有关智能 Microsoft 365 Copilot 副驾驶® 对话助手和智能 Microsoft 365 Copilot 副驾驶®中 Web 搜索的数据、隐私和安全性的详细信息,请参阅 Web 搜索的数据、隐私和安全性。
网站对象
指示声明性代理可以搜索内容的网站。
站点对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
url |
String | 必填。 要搜索内容的网站的绝对 URL。 例如,URL 不能包含两个以上的路径段 (https://contoso.com/projects/mark-8 有效,但 https://contoso.com/projects/mark-8/beta-program) 无效。 URL 不能包含任何查询参数。 |
OneDrive 和 SharePoint 对象
指示声明性代理可以在用户的 SharePoint 和 OneDrive 中搜索地面信息。
OneDrive 和 SharePoint 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 OneDriveAndSharePoint。 |
items_by_sharepoint_ids |
按 SharePoint ID 对象排列的项目数组 | 可选。 使用 ID 标识 SharePoint 或 OneDrive 源的对象数组。 如果省略 items_by_sharepoint_ids 和 items_by_url 属性,则声明性代理可以访问组织中的所有 OneDrive 和 SharePoint 源。 |
items_by_url |
按 URL 对象排列的项目数组 | 可选。 对象的数组,这些对象按 URL 标识 SharePoint 或 OneDrive 源。 如果省略 items_by_sharepoint_ids 和 items_by_url 属性,则声明性代理可以访问组织中的所有 OneDrive 和 SharePoint 源。 |
有关如何优化 Copilot 的 SharePoint 内容的信息,请参阅 优化 SharePoint 内容检索。
SharePoint ID 对象的项目
SharePoint ID 对象的项目包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
site_id |
String | 可选。 SharePoint 或 OneDrive 网站的唯一 GUID 标识符。 |
web_id |
String | 可选。 SharePoint 或 OneDrive 网站中特定 Web 的唯一 GUID 标识符。 |
list_id |
String | 可选。 SharePoint 网站中文档库的唯一 GUID 标识符。 |
unique_id |
String | 可选。 唯一 GUID 标识符,用于限定由 属性指定的 list_id 文档库中的文件夹或文件的范围。 |
search_associated_sites |
布尔值 | 可选。 指示是否启用搜索关联网站。 仅当该值引用 SharePoint HubSite 时, site_id 此值才适用。 |
part_type |
String | 可选。 指示部件 part_id 引用的类型。 仅当存在该值时, part_id 此值才适用。 可能的值为: OneNotePart。 |
part_id |
String | 可选。 用于表示 SharePoint 项目(如 OneNote 页面)的一部分的唯一 GUID 标识符。 |
提示
有关如何获取 SharePoint 或 OneDrive 资源的唯一标识符的信息,请参阅 检索声明性代理清单的功能 ID。
按 URL 对象排序的项目
按 URL 对象的项包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
url |
String | 可选。 SharePoint 或 OneDrive 资源的绝对 URL。 |
Copilot 连接器对象
指示声明性代理可以在所选的 Copilot 连接器中搜索地面信息。
Copilot 连接器对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 GraphConnectors。 |
connections |
Connection 对象的数组 | 可选。 一个对象的数组,这些对象标识可用于声明性代理的 Copilot 连接器。 如果省略此属性,则声明性代理可以访问组织中的所有 Copilot 连接器。 |
Connection 对象
标识 Copilot 连接器。
连接对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
connection_id |
String | 必填。 Copilot 连接器的唯一标识符。 |
additional_search_terms |
String | 可选。 关键字查询语言 (KQL) 查询,以基于连接架构中的字段筛选项。 |
items_by_external_id |
Item 标识符对象的数组 | 可选。 按 ID 在 Copilot 连接器中指定可供代理使用的特定项。 |
items_by_path |
Path 对象的数组 | 可选。 按项路径筛选代理可用的项, (项) itemPath 的语义标签。 |
items_by_container_name |
容器名称对象的数组 | 可选。 按容器名称筛选代理可用的项, (containerName) 项的语义标签。 |
items_by_container_url |
容器 URL 对象的数组 | 可选。 按容器 URL 筛选代理可用的项, (项) containerUrl 的语义标签。 |
提示
有关获取 Copilot 连接器的唯一标识符的说明,请参阅 检索声明性代理清单的功能 ID。
项目标识符对象
按 ID 标识外部项。
项标识符对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
item_id |
String | 必填。 外部项的唯一标识符。 |
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 |
表数组 | 用于限定代理知识范围的表数组。 |
若要查找要包括的 Dataverse 知识源的唯一 skill 标识符,
- 在“Copilot Studio”的左窗格中,选择“适用于 Microsoft 365 的代理>”,然后选择“添加”以创建新代理。
- 按照 添加 Dataverse 知识源 中的说明添加 Dataverse 知识。
- 选择“ 发布”,然后下载 .zip 文件。
- 解压缩并打开declarativeAgent.json文件。
- 值
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 | 必填。 表的唯一标识符。 |
Microsoft Teams 消息对象
指示声明代理可以搜索Microsoft Teams 频道、团队、会议、1:1 聊天和群组聊天。
Microsoft Teams 消息对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 TeamsMessages。 |
urls |
Microsoft Teams URL 数组 | 可选。 对象数组,用于标识可用于声明性代理的 Microsoft Teams 频道、会议聊天、群组聊天或 1:1 聊天的 URL。 数组不能包含五个以上的对象。 省略此属性允许跨所有频道、会议、1:1 聊天和群组聊天进行无作用域搜索。 |
Microsoft Teams URL 对象
标识Microsoft Teams 频道、团队或会议聊天。
Microsoft Teams URL 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
url |
String | 必填。 格式正确的Microsoft Teams URL,链接到Microsoft Teams 频道、会议聊天、群组聊天或 1:1 聊天。 |
Email 对象
指示声明性代理可以在用户有权访问的邮箱中搜索电子邮件。
电子邮件对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 Email。 |
shared_mailbox |
String | 可选。 共享邮箱的 SMTP 地址。 |
folders |
文件夹数组 | 可选。 如果存在,则代理只能使用指定文件夹中的电子邮件。 |
Folders 对象
包含用于确定代理知识范围的文件夹。
folders 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
folder_id |
String | 必填。 要引用的文件夹的已知文件夹名称或文件夹 ID。 |
用户对象
指示声明性代理可以搜索有关组织中人员的信息。
people 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 People。 |
方案模型对象
指示声明性代理可以使用特定于任务的模型。
方案模型对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 ScenarioModels。 |
models |
Model 对象的数组 | 必填。 对象的数组,标识可用于声明性代理的任务特定模型。 |
Model 对象
标识特定于任务的模型。
模型对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
id |
String | 必填。 模型的唯一标识符。 |
Meetings 对象
指示声明性代理可以搜索有关组织中会议的信息。
meetings 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
name |
String | 必需。 必须设置为 Meetings。 |
对话初学者对象
会话初学者对象在清单中是可选的。 它包含提示,该代理向用户显示,以演示如何开始使用声明性代理。
对话初学者对象包含以下属性:
| 属性 | 类型 | 说明 |
|---|---|---|
text |
String | 必填。 可本地化。 建议用户可用于从声明性代理获取所需结果。 它必须至少包含一个非白空间字符。 |
title |
String | 可选。 可本地化。 对话初学者的唯一标题。 它必须至少包含一个非白空间字符。 |
对话初学者对象示例
{
"conversation_starters": [
{
"title": "My Open Repairs",
"text": "What open repairs are assigned to me?"
}
]
}
Actions 对象
作是清单中的可选 JSON 对象。 它们充当开发人员输入,可被视为插件。
作对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
id |
String | 必填。 作的唯一标识符。 它可以是 GUID。 |
file |
String | 必填。 此作的 API 插件清单的路径。 |
Actions 对象示例
行为重写对象
一个可选的 JSON 对象,其中包含替代代理行为的配置设置。
行为重写 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
suggestions |
Suggestions 对象 | 可选。 包含建议功能的配置设置。 |
special_instructions |
特殊指令对象 | 可选。 包含用于将特殊说明注入提示的设置。 |
Suggestions 对象
包含建议功能的配置设置的可选 JSON 对象。
suggestions 对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
disabled |
Boolean | 必填。 如果设置为 true,则禁用建议功能。 默认值为 false。 |
特殊指令对象
可选的 JSON 对象,其中包含用于将特殊指令注入提示的设置。
特殊指令对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
discourage_model_knowledge |
Boolean | 必填。 如果设置为 true,则代理在生成响应时不使用模型知识。 默认值为 false。 |
免责声明对象
免责声明是清单中指定免责声明文本的可选 JSON 对象。 代理在会话开始时向用户显示此文本。
免责声明对象包含以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
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"
}
]
}