Skip to main content

SystemPromptScrubber

SystemPromptScrubber 是一个 输出处理器,它能够检测和处理系统提示、指令以及其他可能引入安全漏洞的敏感信息。该处理器通过识别各种类型的系统提示并提供灵活的处理策略来帮助维护安全,包括多种信息删除方法,以确保敏感信息得到妥善清理。

🌐 The SystemPromptScrubber is an output processor that detects and handles system prompts, instructions, and other revealing information that could introduce security vulnerabilities. This processor helps maintain security by identifying various types of system prompts and providing flexible strategies for handling them, including multiple redaction methods to ensure sensitive information is properly sanitized.

使用示例
Direct link to 使用示例

🌐 Usage example

import { SystemPromptScrubber } from "@mastra/core/processors";

const processor = new SystemPromptScrubber({
model: "openrouter/openai/gpt-oss-safeguard-20b",
strategy: "redact",
redactionMethod: "mask",
includeDetections: true
});

构造函数参数
Direct link to 构造函数参数

🌐 Constructor parameters

options:

Options
Configuration options for system prompt detection and handling

选项
Direct link to 选项

🌐 Options

model:

MastraModelConfig
Model configuration for the detection agent

strategy?:

'block' | 'warn' | 'filter' | 'redact'
Strategy when system prompts are detected: 'block' rejects with error, 'warn' logs warning but allows through, 'filter' removes flagged messages, 'redact' replaces with redacted versions

customPatterns?:

string[]
Custom patterns to detect system prompts (regex strings)

includeDetections?:

boolean
Whether to include detection details in warnings. Useful for debugging and monitoring

instructions?:

string
Custom instructions for the detection agent. If not provided, uses default instructions

redactionMethod?:

'mask' | 'placeholder' | 'remove'
Redaction method for system prompts: 'mask' replaces with asterisks, 'placeholder' replaces with placeholder text, 'remove' removes entirely

placeholderText?:

string
Custom placeholder text for redaction when redactionMethod is 'placeholder'

返回
Direct link to 返回

🌐 Returns

id:

string
Processor identifier set to 'system-prompt-scrubber'

name?:

string
Optional processor display name

processOutputStream:

(args: { part: ChunkType; streamParts: ChunkType[]; state: Record<string, any>; abort: (reason?: string) => never; tracingContext?: TracingContext }) => Promise<ChunkType | null>
Processes streaming output parts to detect and handle system prompts during streaming

processOutputResult:

(args: { messages: MastraDBMessage[]; abort: (reason?: string) => never }) => Promise<MastraDBMessage[]>
Processes final output results to detect and handle system prompts in non-streaming scenarios

扩展使用示例
Direct link to 扩展使用示例

🌐 Extended usage example

在使用 SystemPromptScrubber 作为输出处理器时,建议将其与 BatchPartsProcessor 结合使用以优化性能。BatchPartsProcessor 会将流块批量组合在一起,然后再传递给清理器,从而减少检测所需的 LLM 调用次数。

🌐 When using SystemPromptScrubber as an output processor, it's recommended to combine it with BatchPartsProcessor to optimize performance. The BatchPartsProcessor batches stream chunks together before passing them to the scrubber, reducing the number of LLM calls required for detection.

src/mastra/agents/scrubbed-agent.ts
import { Agent } from "@mastra/core/agent";
import { BatchPartsProcessor, SystemPromptScrubber } from "@mastra/core/processors";

export const agent = new Agent({
name: "scrubbed-agent",
instructions: "You are a helpful assistant",
model: "openai/gpt-5.1",
outputProcessors: [
// Batch stream parts first to reduce LLM calls
new BatchPartsProcessor({
batchSize: 10,
}),
// Then apply system prompt detection on batched content
new SystemPromptScrubber({
model: "openrouter/openai/gpt-oss-safeguard-20b",
strategy: "redact",
customPatterns: ["system prompt", "internal instructions"],
includeDetections: true,
redactionMethod: "placeholder",
placeholderText: "[REDACTED]"
}),
]
});

🌐 Related