LanguageDetector
LanguageDetector 是一個輸入處理器,可識別輸入文字的語言,亦可選擇將文字翻譯成目標語言,以便一致地處理內容。此處理器會偵測傳入訊息的語言,並提供靈活的多語言內容處理策略,包括自動翻譯,以確保所有內容均以目標語言處理,從而協助維持語言一致性。
使用範例使用範例 的直接連結
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
是否在訊息中繼資料中保留原始內容。適合用於稽核記錄及除錯
instructions?:
string
Agent 的自訂偵測指示。如未提供,則使用預設指示
lastMessageOnly?:
boolean
是否只偵測批次中最新訊息的語言,而非檢查每一則訊息。可用此選項避免 LLM 呼叫次數隨對話記錄增長。
minTextLength?:
number
進行偵測所需的最短文字長度。短文字的語言偵測通常不太可靠
includeDetectionDetails?:
boolean
是否在記錄中包含詳細的偵測資料
translationQuality?:
'speed' | 'quality' | 'balanced'
翻譯質素偏好:'speed' 優先考慮翻譯速度;'quality' 優先考慮準確度;'balanced' 在速度與質素之間取得平衡
providerOptions?:
ProviderOptions
傳遞至內部偵測 Agent 的 Provider 專用選項。可用此選項控制模型行為,例如思考模型的推理力度(例如
{ openai: { reasoningEffort: 'low' } })傳回值傳回值 的直接連結
id:
string
設為 'language-detector' 的處理器識別碼
name?:
string
可選的處理器顯示名稱
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',
}),
],
})