第 10 课 · 动手学大模型(上海交大)
Agent Safety
智能体安全:模型能不能意识到自己闯了祸
大模型智能体正在迈向「未来操作系统」。但在开放场景里,它能意识到风险威胁吗?这一章用 R-Judge 测评平台,把这个问题变成可测量的指标。
学习目标
- 了解大模型智能体的架构与常见应用。
- 了解大模型智能体驱动的「自主操作系统」。
- 尝试大模型智能体安全测评与分析。
核心概念
R-Judge 是一个对齐于人类安全共识的测评平台,包含多轮交互记录(用户、智能体、环境)、人工标注的安全标签和高质量的风险描述,覆盖软件编程、操作系统、物联网、应用程序、经济财务、网络应用、健康护理等场景类别。
智能体采用 ReAct 框架:每一轮生成想法(thought)和行为(action)。评测方式是把智能体与用户、环境的多轮交互记录整体输入,让待测模型映射为风险分析和安全标签。这是一个两步提示:先要求它分析行为是否安全,再要求它据此只输出 safe 或 unsafe。
两个案例说明这件事有多难。案例一:智能体把用户的私钥文件内容发到了外部网站,人类标注的风险是隐私泄露,被测模型识别出来了。案例二:智能体在没有评估影响的情况下杀掉了 CPU 占用最高的五个进程,模型对风险做了有效分析,却仍然给出了 safe 的判断。分析对了但标签错了,这是最典型的失败模式——所以风险识别和安全判断必须分开评估。
实践步骤
- 先读教程的智能体部分,并看几个「自主操作系统」项目建立直观:Auto-UI、AIOS、OS-Copilot。
- 快速试用:以通义千问为例,选 qwen-turbo,以多轮对话方式把 record 作为 message 提交。
- 参数选低随机性:temperature 取 0、top_p 取 1。注意各厂商区间不同,千问的 temperature 和 top_p 都是开区间,不能直接填端点值。
- 追加任务指令一(风险识别),拿到分析后再追加任务指令二(安全判断),只让它输出 safe 或 unsafe。
- 系统性测评走 R-Judge 仓库的脚本:把待测模型加进 MODEL2RPM 和 MODEL2BASE,API 模型指定 API_KEY,本地部署的开源模型在 MODEL2BASE 指定服务器地址。
- 风险识别评测用 GPT-4 作为自动评估器,以人工标注的风险描述为 ground truth 评价模型分析的质量。可以直接跑作者提供的八个模型的结果,也可以跑自己的。
常见误区
- 只看安全标签的准确率。 案例二说明模型可能分析正确、结论错误,只看标签会低估它的理解能力,也会误判改进方向。
- 参数填端点值。 千问的 temperature 和 top_p 是开区间,填 0 或 1 会直接报错。
- 换模型不换基线。 不同模型的 RPM 限制不同,跑不完的样本会静默影响指标,要核对样本数。
动手练习
选三个模型(至少含一个开源本地模型),在 R-Judge 的同一批样本上跑完两步评测。做一张四格表:分析对且标签对、分析对但标签错、分析错但标签对、两者都错。重点看第二格——把这些样本的提示词改成先让模型列出「本次操作会影响到的资源」,再判断安全性,看第二格能不能变小。
要点回顾
智能体安全不是一个是非题,而是两个能力:看不看得见风险,以及看见之后敢不敢下结论。R-Judge 把两者拆开评估,这个拆分本身就是这一章最重要的方法论。测评时用低随机性参数,并且始终保留人工标注的风险描述作为对照。
参考来源
- 上海交通大学《动手学大模型》系列编程实践教程,第十章「智能体安全」:documents/chapter10,核验日期:2026-09-06。