跳到主要内容

LanguageDetector

LanguageDetector 是一个输入 Processor,用于识别输入文本的语言,并可选择将其翻译为目标语言,以便统一处理。此 Processor 通过检测传入消息的语言,并提供灵活的多语言内容处理策略来帮助保持语言一致性,其中包括自动翻译,以确保所有内容都使用目标语言进行处理。

用法示例
用法示例的直接链接

import { LanguageDetector } from '@mastra/core/processors'

const processor = new LanguageDetector({
model: 'openrouter/openai/gpt-oss-safeguard-20b',
targetLanguages: ['English', 'en'],
threshold: 0.8,
strategy: 'translate',
lastMessageOnly: true,
})

构造函数参数
构造函数参数的直接链接

options:

Options
语言检测和翻译的配置选项
Options

model:

MastraModelConfig
检测/翻译 Agent 的模型配置

targetLanguages?:

string[]
项目的目标语言。如果检测到内容使用其他语言,则可以进行翻译。可以使用语言名称('English')或 ISO 代码('en')

threshold?:

number
语言检测的置信度阈值(0-1)。仅当检测置信度超过此阈值时才进行处理

strategy?:

'detect' | 'translate' | 'block' | 'warn'
检测到非目标语言时采用的策略:'detect' 仅检测语言,'translate' 自动翻译为目标语言,'block' 拒绝非目标语言的内容,'warn' 记录警告但允许内容通过

preserveOriginal?:

boolean
是否在消息 metadata 中保留原始内容。适用于审计跟踪和调试

instructions?:

string
Agent 的自定义检测 instructions。如未提供,则使用默认 instructions

lastMessageOnly?:

boolean
是否只检测批次中最新消息的语言,而不检查每条消息。使用此选项可在对话历史增长时保持 LLM 调用次数不变。

minTextLength?:

number
执行检测所需的最小文本长度。短文本的语言检测通常不可靠

includeDetectionDetails?:

boolean
是否在日志中包含详细的检测信息

translationQuality?:

'speed' | 'quality' | 'balanced'
翻译质量偏好:'speed' 优先考虑翻译速度,'quality' 优先考虑准确性,'balanced' 在速度和质量之间取得平衡

providerOptions?:

ProviderOptions
传给内部检测 Agent 的 Provider 特定选项。可用它控制模型行为,例如 thinking model 的 reasoning effort(例如 { openai: { reasoningEffort: 'low' } }

返回值
返回值的直接链接

id:

string
Processor 标识符,设为 'language-detector'

name?:

string
可选的 Processor 显示名称

processInput:

(args: { messages: MastraDBMessage[]; abort: (reason?: string) => never; tracingContext?: TracingContext }) => Promise<MastraDBMessage[]>
在发送给 LLM 前处理输入消息,以检测语言并可选择翻译内容

扩展用法示例
扩展用法示例的直接链接

src/mastra/agents/multilingual-agent.ts
import { Agent } from '@mastra/core/agent'
import { LanguageDetector } from '@mastra/core/processors'

export const agent = new Agent({
id: 'multilingual-agent',
name: 'multilingual-agent',
instructions: 'You are a helpful assistant',
model: 'openai/gpt-5.6-sol',
inputProcessors: [
new LanguageDetector({
model: 'openrouter/openai/gpt-oss-safeguard-20b',
targetLanguages: ['English', 'en'],
threshold: 0.8,
strategy: 'translate',
preserveOriginal: true,
instructions:
'Detect language and translate non-English content to English while preserving original intent',
minTextLength: 10,
includeDetectionDetails: true,
translationQuality: 'quality',
}),
],
})