本文收录于专栏《AI Agent原理与实战》2026版—— 专栏系统覆盖 AI Agent 的记忆、工具、插件与实战,点击订阅可跟踪后续更新。
本课定位:系统能跑只是及格线,能被信任才能上线。本课讲三道防线:输出质量(系统消息框架)、威胁图谱五类风险、工具权限分级与 human-in-the-loop 确认闸门,实战给"删数据/改订单"加闸。总纲建议你在第 14 课后提前学本课——边界意识越早越好。
阶段 5|生产与安全 | 来源:课程自研补充
关键字:可信Agent、输出质量保障、权限分级、人在回路、安全边界、审核机制、风险防控、生产就绪
本节目录
- 25.1 "可信赖"拆开看是什么
- 25.2 输出质量保障:系统消息框架
- 25.3 威胁图谱:五类风险与缓解
- 25.4 工具权限分级与执行边界
本节目录
- 25.1 "可信赖"拆开看是什么
- 25.2 输出质量保障:系统消息框架
- 25.3 威胁图谱:五类风险与缓解
- 25.4 工具权限分级与执行边界
概念讲解
25.1 "可信赖"拆开看是什么
微软原课第 6 课把 trustworthy agent 的要求归纳为三件事:按设计执行(safety)、数据与访问受控(security)、隐私得到保护(privacy)。落到工程上,可信赖是三道防线的叠加:
- 输出质量保障——Agent 说的内容可靠、行为可预期;
- 工具权限分级——Agent 能做什么被明确划界,越界动作在代码层被拦住,而不是靠模型"自觉";
- 人机协同(Human-in-the-loop,人在回路)——高风险动作必须有人按下确认键才执行。
Anthropic 在 2025 年 8 月发布的可信赖 Agent 开发框架(2026-04 追加实践篇,检索日 2026-10,anthropic.com/research/trustworthy-agents)给出同样的结构,五条核心原则:人类保持控制权、对齐人类价值观、保障 Agent 交互安全、保持透明、保护隐私。两家口径的共同点值得记住:可信赖不是模型属性,是系统属性——它由你围绕模型搭的工程结构决定,而不是由模型能力决定。
25.2 输出质量保障:系统消息框架 (微软第 6 课:System Message Framework 四步法)
Agent 的系统提示词(system message)比普通聊天应用更重要,因为 Agent 要拿着它去驱动工具调用。微软课给出的可扩展做法是系统消息框架(system message framework),四步:
- 写一条元提示词(meta system message):让 LLM 扮演"系统提示词工程师",输入公司名、角色、职责,输出完整 system message;
- 写基础提示词:一段朴素的角色+任务描述(例:“你是 Contoso Travel 的订票助手,可以查航班、订票、取消订单……”);
- 组合生成:元提示词作 system、基础提示词作 user,让模型产出结构化的最终 system message(含目标、职责清单、语气、交互规则);
- 迭代改进:改基础提示词重新生成,对比评估——第一条 system message 几乎不可能一次写对。
这个框架的价值在于规模化:多个 Agent 共用一条元提示词,风格与安全条款一致,出问题只改一处。输出质量的更系统性度量(在线/离线评估、指标体系)在第 26 课展开。
25.3 威胁图谱:五类风险与缓解 (微软第 6 课:Understanding Threats)
微软课列出的五类威胁,配合缓解措施:
| 威胁 | 攻击方式 | 缓解 |
|---|---|---|
| 任务与指令篡改 | 通过输入改变 Agent 的指令或目标 | 输入校验与过滤;限制对话轮数 |
| 关键系统访问 | Agent 持有敏感系统权限,通信被攻击或被套话 | 按需授权;通信加密;认证与访问控制 |
| 资源与服务过载 | 借 Agent 之手高频调用工具服务,制造故障或账单 | 限制请求数与轮数;预算上限 |
| 知识库投毒 | 不攻击 Agent 本身,污染它读的知识库/检索源 | 定期校验数据;写入仅限可信方 |
| 级联错误 | 一个工具的错误扩散到下游系统 | 受限执行环境(容器);重试与降级路径 |
注意这五条里只有第一条是"提示词层"的问题,其余四条都要靠工程控制解决。这也是本课案例的出发点:把"信任"写进代码,而不是写进提示词。
25.4 工具权限分级与执行边界 (微软第 6 课 Human-in-the-loop 思想的本课工程化)
给工具分三级是最小权限原则(principle of least privilege)的落地形式:
- read(只读):查询类工具,可自动执行;
- write(可写):改变外部状态的工具(下单、改地址、发邮件),执行前需人工确认;
- deny(禁止):任何场景都不该由 Agent 触发的操作(删库、转账给新账户),直接拒绝。
分级的判断依据是可逆性与影响面:只读操作天然可逆;写操作需要确认;不可逆且影响大的操作没有理由暴露给模型。哪些操作必须人工确认?微软课给的判据是"用户批准或终止运行中的过程"——用户在多 Agent 系统里本身就是一个"Agent",拥有最终否决权。
案例实战:给"删数据/改订单"类操作加确认闸门
运行环境:本案例为纯 Python 标准库实现,无第三方依赖。Windows 环境:安装 Python 3.10+(python.org 下载或winget install Python.Python.3.12),python l25_gate_demo.py直接运行;Linux/macOS 同样零依赖可直接运行。以下实测在 Linux(Python 3.10.12)完成,输出在 Windows 上逐字节一致(代码只用json/input/print,无平台相关调用)。
目标:实现一个权限分级执行器——只读自动放行、写操作弹人工确认、危险操作直接拒绝,且每一步落审计日志。
步骤:
- 定义工具策略表(
TOOL_POLICY):每个工具标 tier; - 实现
gated_execute():按 tier 分流,write 级暂停等待输入; - 每次决策追加审计日志(谁、何时、什么参数、放行还是拒绝)。
完整代码(纯 Python 标准库,无框架依赖):
# 权限分级 + 人工确认闸门 + 审计日志(纯标准库)# 【已实测】2026-10,Python 3.10importjson TOOL_POLICY={"query_order":{"tier":"read","require_approval":False},"search_kb":{"tier":"read","require_approval":False},"update_address":{"tier":"write","require_approval":True},"cancel_order":{"tier":"write","require_approval":True},"drop_table":{"tier":"deny","require_approval":None},# 永不执行}AUDIT_LOG=[]defgated_execute(tool_name:str,args:dict,approver=None)->dict:policy=TOOL_POLICY.get(tool_name)ifpolicyisNone:return{"ok":False,"reason":f"未注册工具:{tool_name}"}tier=policy["tier"]iftier=="deny":AUDIT_LOG.append({"tool":tool_name,"args":args,"decision":"DENY"})return{"ok":False,"reason":"该操作被策略禁止 (tier=deny)"}iftier=="read":result=TOOLS_IMPL[tool_name](**args)AUDIT_LOG.append({"tool":tool_name,"args":args,"decision":"AUTO","result":result})return{"ok":True,"result":result,"approved":"auto"}# tier == "write": 人工确认闸门print(f"⚠️ 待确认操作:{tool_name}({json.dumps(args,ensure_ascii=False)})")answer=input(" 输入 yes 执行 / 其他取消: ").strip().lower()ifanswer=="yes":result=TOOLS_IMPL[tool_name](**args)AUDIT_LOG.append({"tool":tool_name,"args":args,"decision":"APPROVED","approver":"human"})return{"ok":True,"result":result,"approved":"human"}AUDIT_LOG.append({"tool":tool_name,"args":args,"decision":"REJECTED","approver":"human"})return{"ok":False,"reason":"人工否决"}(TOOLS_IMPL为各工具的具体实现字典,完整脚本见本课代码包l25_gate_demo.py。)
预期输出(实测 2026-10):
== 1. 只读: 自动执行 == -> {'ok': True, 'result': {'status': '已发货', ...}, 'approved': 'auto'} == 2. 写操作: 人工确认 (输入 yes) == ⚠️ 待确认操作: cancel_order({"order_id": "A1001", "reason": "买重复了"}) -> {'ok': True, 'result': {'status': '订单已取消', ...}, 'approved': 'human'} == 3. 写操作: 人工否决 == -> {'ok': False, 'reason': '人工否决', 'approved': 'human'} == 4. 危险操作: 直接拒绝 == -> {'ok': False, 'reason': '该操作被策略禁止 (tier=deny)'} == 审计日志 == {"tool": "query_order", "decision": "AUTO", ...} {"tool": "cancel_order", "decision": "APPROVED", "approver": "human", ...} {"tool": "update_address", "decision": "REJECTED", ...} {"tool": "drop_table", "decision": "DENY"}要点:闸门在工具执行层而不是提示词层——无论模型被怎样诱导(参见第 29 课的注入攻击实验),drop_table都不会执行,写操作都必须有人按确认。这就是"系统属性"的含义。
接国产模型:闸门逻辑与模型完全解耦,gated_execute()不关心上层是谁在决策。把 Agent 的 LLM 后端换成国产模型(DeepSeek/GLM/MiniMax/MiMo,均支持 OpenAI 兼容 tools 协议,接入方法见第 7 课"国内模型适配"节)后,闸门代码零改动——这正是"把信任写进代码而不是提示词"的直接收益:第 29 课实测同一注入 prompt 下不同模型的被劫持率差异很大(本地小模型 30%,云端商业模型 0/10),但闸门让任何劫持率都无法变现。
小结
- 可信赖 = 输出质量 + 权限分级 + 人在回路,是系统属性而非模型属性;
- 系统消息框架让多个 Agent 的安全条款可规模化维护;
- 五类威胁中四类靠工程控制缓解,提示词只是第一道闸;
- 工具三级分级的判据是可逆性与影响面,闸门必须设在代码层;
- 审计日志是事后追责与第 29 课"密码学回执"的基础。
参见第 7 课《工具调用模式:给模型装上双手》(工具的注册与执行链路)、第 26 课《生产环境:稳定性、成本与可观测》(输出质量的度量体系)、第 29 课《Agent 安全》(对闸门的攻击测试)。
扩展阅读
🌐 网络提示:github.com 需代理(clone 可走 ghproxy 加速、push 优先 SSH);anthropic.com 需代理(核心结论已摘进本课正文);openai.com 系需代理(协议层知识已进正文,实测均可用国产端点替代)。详见总纲附录《国内网络访问与国产适配指南》。
- 微软原课第 6 课(含 system message framework 与 HITL notebook):https://github.com/microsoft/ai-agents-for-beginners/tree/main/06-building-trustworthy-agents
- Anthropic 可信赖 Agent 框架(2025-08):https://www.anthropic.com/research/trustworthy-agents
- Anthropic《Building Effective Agents》:https://www.anthropic.com/engineering/building-effective-agents
- OpenAI Agents SDK Guardrails 文档(input/output 护栏):https://openai.github.io/openai-agents-python/guardrails/
- Azure Responsible AI 概述:https://learn.microsoft.com/azure/ai-studio/responsible-use-of-ai-overview
我的专栏
| 蛋白 / 抗体 / 多肽 / 核酸 | 分子模拟 / 动力学 / 对接 | 药物 / 设计 / 案例 | AI / Agent / 大模型 |
|---|---|---|---|
| 开源蛋白结构预测 | 分子模拟基础 | 小分子药物设计案例 | AI Agent系列 |
| 开源蛋白生成方法实践 | 分子动力学模拟-Amber | 蛋白药物设计案例 | 化学大模型 |
| 开源多肽设计模型 | 分子动力学模拟-Gromacs | 多肽药物设计案例 | 《AI Agent原理与实战》 |
| 开源多肽性质预测 | 分子动力学模拟-OpenMM | 开源小分子生成设计 | CADD中的机器学习模型 |
| DNA/RNA药物设计 | 結合自由能 | 高效计算配置 | 《MCP 入门实战》 |
| siRNA药物设计模型 | UCSF DOCK系列 | 我胡师兄说药 | 《AI入门实战2026》 |
| ASO药物设计模型 | rDock系列 LeDock系列 gnina系列 | 《经典机器学习实战》 |