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',
}),
],
})