跳至主要內容

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