# 这门 LLM 安全课，最长的一课讲的是监控

> 配合 SelfCheckGPT 和 LangKit 学完这门两小时课程，“它会不会胡编”就能用数字回答。

原文: https://fdetimes.net/zh/books-courses/quality-safety-llm-applications-course/

*Quality and Safety for LLM Applications* 里最长的一课，讲的不是幻觉，也不是越狱，而是“Passive and active monitoring”（被动与主动监控），时长 28 分钟，比其他任何一课都长。单看时长就能看出课程的立场：LLM 应用的安全需要持续跟踪，而不是测一次就丢在一边。

对前线部署工程师（FDE）来说，这是日常工作。演示在样例数据上跑得很顺。等到接入客户真实数据的第一周，就会有人问：“我们怎么知道它没在胡编？”最好的回答不是一句保证，而是一个数字。

## 谁来讲，四节课讲什么？

这门课属于 DeepLearning.AI 的短课系列，与 WhyLabs 合作制作。讲师是 WhyLabs 的数据科学家 Bernease Herman。WhyLabs 开发了 LangKit，这是一个开源工具包，可以从语言模型的输入和输出中计算文本指标，用于监控。

课程为入门级，时长 2 小时 16 分钟。课程目标相当具体：检测和防范幻觉、越狱与数据泄露，再随着时间推移持续监控、改进防护措施。

核心是四段视频：“Hallucinations”（幻觉）25 分钟，“Data Leakage”（数据泄露）19 分钟，“Refusals and prompt injections”（拒答与提示注入）26 分钟，以及 28 分钟的监控课。最后是一次计分测验。整门课一个下午就能学完。

想把每一课变成马上能用的技能，可以同时读三样东西：SelfCheckGPT 论文、LangKit 源码，以及 Openlayer 的个人身份信息（PII）检测指南。下文的度量方法都出自这些资料。

## 胡编的模型会自相矛盾

幻觉这一课适合搭配 SelfCheckGPT 来学。这是 Manakul、Liusie 和 Gales 于 2023 年 3 月发表的方法，优势在于无需外部参考数据库就能检测幻觉，只依赖多次采样回答之间的一致性。

思路很简单：如果模型真的知道某件事，多次采样会给出相同的答案；如果是在编造，答案往往会分散。

假设你在为一家保险公司部署内部聊天机器人。用户问理赔申请的截止期限。你调用模型 5 次，5 次都回答“30 天”，这个答案就更可信。

如果得到的是 30、45、30、60 和 14 天，就是一个警示信号，尽管每个答案单独看都显得十分笃定。

在客户现场，你很少能拿到现成的标准答案，所以这个方法可以立即使用。第一步：抽取一小批真实问题，计算回答出现分歧的比例，带着这个数字去开会，而不是凭“看起来没问题”的感觉。

## 提示注入也能量化

LangKit 根据提示与已知攻击的相似程度，给提示注入风险打分。模糊的风险由此变成一个数字，可以设阈值、记日志、画图表。

由于分数基于与已知攻击的相似度，全新类型的攻击可能得分很低。即便如此，对企业客户而言，一个可度量的过滤器也远胜于在系统提示里告诉模型“不要做坏事”。

**要点:** 只有把风险变成每天跟踪的数字，它才是可管理的。

## 数据泄露从一条正则表达式开始

“Data Leakage”是四节核心课里最短的一课，却触及真实数据接入系统时客户最大的担忧。把这种担忧变成数字，最简单的办法就是计数。

LangKit 有一个 patterns 指标，统计与你自定义的一组正则表达式相匹配的字符串。WhyLabs 的 LangKit 容器默认会在提示和回答中检测电子邮件地址、电话号码、信用卡号等 PII。

回到上面的保险客户，假设他们的保单号格式固定。你为这种格式写一条正则，再加上电子邮件和电话号码，在第一周的 1,000 条回答上运行。匹配到 3 条，泄露率就是 0.3%。

WhyLabs 容器还允许为每个指标设置阈值，于是这个数字就变成了一份通过或不通过的报告。

正则有盲区。Openlayer 指出，它会漏掉自由形式的 PII，比如句子中间的人名或被截断的证件号，因此需要与其他检测器配合使用。Red Hat OpenShift AI 在输入和输出的防护机制中也使用了正则检测器。正则是第一道防线，但不是唯一一道。

## 为什么监控这一课最值得细学？

真实用户和写测试的人总是不一样。第一周写好的测试集，很难预料客户员工在第三个月会输入什么。

Openlayer 观察到，PII 泄露率会随时间变化，而生产环境监控正是看到这种变化的地方。所以 0.3% 这个数字应该每周测一次，而不是只测一次。

还有一条边界要跟客户讲清楚。按照 Openlayer 的说法，记录日志只是观察，在推理时拦截才是执行。给 FDE 的建议：从一开始就约定好，哪些指标只需告警，哪些指标一旦超过阈值就必须拦截回答。

## 适合谁学，按什么顺序学？

这门课适合已经做过 LLM 应用（比如一个简单的检索增强生成（RAG）系统）、现在需要在客户面前为它辩护的工程师。如果你还没调用过模型 API，先做一个小项目，这样手里有自己的数据可以试验这些方法。

先学幻觉，再学提示注入和数据泄露。监控留到最后：那时你已经通过前三课亲手测过几个指标，就有了具体可监控的东西。至少在自己的数据上试过一种方法后，再做测验。

职业方面，留意那些提到 LLM 评测、防护机制（guardrails）或监控的 FDE 岗位。简历上不要写“已完成课程”，要写你度量了什么，例如“在内部聊天机器人上每周跟踪 PII 泄露率和自相矛盾率”。

客户不会问你上过哪门课。他们会问上周模型泄露了几次数据，而好的 FDE 能用一个数字回答。

**本周动手试试:**

- 挑 10 个客户的真实问题，每个问题以较高的 temperature 调用模型 5 次，标出回答互相矛盾的问题
- 为电子邮件地址、电话号码和客户 ID 编写正则，在最近 1,000 条回答上运行，计算匹配率
- 改写简历中的一行：写明你度量过的一种风险，以及系统上线后你如何监控它

## 信源

- [Quality and Safety for LLM Applications - DeepLearning.AI](https://www.deeplearning.ai/short-courses/quality-safety-llm-applications/)

- [Course: quality-safety-llm-applications - DeepLearning.AI Learn](https://learn.deeplearning.ai/courses/quality-safety-llm-applications)

- [SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models](https://arxiv.org/abs/2303.08896)

- [whylabs/langkit: An open-source toolkit for monitoring Large Language Models (LLMs)](https://github.com/whylabs/langkit)

- [WhyLabs documentation: LangKit container integration](https://docs.whylabs.ai/docs/integrations-llm-whylogs-container/)

- [PII Detection in LLM Outputs: AI Team Guide](https://www.openlayer.com/blog/post/llm-output-pii-detection)

- [Using FMS Guardrails for AI safety - Red Hat OpenShift AI](https://docs.redhat.com/en/documentation/red_hat_openshift_ai_self-managed/3.5/html/enabling_ai_safety_with_guardrails/using-guardrails-for-ai-safety_safety)
