ToolCallFilter
ToolCallFilter は、モデルへ送信する前にメッセージ履歴から Tool 呼び出しとその結果を除外する input processor です。特定の Tool 操作をコンテキストから除外したい場合や、すべての Tool 呼び出しを完全に削除したい場合に役立ちます。
使用例使用例への直接リンク
import { ToolCallFilter } from '@mastra/core/processors'
// Exclude all tool calls
const filterAll = new ToolCallFilter()
// Exclude specific tools by name
const filterSpecific = new ToolCallFilter({
exclude: ['searchDatabase', 'sendEmail'],
})
// Enable filtering during agent loops and keep the two most recent tool-producing steps
const filterAfterRecentTools = new ToolCallFilter({
filterAfterToolSteps: 2,
})
// Preserve compact model-facing output for filtered completed tool results
const filterWithCompactToolHistory = new ToolCallFilter({
preserveModelOutput: true,
})
コンストラクターパラメーターコンストラクターパラメーターへの直接リンク
options?:
exclude?:
filterAfterToolSteps?:
preserveModelOutput?:
戻り値戻り値への直接リンク
id:
name:
processInput:
processInputStep:
ステップのフィルタリングステップのフィルタリングへの直接リンク
デフォルトでは、ToolCallFilter は Agent ループ開始前の初期入力だけをフィルタリングします。各ループステップでもフィルタリングするには、filterAfterToolSteps を設定します。
filterAfterToolSteps は、Tool を生成したステップを数えます。たとえば filterAfterToolSteps: 2 は、Tool を生成した直近2ステップの Tool 呼び出しと結果を保持し、それ以前の Tool 呼び出しと結果を除外します。Tool 以外のテキストはコンテキストに残ります。
各ステップですべての過去の Tool 呼び出しと結果を除外するには、filterAfterToolSteps: 0 を設定します。
const filter = new ToolCallFilter({
filterAfterToolSteps: 2,
})
モデル向けの簡潔な出力を保持するモデル向けの簡潔な出力を保持するへの直接リンク
フィルターが削除する完了済み Tool 結果について、簡潔な toModelOutput 履歴を保持するには、preserveModelOutput: true を設定します。これにより、生の toolInvocation.args と toolInvocation.result ペイロードを削除しつつ、モデル向けの出力をプロンプト内のテキストとして残せます。
保持されるのは、providerMetadata.mastra.modelOutput を持つ完了済みの Tool 結果だけです。Tool 呼び出し、未完了の結果、保存済みのモデル出力がない結果は、引き続き除外されます。
const filter = new ToolCallFilter({
preserveModelOutput: true,
})
フィルタリング対象の Tool についてのみ簡潔な出力を保持するには、preserveModelOutput と exclude を組み合わせます。
const filter = new ToolCallFilter({
exclude: ['searchDatabase'],
preserveModelOutput: true,
})
詳細な使用例詳細な使用例への直接リンク
import { Agent } from '@mastra/core/agent'
import { ToolCallFilter } from '@mastra/core/processors'
export const agent = new Agent({
id: 'filtered-agent',
name: 'filtered-agent',
instructions: 'You are a helpful assistant',
model: 'openai/gpt-5.6-sol',
tools: {
searchDatabase,
sendEmail,
getWeather,
},
inputProcessors: [
// Filter out database search tool calls from context
// to reduce token usage while keeping other tool interactions
new ToolCallFilter({
exclude: ['searchDatabase'],
}),
],
})
すべての Tool 呼び出しをフィルタリングするすべての Tool 呼び出しをフィルタリングするへの直接リンク
import { Agent } from '@mastra/core/agent'
import { ToolCallFilter } from '@mastra/core/processors'
export const agent = new Agent({
id: 'no-tools-context-agent',
name: 'no-tools-context-agent',
instructions: 'You are a helpful assistant',
model: 'openai/gpt-5.6-sol',
tools: {
searchDatabase,
sendEmail,
},
inputProcessors: [
// Remove all tool calls from the message history
// The agent can still use tools, but previous tool interactions
// won't be included in the context
new ToolCallFilter(),
],
})