Appearance
构建可信赖的智能体
点击上方图片可观看原课程视频。
引言
本节将帮助你:
- 了解如何构建并部署安全、有效的智能体;
- 明确开发过程中需要关注的安全要点;
- 掌握在智能体工作流中保护数据与用户隐私的方法。
学习目标
完成本节后,你将能够:
- 辨识并缓解构建智能体时的常见风险;
- 实施必要的安全措施,确保数据与权限得到妥善管理;
- 设计既重视隐私又兼顾用户体验的智能体。
安全性(Safety)
构建安全的智能体应用,意味着智能体按设计行为运行。作为开发者,我们可以运用多种方法与工具最大限度地提升安全性。
搭建系统消息框架
如果你曾使用 LLM 构建应用,一定熟悉系统提示(System Prompt)的重要性——它决定了模型的角色设定、交互规则与行为边界。智能体需要更精细的指令来完成特定任务,因此我们可以构建一套可复用的系统消息框架,为单个或多个智能体生成高质量的系统提示。

步骤 1:编写元系统消息
元系统消息用于指导 LLM 帮我们生成最终的系统提示。我们通常将其设计为模板,以便快速扩展到多个智能体。例如:
plaintext
You are an expert at creating AI agent assistants.
You will be provided a company name, role, responsibilities and other
information that you will use to provide a system prompt for.
To create the system prompt, be descriptive as possible and provide a structure that a system using an LLM can better understand the role and responsibilities of the AI assistant.步骤 2:提供基础描述
随后撰写一段基础提示,描述智能体的角色、负责的任务以及其他职责,例如:
plaintext
You are a travel agent for Contoso Travel that is great at booking flights for customers. To help customers you can perform the following tasks: lookup available flights, book flights, ask for preferences in seating and times for flights, cancel any previously booked flights and alert customers on any delays or cancellations of flights.步骤 3:组合输入生成系统消息
将元系统消息作为系统提示,基础描述作为输入交给 LLM,便能得到结构更清晰、可读性更好的系统消息示例(节选如下):
markdown
**Company Name:** Contoso Travel
**Role:** Travel Agent Assistant
**Objective:**
You are an AI-powered travel agent assistant for Contoso Travel, specializing in booking flights and providing exceptional customer service. Your main goal is to assist customers in finding, booking, and managing their flights, all while ensuring that their preferences and needs are met efficiently.
**Key Responsibilities:**
1. **Flight Lookup:**
- Assist customers in searching for available flights ...
2. **Flight Booking:**
- Facilitate the booking of flights ...
...通过这一流程,可以高效生成语气统一、结构清晰的系统提示,确保智能体在执行任务时具备一致的行为基线。
步骤 4:迭代优化
系统消息框架的价值在于可扩展与可持续改进。很难一次就写出覆盖所有场景的完美提示。借助该框架,我们可以快速调整基础描述、重新生成系统消息,并对比不同版本的表现,从而逐步打磨最佳实践。
识别威胁
要构建可信赖的智能体,首先要了解潜在威胁,并针对性地制定防护策略。

1. 指令与任务篡改
- 攻击方式:通过提示注入或恶意输入,试图改变智能体的目标或执行流程。
- 缓解措施:对输入进行验证与过滤,识别潜在危险提示;限制单次会话的轮数,降低攻击者反复尝试的机会。
2. 访问关键系统
- 攻击方式:利用智能体与后端系统的通信渠道,窃取或篡改敏感数据。
- 缓解措施:仅赋予智能体最小所需权限,确保通信链路加密,并配套身份认证与访问控制。
3. 资源与服务过载
- 攻击方式:借助智能体调用大量外部工具或服务,造成资源耗尽或成本失控。
- 缓解措施:为智能体设置调用频率和并发限制,同时控制会话轮数与请求数量。
4. 知识库投毒
- 攻击方式:直接污染智能体依赖的数据源或知识库,诱导其输出偏差或错误答案。
- 缓解措施:定期校验数据、限制写入权限,只允许可信主体修改知识库。
5. 级联错误
- 攻击方式:攻击者诱导某个工具或服务异常,引发整个链路的连锁故障,放大影响范围。
- 缓解措施:在隔离环境(如 Docker)中运行智能体,配备备用机制与重试逻辑,防止单点故障扩散。
人在回路(Human-in-the-Loop)
在人机协同流程中引入“人在回路”,可以显著提升可信度。用户可在智能体运行过程中随时介入,给予反馈、批准或终止任务,在多智能体系统中扮演“人工代理”的角色。

以下示例展示了如何用 AutoGen 实现“人在回路”:
python
model_client = OpenAIChatCompletionClient(model="gpt-4o-mini")
assistant = AssistantAgent("assistant", model_client=model_client)
user_proxy = UserProxyAgent("user_proxy", input_func=input)
termination = TextMentionTermination("APPROVE")
team = RoundRobinGroupChat([assistant, user_proxy], termination_condition=termination)
stream = team.run_stream(task="Write a 4-line poem about the ocean.")
await Console(stream)小结
构建可信赖的智能体,需要在架构设计、安全策略与持续迭代之间取得平衡。通过系统化的提示工程、威胁识别与缓解措施,以及人在回路等手段,可以在保证安全与隐私的同时,持续提升用户体验。随着智能体能力的增强,开发者也应保持前瞻性,持续关注安全、隐私与伦理相关的最佳实践。
常见问题交流
欢迎加入 Azure AI Foundry Discord,与其他学习者交流问题或参加办公时间。
