isToolSearchEnabled method
Future<bool>
isToolSearchEnabled({
- required String model,
- required List<
ToolDefinition> tools, - required int contextWindow,
- String? source,
Check if tool search is enabled for a specific request.
This is the definitive check that includes model compatibility, ToolSearchTool availability, and threshold check for auto mode.
Implementation
Future<bool> isToolSearchEnabled({
required String model,
required List<ToolDefinition> tools,
required int contextWindow,
String? source,
}) async {
if (!modelSupportsToolReference(model)) {
_logDebug(
'Tool search disabled for model \'$model\': '
'model does not support tool_reference blocks.',
);
return false;
}
if (!isToolSearchToolAvailable(tools)) {
_logDebug('Tool search disabled: ToolSearchTool is not available.');
return false;
}
final currentMode = getToolSearchMode();
switch (currentMode) {
case ToolSearchMode.tst:
return true;
case ToolSearchMode.tstAuto:
final result = _checkAutoThreshold(
tools: tools,
model: model,
contextWindow: contextWindow,
);
if (result.enabled) {
_logDebug(
'Auto tool search enabled: ${result.debugDescription}'
'${source != null ? ' [source: $source]' : ''}',
);
} else {
_logDebug(
'Auto tool search disabled: ${result.debugDescription}'
'${source != null ? ' [source: $source]' : ''}',
);
}
return result.enabled;
case ToolSearchMode.standard:
return false;
}
}