简介 (Introduction)
本课程将涵盖:
- 如何构建和部署安全且高效的 AI 智能体。
- 开发 AI 智能体时重要的安全考量。
- 开发 AI 智能体时如何维护数据和用户隐私。
学习目标 (Learning Goals)
完成本课程后,您将了解如何:
- 在创建 AI 智能体时识别并降低风险。
- 实施安全措施以确保数据和访问权限得到妥善管理。
- 创建能够维护数据隐私并提供优质用户体验的 AI 智能体。
安全性 (Safety)
让我们首先看看如何构建安全的智能体应用程序。安全性意味着 AI 智能体能按设计预期执行任务。作为智能体应用程序的构建者,我们可以利用多种方法和工具来最大化安全性:
构建系统消息框架 (Building a System Message Framework)
如果您曾使用大型语言模型 (LLM) 构建过 AI 应用程序,您就会知道设计稳健的系统提示词(System Prompt)或系统消息的重要性。这些提示词确立了 LLM 与用户和数据交互的元规则、指令和指南。
对于 AI 智能体来说,系统提示词甚至更为重要,因为 AI 智能体需要极其具体的指令来完成我们为其设计的任务。
为了创建可扩展的系统提示词,我们可以使用系统消息框架来为应用程序中构建的一个或多个智能体提供支持:

第 1 步:创建元系统消息 (Create a Meta System Message)
元提示词(Meta Prompt)将由 LLM 使用,以为我们创建的智能体生成具体的系统提示词。我们将其设计为模板,以便在需要时高效地创建多个智能体。
以下是我们提供给 LLM 的元系统消息示例:
“您是一位创建 AI 智能体助手的专家。您将获得公司名称、角色、职责以及其他信息,您需要使用这些信息来生成系统提示词。在创建系统提示词时,请尽可能详细,并提供一种清晰的结构,让使用 LLM 的系统能够更好地理解该 AI 助手的角色和职责。”
第 2 步:创建基础提示词 (Create a basic prompt)
下一步是创建一个基础提示词来描述该 AI 智能体。您应该包括智能体的角色、将要完成的任务以及任何其他职责。
示例:
“您是 Contoso Travel 的旅行代理,擅长为客户预订航班。为了帮助客户,您可以执行以下任务:查询可用航班、预订航班、询问对航班座位和时间的偏好、取消任何先前预订的航班,并在航班延误或取消时提醒客户。”
第 3 步:向 LLM 提供基础系统消息 (Provide Basic System Message to LLM)
现在,我们可以通过将“元系统消息”作为核心系统消息,并输入我们的“基础系统消息”来进行优化。
这将生成一个设计得更好、更适合指导我们 AI 智能体的系统消息:
公司名称: Contoso Travel
职位: 旅游代理助手
目标: 作为 Contoso Travel 的 AI 驱动旅游代理助手,你专注于提供机票预订及卓越的客户服务。你的主要目标是协助客户查找、预订和管理航班,同时确保高效满足其偏好与需求。
核心职责:
1, 航班查询
- 协助客户根据其指定的目的地、日期及其他相关偏好搜索可用航班。
- 提供选项列表,包括起飞时间、航空公司、中转情况及价格。
2, 机票预订:
- 协助客户完成机票预订,确保所有细节准确输入系统。
- 确认预订并向客户提供行程单,包括确认号及其他相关信息。
3, 客户偏好询问:
- 主动询问客户对座位的偏好(如:过道、靠窗、额外腿部空间)及首选飞行时段(如:上午、下午、晚上)。
- 记录这些偏好以便日后参考,并据此量身定制建议。
4, 航班取消:
- 根据公司政策和流程,在需要时协助客户取消已预订的航班。
- 告知客户任何必要的退款信息或取消过程中可能需要的额外步骤。
5, 航班监控:
- 监控已订航班的状态,并实时向客户通报任何延误、取消或航班计划的变更。
- 根据需要通过首选沟通渠道(如:电子邮件、短信)发送更新。
语气与风格:
- 在所有客户互动中保持友好、专业且平易近人的态度。
- 确保所有沟通内容清晰、详实,并针对客户的具体需求和咨询进行定制。
用户交互指南:
- 及时、准确地响应客户查询。
- 在确保专业性的同时,使用对话式的交流风格。
- 通过专注、共情和积极主动的协助,将客户满意度放在首位。
补充说明:
- 随时跟进航空公司政策、旅行限制以及其他可能影响航班预订和客户体验的相关信息变更。
- 使用清晰简洁的语言解释选项和流程,尽可能避免使用专业术语,以便客户更好地理解。
此 AI 助手的旨在为 Contoso Travel 的客户简化机票预订流程,确保高效、便捷地满足其所有旅行需求。
第 4 步:迭代与改进 (Iterate and Improve)
这个系统消息框架的价值在于,能够更轻松地扩展并创建多个智能体的系统消息,并随着时间的推移不断改进这些消息。极少有系统消息能在第一次尝试时就完美适用于您的完整用例。通过修改基础系统消息并通过系统运行它来进行微调和改进,您将能够比较并评估结果。
了解威胁 (Understanding Threats)
为了构建值得信赖的 AI 智能体,理解并降低其面临的风险和威胁至关重要。让我们看看 AI 智能体面临的一些不同威胁,以及如何更好地进行规划和防范。

任务与指令 (Task and Instruction)
- 描述: 攻击者试图通过提示词注入或操纵输入来改变 AI 智能体的指令或目标。
- 缓解措施: 执行验证检查和输入过滤器,以便在潜在危险的提示词被 AI 智能体处理之前检测到它们。由于这些攻击通常需要与智能体进行频繁互动,因此限制对话的轮数是防止此类攻击的另一种方法。
访问关键系统 (Access to Critical Systems)
- 描述: 如果 AI 智能体有权访问存储敏感数据的系统和服务,攻击者就可以破坏智能体与这些服务之间的通信。这些可以是直接攻击,也可以是通过智能体间接试图获取有关这些系统的信息。
- 缓解措施: AI 智能体应仅在“绝对必要”(need-only basis)的基础上访问系统。智能体与系统之间的通信也应是安全的。实施身份验证和访问控制是保护此类信息的另一种方式。
资源与服务过载 (Resource and Service Overloading)
- 描述: AI 智能体可以访问不同的工具和服务来完成任务。攻击者可以利用这种能力,通过 AI 智能体向这些服务发送大量请求来发起攻击,这可能导致系统故障或产生高额成本。
- 缓解措施: 实施策略以限制 AI 智能体向某个服务发出请求的次数。限制对话轮数以及向您的 AI 智能体发送的请求次数也是防止此类攻击的一种方法。
知识库中毒 (Knowledge Base Poisoning)
- 描述: 此类攻击不直接针对 AI 智能体,而是针对智能体将使用的知识库和其他服务。这可能涉及破坏 AI 智能体将用来完成任务的数据或信息,从而导致系统向用户提供带有偏见或意外的响应。
- 缓解措施: 定期验证 AI 智能体在其工作流中将使用的数据。确保对这些数据的访问是安全的,并且仅由受信任的个人更改,以避免此类攻击。
级联错误 (Cascading Errors)
- 描述: AI 智能体访问各种工具和服务来完成任务。由攻击者引发的错误可能导致 AI 智能体连接的其他系统也出现故障,从而使攻击范围更广,且更难排除故障。
- 缓解措施: 避免这种情况的一种方法是让 AI 智能体在受限环境中运行(例如在 Docker 容器中执行任务),以防止发生直接的系统攻击。在某些系统响应错误时创建回退(fallback)机制和重试逻辑是防止更大规模系统故障的另一种方法。
人类参与循环 (Human-in-the-Loop)
构建值得信赖的 AI 智能体系统的另一种有效方法是使用“人类参与循环”(Human-in-the-loop)。这创建了一个流程,允许用户在运行期间向智能体提供反馈。用户本质上扮演了多智能体系统中的一个智能体角色,通过批准或终止正在运行的流程来实现干预。

以下是一个使用 Microsoft Agent Framework 的代码片段,展示了此概念的实现方式:
Python
import os
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
# Create the provider with human-in-the-loop approval
provider = AzureAIProjectAgentProvider(
credential=AzureCliCredential(),
)
# Create the agent with a human approval step
response = provider.create_response(
input="Write a 4-line poem about the ocean.",
instructions="You are a helpful assistant. Ask for user approval before finalizing.",
)
# The user can review and approve the response
print(response.output_text)
user_input = input("Do you approve? (APPROVE/REJECT): ")
if user_input == "APPROVE":
print("Response approved.")
else:
print("Response rejected. Revising...")
结论 (Conclusion)
构建值得信赖的 AI 智能体需要精心的设计、稳健的安全措施以及持续的迭代。通过实施结构化的元提示系统、了解潜在威胁并应用缓解策略,开发者可以创建既安全又高效的 AI 智能体。此外,结合“人类参与循环”的方法可确保 AI 智能体始终与用户需求保持一致,同时将风险降至最低。随着 AI 技术的不断发展,在安全性、隐私和伦理考量方面保持积极主动的立场,将是培养对 AI 驱动系统信任和可靠性的关键。

