跳至主要內容

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