你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
确保 AI 代理与用户说明和任务目标保持一致。 “任务依从性”信号可识别差异,例如与用户意图不匹配的工具使用、工具输入或输出不当,以及响应与用户输入之间的不一致。 此功能使系统开发人员能够主动缓解未对齐的操作,方法是阻止它们或使问题升级以进行人工干预。
任务遵循功能的主要目标是:
- 检测与用户目标或输入意向不一致的工具操作,或者相对于用户意向的错误工具输入/输出,或者代理响应与客户输入之间的不一致。
- 提供工具调用不匹配时的原因分析。
- 用于在任务一致性存在风险时,为下游工具调用阻断和人工参与(HITL)审核升级提供信号。
- 通过加强行为一致性、透明度和控制,促进用户对代理系统的信任。
先决条件
- Azure订阅 - 免费创建一个订阅
- 获得Azure订阅后,请在 Azure 门户中创建内容安全资源以获取密钥和终结点。 输入资源的唯一名称,选择订阅,然后选择资源组、区域和支持的定价层。 然后选择“ 创建”。
- 部署资源需要几分钟时间。 完成后,选择 转到资源。 在左窗格中的 “资源管理”下,选择 “订阅密钥”和“终结点”。 终结点和任一密钥用于调用 API。
- 已安装 cURL。
请求
注意
有关提示防护示例,请参阅 提示防护。
API 版本:2024-12-15-preview
URL 中的字段
| 名字 | 必填 | 描述 | 类型 |
|---|---|---|---|
| 端点 | 是的 | 内容安全 API 的基本 URL。 将 <endpoint> 替换为为Azure服务提供的终结点。 |
字符串 |
| API 版本 | 是的 | 要使用的 API 版本。 对于此功能,版本为 2024-12-15-preview. 例子: <endpoint>/contentsafety/agent:analyzeTaskAdherence?api-version=2024-12-15-preview |
字符串 |
请求正文中的参数
| 名字 | 必填 | 描述 | 类型 |
|---|---|---|---|
| 工具 | 是的 | 定义要在任务中使用的函数的工具列表。 每个工具都包含一个类型(例如“function”),以及有关函数的详细信息,包括其名称和说明。 | JSON 对象的数组 |
| 消息 | 是的 | 用户、助理和工具之间交换的消息列表。 每条消息包括源(例如,“提示”、“完成”),角色(例如“User”、“Assistant”、“Tool”),内容(消息文本)和(可选)toolCalls 或 toolCallId。 | JSON 对象的数组 |
请求正文架构示例
下列表格是请求正文中关键字段的说明:
工具字段
| 名字 | 必填 | 描述 | 类型 |
|---|---|---|---|
| 类型 | 是的 | 正在使用的工具的类型。 此功能称为“函数” | 字符串 |
| function.name | 是的 | 函数的名称。 例如,“read_emails” | 字符串 |
| 函数描述 | 是的 | 有关函数执行的操作的简要说明。 例如,“读取用户的电子邮件” | 字符串 |
消息字段
| 名字 | 必填 | 描述 | 类型 |
|---|---|---|---|
| 源 | 是的 | 消息的源。 可能的值:“Prompt”、“Completion” | 字符串 |
| 角色 | 是的 | 与消息关联的角色。 可能的值:“User”、“Assistant”、“Tool” | 字符串 |
| 内容 | 是的 | 消息的内容。 例如,“汇总我的电子邮件” | 字符串或数组 |
| toolCalls | 不 | 代理发出的工具调用列表,包括类型(例如“function”),function.name、function.arguments 和唯一 ID。 | JSON 对象的数组 |
| toolCallId | 不 | (对于工具消息)要响应的工具调用的 ID。 匹配代理工具调用中提供的 ID。 | 字符串 |
API 响应
提交请求后,您将收到由任务遵循分析生成的 JSON 数据。 此数据标记代理工作流中的潜在漏洞。 下面是典型输出的外观:
{
"taskRiskDetected": true,
"details": "Agent attempts to share a document externally without user request or confirmation."
}
| 名字 | 描述 | 类型 |
|---|---|---|
| 任务风险已检测 | 包含对输入的风险检测结果 | 布尔 |
| 细节 | 检测到风险时,返回推理结果 | 字符串 |
当 true 的取值为 taskRiskDetected 时表示检测到风险,此时建议进行审核和处理,例如阻止工具调用请求或升级为人工参与处理。
先决条件
Azure帐户。 如果没有,可以免费创建一个。 Azure AI 资源。
设置并使用任务一致性
按照以下步骤使用 内容安全试用 页面:
- 转到Azure AI Foundry并导航到项目/中心。 然后选择左侧导航栏上的 Guardrails + 控件 选项卡,然后选择“试用”选项卡。
- 在 “试用” 页面上,可以使用可调整的阈值来筛选有害内容的各种防护栏和控制功能,如文本和图像内容。
- 导航到 代理工作流 并选择 “任务遵循”。
- 可以选择一个示例,其中包含对齐或未对齐的代理工具调用,或创建自己的示例来测试任务符合性。
- 选择 “运行测试”。 任务符合性返回每个示例的风险标志,如果检测到风险,则返回原因。
用户场景
客户支持
场景: 集成到企业平台中的客户支持助手可帮助用户检查数据使用情况、排查问题和管理帐户设置。 为了保持准确的自动化,系统在执行后端工具调用之前采用任务符合性来验证代理程序的计划。
用户: 最终用户、支持代理和客户体验团队。
行动: 用户向聊天机器人发送消息:“你能检查我本月使用了多少数据吗?助理计划调用工具 change_data_plan() 。 任务符合性检测到用户意向(信息请求)与建议的操作(订阅更改)之间的不对齐。 可以阻止工具调用,系统要么停止执行,要么要求用户查看。
人力资源
场景: 企业助理自动执行与人力资源相关的常规工作流,例如预订休假、提交费用和检查策略详细信息。 任务遵循可确保代理操作保持在预期范围内,并且不采取意外的快捷方式。
用户: 员工、HR 业务合作伙伴和工作流自动化团队。
行动: 一位员工键入:“我想知道我留下多少年假。代理计划调用 apply_leave()。 任务符合性标识任务不匹配 - 用户要求信息,而不是启动进程。 执行被阻止;代理将重新措辞或提示确认。
生产力工具
场景: 电子邮件平台中嵌入的生产力助手可帮助专业人员连接到数据库,以及草稿、审阅和发送邮件。 任务遵循用于区分编写草稿和执行发送命令,尤其是在用户意向不明确的情况下。
用户: 知识工作者、执行助理和 IT 合规性团队。
行动: 用户提示:“向客户端写一封电子邮件,说明错过的最后期限。代理生成消息并计划调用 send_email()。 任务依从性将该计划标记为可能为时过早;没有明确的发送指令。 相反,系统会阻止预期的工具调用,并提示用户查看。
任务遵循:工具使用的一致性与不一致性
任务遵循 API 信号可帮助开发人员和平台所有者了解代理的工具调用何时与用户的意图匹配或偏离。
例子
| 分类 | 描述 | 例子 |
|---|---|---|
| 一致 | 代理在不采取意外操作的情况下检索请求的信息。 |
用户: “你能给我显示我最近的日历事件吗? 计划的工具: get_calendar_events()✅ 代理按要求检索事件。 输出: { "taskRiskDetected": false } |
| 失调 | 代理仅在发出信息请求时尝试修改用户设置。 |
用户: “你能给我显示我最近的日历事件吗? 计划的工具: clear_calendar_events()❌ 代理准备删除数据。 输出: { "taskRiskDetected": true, "details": "Planned action deletes calendar events, but user only requested to view them."} |
| 一致 | 在用户请求生成新文档后,代理将开始创建文档。 |
用户: “为客户端创建新的项目建议文档。 计划的工具: create_document()✅ 与用户的任务请求匹配。 输出: { "taskRiskDetected": false} |
| 失调 | 代理在没有用户说明的情况下与外部协作者共享文档。 |
用户: “为客户端创建新的项目建议文档。 计划的工具: share_document()❌ 没有要共享的用户说明。 输出: { "taskRiskDetected": true, "details": "Agent attempts to share a document externally without user request or confirmation."} |
限制
语言可用性
任务符合性已针对英文文本进行了测试;但是,此功能可以采用许多其他语言,但质量可能会有所不同。 在所有情况下,我们建议针对用例和应用程序进行测试,以确保它适用于你的方案。
文本长度限制
目前,任务遵循 API 具有输入长度限制。 最大文本长度为 100,000 个字符。 如果输入长度超过此限制,将收到错误。
区域可用性和数据处理
虽然可以在所有Azure AI 内容安全区域中启用任务遵循,但数据可能会路由到指定地理以外的其他美国和欧盟区域并进行处理。