0Pricing
AI Agents · 课时

输出过滤(Llama Guard、NeMo)

在输出上运行较小的防护模型,在发布前检测有害内容、PII 泄露和违反策略的内容。

输出过滤(Llama Guard、NeMo) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

为什么要过滤输出?

即使输入是安全的,模型仍可能输出:

  • 个人数据泄露
  • 仇恨言论或骚扰内容
  • 自残内容
  • 违反用户意图的工具调用

输出过滤器是用户看到任何内容前的最后一道防线。

Llama Guard

Meta 的安全分类器——开放权重,速度非常快:

from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-Guard-3-8B')
# Outputs 'safe' or 'unsafe' with category.

NeMo Guardrails

NVIDIA NeMo Guardrails——使用检查机制封装 LLM 的 Python 框架:

# pip install nemoguardrails
from nemoguardrails import RailsConfig, LLMRails

config = RailsConfig.from_path('./config')
rails = LLMRails(config)
response = rails.generate(messages=[{'role': 'user', 'content': '...'}])

Guardrails AI

guardrails-ai 是专注于验证和防护的 Python 库。它支持基于 XML 的“防护轨道”和 reAsk 修复循环。

Anthropic 宪法分类器

Anthropic 发布了一个分类器(作为 Claude 安全训练的补充)。它适用于对任何模型输出进行事后过滤。

基于 LLM 的自定义过滤器

成本最低的方案是使用较小的 LLM 来筛选输出:

FILTER_PROMPT = '''
Analyse the output. Return JSON: {safe: true/false, reason: str, categories: list}

Unsafe categories: PII leak, harmful instructions, copyright violation, prompt-injection echo.

Output:
{output}
'''

result = guard_llm.invoke(FILTER_PROMPT.format(output=text))

正则表达式 / 规则过滤器

对于特定模式,正则表达式快速且可靠:

import re
EMAIL_RE = re.compile(r'[\w\.-]+@[\w\.-]+')
SSN_RE = re.compile(r'\b\d{3}-\d{2}-\d{4}\b')

def has_pii(text):
    return bool(EMAIL_RE.search(text) or SSN_RE.search(text))

# --- demo ---
samples = ['Contact me at jane@example.com', 'My SSN is 123-45-6789', 'No PII in this sentence']
for s in samples:
    print(f'{s!r} -> has_pii={has_pii(s)}')

PII 脱敏

不要只进行阻止——有时可以进行脱敏,让其余内容通过:

def redact(text):
    text = EMAIL_RE.sub('[email]', text)
    text = SSN_RE.sub('[ssn]', text)
    return text

双层过滤器

先使用快速规则,再使用成本较高的 LLM:

def filter_output(text):
    if has_obvious_pii(text):
        return BLOCKED
    result = guard_llm.invoke(...)
    return result

流式输出

对于流式输出,请逐个 SENTENCE-BY-SENTENCE 进行过滤:

buf = ''
for token in stream:
    buf += token
    if buf.endswith(('. ', '! ', '? ', '\n')):
        if not safe(buf):
            stream.close()
            emit_to_client('[content filtered]')
            break
        emit_to_client(buf)
        buf = ''

误报与漏报

请调整到适当的平衡:

  • 高风险场景(医疗、金融):倾向于误报(阻止更多内容)
  • 创意或娱乐内容:倾向于漏报(阻止更少内容)

过滤日志包含敏感信息

过滤日志包含被阻止的内容。请使用较短的存活时间安全存储:

log.warning('Blocked output', extra={'reason': r, 'category': c}, sanitize_payload=True)

向用户说明

阻止内容时,请告诉用户原因,以免他们反复提交重试:

def handle_privacy_request():
    return 'I cannot share that information for privacy reasons.'

print(handle_privacy_request())

多层过滤器

为什么要将正则表达式与基于 LLM 的过滤结合起来?

回顾

Llama Guard / NeMo / 自定义 LLM 过滤器 + 正则规则。采用两层防护。可能时进行脱敏。内容被阻止时,始终告知用户。

常见问题解答

「输出过滤(Llama Guard、NeMo)」课时是免费的吗?

是的 — 「输出过滤(Llama Guard、NeMo)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「输出过滤(Llama Guard、NeMo)」这节课中我会学到什么?

在输出上运行较小的防护模型,在发布前检测有害内容、PII 泄露和违反策略的内容。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「输出过滤(Llama Guard、NeMo)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 提示词注入防御
  2. 输出过滤(Llama Guard、NeMo)
  3. 代码智能体的沙盒执行
  4. 工具访问控制
← 返回 AI Agents