Tool.fromJson constructor
Implementation
factory Tool.fromJson(Map<String, dynamic> json) {
switch (json['type']) {
case 'function_tool':
return FunctionTool(
name: json['name'] as String,
parameters: Map<String, dynamic>.from(json['parameters'] as Map),
strict: json['strict'] as bool?,
description: json['description'] as String?,
);
case 'file_search':
return FileSearchTool(
vectorStoreIds: (json['vector_store_ids'] as List?)?.cast<String>() ?? const [],
filters: (json['filters'] as List?)?.cast<Map<String, dynamic>>().map(FileSearchFilter.fromJson).toList(),
maxNumResults: json['max_num_results'] as int?,
rankingOptions: json['ranking_options'] == null ? null : RankingOptions.fromJson(json['ranking_options'] as Map<String, dynamic>),
);
case 'web_search_preview':
return WebSearchPreviewTool(
searchContextSize: json['search_context_size'] == null ? null : SearchContextSize.fromJson(json['search_context_size'] as String),
userLocation: json['user_location'] == null ? null : UserLocation.fromJson(json['user_location'] as Map<String, dynamic>),
);
case 'computer_use_preview':
return ComputerUsePreviewTool(
displayHeight: json['display_height'] as int,
displayWidth: json['display_width'] as int,
environment: json['environment'] as String,
);
case 'mcp':
return McpTool(
serverLabel: json['server_label'] as String,
serverUrl: json['server_url'] as String,
allowedTools: (json['allowed_tools'] as List?)?.cast<String>(),
headers: (json['headers'] as Map?)?.cast<String, String>(),
requireApproval: json['require_approval'] == null ? null : McpToolApproval.fromJson(json['require_approval']),
);
case 'code_interpreter':
return CodeInterpreterTool(
container: CodeInterpreterContainer.fromJson(json['container']),
);
case 'image_generation':
return ImageGenerationTool(
background: json['background'] == null ? null : ImageGenerationBackground.fromJson(json['background'] as String),
inputImageMask:
json['input_image_mask'] == null ? null : InputImageMask.fromJson(json['input_image_mask'] as Map<String, dynamic>),
model: json['model'] as String?,
moderation: json['moderation'] == null ? null : ImageModeration.fromJson(json['moderation'] as String),
outputCompression: json['output_compression'] as int?,
imageOutputFormat: json['output_format'] == null ? null : ImageOutputFormat.fromJson(json['output_format'] as String),
partialImages: json['partial_images'] as int?,
quality: json['quality'] == null ? null : ImageOutputQuality.fromJson(json['quality'] as String),
imageOutputSize: json['size'] == null ? null : ImageOutputSize.fromJson(json['size'] as String),
);
case 'local_shell':
return const LocalShellTool();
default:
return OtherTool(json);
}
}