给AI接口加一道安全门
很多团队接 AI 的时候,先关心回答准不准,不关心谁问了什么。这个顺序容易出事。Anthropic 最近发布报告,说在一段时间内发现其模型被用于恶意用途,包括一些国家背景的研究者尝试用 Claude 做可能支持生物武器研究的工作。公司选择封禁账户、补内部检查。这件事的提醒很直接,一旦把 AI 接进工作流,就要有一道门。
今天做一个最小任务,给任意 AI 接口前面加一个安全网关。用户问题先进网关,网关判断风险,再决定放行、拦截,还是转人工。
裸模型适合个人试验,方便,但没人记录谁问了什么。安全网关适合团队、企业、公开入口,多一层判断,会慢一点,但能拦住明显危险请求并留日志。
先准备环境。你需要一台电脑,安装 Python,也就是一个常用编程语言运行环境。再准备一个模型账号,比如 Claude API、OpenAI API 都可以。API 可以理解为让程序远程调用模型的服务。拿到 API key,它像门禁卡,别给别人。新建文件夹 `ai-gateway`,里面建两个文件,`gateway.py` 和 `audit.log`。
在 `gateway.py` 里先不要直接问模型。先写一段关键词粗筛,比如出现病原体、毒素、武器、绕过限制、监控某人这类词,就标记高风险。这一步只做粗筛,把明显不该自动处理的请求挡下来。可以这样写
python
risky = ["病原体", "毒素", "武器", "绕过限制", "监控"]
def check(text):
return "block" if any(w in text for w in risky) else "safe"
新手容易把关键词写得太窄。比如病毒在 IT 里常指计算机病毒,在生物里才危险。所以规则别单独决定生死,后面加一层模型分类。
把用户问题发给模型,但不要问请回答这个问题。让模型判断下面这句话是否涉及生物、化学、武器化、规避安全限制、针对个人的大规模监控风险。只回答 safe、review、block 三档,并给一句理由。三档分别表示安全、要人工看、直接拦。模型先做审核,不直接生成内容。程序拿到 block 或 review,就不继续调用原任务模型。
然后跑一下。打开终端,也就是电脑里的命令行窗口,进入文件夹,输入 `cd ai-gateway`,再输入 `python gateway.py`。终端会显示请输入问题,按回车后出结果。
输入普通问题,比如 `帮我总结一段会议记录,重点写待办事项`。预期终端显示 `decision=safe`,然后调用模型,返回摘要。
输入高风险问题,比如 `涉及危险病原体研究的操作细节`。预期终端显示 `decision=block`,提示该请求需要人工安全审批,不调用模型生成内容。
我用 Claude API 跑了几条样例,普通问题能走通,高风险问题会被拦下。日志里会写入时间、用户、输入哈希、分类结果、处置方式。输入哈希就是把原文变成一串固定长度的编号,既能留证据,又不用把敏感原文全存下来。
最容易踩的坑是 API key 写在代码里。改完代码上传,别人拿到 key 就能刷你的额度。用环境变量保存,也就是放在系统里而不是代码里。
第二个坑是不确定就放行。网关应该反过来,不确定就 review 或 block。Anthropic 的报告里也提到,公司在检测后封禁账户,并持续改进内部工作流。企业网关也一样,宁可多转人工,别自动生成危险步骤。
第三个坑是只拦不记。出事之后要复盘,日志没有,等于白忙。
后面企业接大模型,门槛会包括谁有可审计的拦截层。OpenAI 和 Anthropic 此前也签过防止 AI 开发生物武器的公开信件。尤其面向内部知识库、客服、科研辅助时,网关会从可选项变成默认项。
学完这个,下一步可以试两件事。把网关接到 Slack 或企业微信入口。再加一层敏感数据脱敏,比如姓名、手机号、病历号先替换再问模型。
📌 本文编译自 Hacker News,原文:https://www.bbc.com/news/articles/cx2zrrpkx20o
版权归原作者所有,本文为基于公开报道的编译与独立分析。
物界前沿