简介
本课程将涵盖:
- 如何构建和部署安全有效的 AI Agents
- 开发 AI Agents 时重要的安全注意事项。
- 开发 AI Agents 时如何维护数据和用户隐私。
学习目标
完成本课程后,你将了解如何:
- 在创建 AI Agents 时识别和降低风险。
- 实施安全措施以确保数据和访问得到妥善管理。
- 创建能够维护数据隐私并提供优质用户体验的 AI Agents。
安全性
让我们首先看看如何构建安全的 Agentic 应用程序。安全性意味着 AI Agent 按照设计执行。作为 Agentic 应用程序的构建者,我们拥有最大化安全性的方法和工具:
构建元提示系统
如果你曾经使用大语言模型 (LLMs) 构建过 AI 应用程序,你就会知道设计一个强大的系统提示或系统消息的重要性。这些提示建立了 LLM 如何与用户和数据交互的元规则、指令和指南。
对于 AI Agents,系统提示更为重要,因为 AI Agents 将需要高度具体的指令来完成我们为它们设计的任务。
为了创建可扩展的系统提示,我们可以使用元提示系统在我们的应用程序中构建一个或多个 Agent:
步骤 1:创建元提示或模板提示
元提示将由 LLM 用于为我们创建的 Agent 生成系统提示。我们将其设计为模板,以便在需要时可以高效地创建多个 Agent。
以下是我们提供给 LLM 的元提示示例:
你是一位创建 AI Agent 助手的专家。
你将获得公司名称、角色、职责和其他信息,你将使用这些信息来提供系统提示。
为了创建系统提示,请尽可能详细地描述,并提供一个系统使用 LLM 可以更好地理解 AI 助手角色和职责的结构。
步骤 2:创建基本提示
下一步是创建一个基本提示来描述 AI Agent。你应该包括 Agent 的角色、Agent 将完成的任务以及 Agent 的任何其他职责。
以下是一个示例:
你是 Contoso Travel 的旅行 Agent,擅长为客户预订航班。为了帮助客户,你可以执行以下任务:查找可用航班、预订航班、询问客户对座位和航班时间偏好、取消任何先前预订的航班,并提醒客户任何航班延误或取消。
步骤 3:向 LLM 提供基本提示
现在,我们可以通过提供元提示作为系统提示和我们的基本提示来优化此提示。
这将生成一个更适合指导我们的 AI Agent 的提示:
**公司名称:** Contoso Travel
**角色:** 旅行 Agent 助理
**目标:**
你是 Contoso Travel 的 AI 驱动的旅行 Agent 助理,专门负责预订航班和提供卓越的客户服务。你的主要目标是协助客户查找、预订和管理他们的航班,同时确保他们的偏好和需求得到有效满足。
**主要职责:**
1. **航班查询:**
* 根据客户指定的目的地、日期和任何其他相关偏好,协助客户搜索可用航班。
* 提供选项列表,包括航班时间、航空公司、中途停留和价格。
2. **航班预订:**
* 协助客户预订航班,确保所有详细信息都正确输入系统。
* 确认预订并向客户提供他们的行程,包括确认号码和任何其他相关信息。
3. **客户偏好查询:**
* 主动询问客户对座位(例如,过道、靠窗、额外腿部空间)和首选航班时间(例如,上午、下午、晚上)的偏好。
* 记录这些偏好以供将来参考,并相应地定制建议。
4. **航班取消:**
* 如果需要,根据公司政策和程序协助客户取消先前预订的航班。
* 通知客户任何必要的退款或可能需要取消的其他步骤。
5. **航班监控:**
* 监控已预订航班的状态,并实时提醒客户有关其航班时刻表的任何延误、取消或更改。
* 根据需要通过首选通信渠道(例如,电子邮件、短信)提供更新。
**语气和风格:**
* 在与客户的所有互动中保持友好、专业和 அணுகக்கூடிய (平易近人) 的态度。
* 确保所有沟通都清晰、信息丰富,并根据客户的具体需求和查询进行定制。
**用户交互说明:**
* 及时准确地响应客户查询。
* 使用对话风格,同时确保专业性。
* 通过在提供的所有协助中保持专注、同情和主动,优先考虑客户满意度。
**附加说明:**
* 及时了解可能影响航班预订和客户体验的航空公司政策、旅行限制和其他相关信息的任何更改。
* 使用清晰简洁的语言解释选项和流程,尽可能避免使用术语,以便客户更好地理解。
此 AI 助手旨在简化 Contoso Travel 客户的航班预订流程,确保他们的所有旅行需求都得到高效和有效的满足。
步骤 4:迭代和改进
此元提示系统的价值在于能够更轻松地扩展从多个 Agent 创建提示,以及随着时间的推移改进你的提示。你的提示很少会在第一次就适用于你的完整用例。通过更改基本提示并使其通过系统运行,能够进行微调和改进,这将允许你比较和评估结果。
理解威胁
为了构建值得信赖的 AI Agent,了解和减轻 AI Agent 的风险和威胁非常重要。让我们看看 AI Agent 的一些不同威胁,以及如何更好地计划和准备应对这些威胁。
任务和指令
描述: 攻击者试图通过提示或操纵输入来更改 AI Agent 的指令或目标。
缓解措施: 在 AI Agent 处理之前,执行验证检查和输入过滤器以检测潜在危险的提示。由于这些攻击通常需要与 Agent 频繁交互,因此限制对话中的轮次数是防止此类攻击的另一种方法。
访问关键系统
描述: 如果 AI Agent 可以访问存储敏感数据的系统和服务,攻击者可能会破坏 Agent 与这些服务之间的通信。这些攻击可能是直接攻击,也可能是通过 Agent 间接获取有关这些系统的信息的尝试。
缓解措施: AI Agent 应该仅在需要时才能访问系统,以防止此类攻击。Agent 与系统之间的通信也应该是安全的。实施身份验证和访问控制是保护此信息的另一种方法。
资源和服务过载
描述: AI Agent 可以访问不同的工具和服务来完成任务。攻击者可以利用此能力通过 AI Agent 发送大量请求来攻击这些服务,这可能导致系统故障或高昂的成本。
缓解措施: 实施策略以限制 AI Agent 可以向服务发出的请求数量。限制对话轮次和对 AI Agent 的请求是防止此类攻击的另一种方法。
知识库投毒
描述: 这种类型的攻击不直接针对 AI Agent,而是针对 AI Agent 将使用的知识库和其他服务。这可能涉及破坏 AI Agent 将用于完成任务的数据或信息,从而导致对用户的响应出现偏差或意外。
缓解措施: 定期验证 AI Agent 将在其工作流程中使用的数据。确保对此数据的访问是安全的,并且只能由受信任的个人更改,以避免此类攻击。
级联错误
描述: AI Agent 访问各种工具和服务来完成任务。攻击者引起的错误可能导致 AI Agent 连接到的其他系统发生故障,从而使攻击变得更加广泛且更难排除故障。
缓解措施: 避免这种情况的一种方法是让 AI Agent 在受限环境中运行,例如在 Docker 容器中执行任务,以防止直接的系统攻击。当某些系统响应错误时,创建回退机制和重试逻辑是防止更大系统故障的另一种方法。
人工介入
构建值得信赖的 AI Agent 系统的另一种有效方法是使用人工介入。这将创建一个流程,用户可以在运行期间向 Agent 提供反馈。用户本质上充当多 Agent 系统中的 Agent,并通过批准或终止正在运行的进程。
这是一个使用 AutoGen 的代码片段,展示了如何实现这个概念:
# 创建 agents。
model_client = OpenAIChatCompletionClient(model="gpt-4o-mini")
assistant = AssistantAgent("assistant", model_client=model_client)
user_proxy = UserProxyAgent("user_proxy", input_func=input) # 使用 input() 从控制台获取用户输入。
# 创建终止条件,当用户说“APPROVE”时,对话将结束。
termination = TextMentionTermination("APPROVE")
# 创建团队。
team = RoundRobinGroupChat([assistant, user_proxy], termination_condition=termination)
# 运行对话并流式传输到控制台。
stream = team.run_stream(task="Write a 4-line poem about the ocean.")
# 在脚本中运行时使用 asyncio.run(...)。
await Console(stream)
结论
构建值得信赖的 AI Agent 需要精心的设计、强大的安全措施和持续的迭代。通过实施结构化的元提示系统、了解潜在威胁并应用缓解策略,开发人员可以创建既安全又有效的 AI Agent。此外,采用人工介入方法可确保 AI Agent 与用户需求保持一致,同时最大程度地降低风险。随着 AI 的不断发展,对安全性、隐私和道德考虑采取积极主动的立场将是培养 AI 驱动系统信任度和可靠性的关键。