A simple Filament filter that converts natural language text into database queries using AI.
composer require hayderhatem/filament-natural-language-filter
php artisan vendor:publish --tag="filament-natural-language-filter-config"
.env
file:OPENAI_API_KEY=your-openai-api-key-here
Add the filter to your Filament table:
use HayderHatem\FilamentNaturalLanguageFilter\Filters\NaturalLanguageFilter; public function table(Table $table): Table{ return $table ->columns([ // your columns ]) ->filters([ NaturalLanguageFilter::make() ->availableColumns([ 'id', 'name', 'email', 'status', 'created_at', 'updated_at' ]) ]);}
You can configure how the filter triggers searches:
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->submitSearch() // Users press Enter to search
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->liveSearch() // Search happens automatically as user types
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->searchMode('live') // or 'submit'
Submit Mode (Default) - Best for:
Live Mode - Best for:
WHERE name LIKE '%john%' AND created_at > '2023-01-01'
WHERE name LIKE '%john%'
WHERE status = 'active'
WHERE created_at > '2023-01-01'
WHERE email LIKE '%gmail%'
The filter supports ANY language with automatic AI translation and understanding:
English:
WHERE name LIKE '%john%'
WHERE created_at > '2023-01-01'
Arabic (العربية):
WHERE name LIKE '%أحمد%'
WHERE created_at > '2023-01-01'
Spanish (Español):
WHERE name LIKE '%juan%'
WHERE created_at > '2023-01-01'
French (Français):
WHERE name LIKE '%marie%'
WHERE created_at > '2023-01-01'
German (Deutsch):
WHERE name LIKE '%hans%'
WHERE created_at > '2023-01-01'
Chinese (中文):
WHERE name LIKE '%张三%'
WHERE created_at > '2023-01-01'
Japanese (日本語):
WHERE name LIKE '%田中%'
WHERE created_at > '2023-01-01'
The AI can handle mixed-language queries naturally:
// config/filament-natural-language-filter.phpreturn [ 'model' => 'gpt-3.5-turbo', // OpenAI model 'openai' => [ 'api_key' => env('OPENAI_API_KEY'), 'max_tokens' => 500, 'temperature' => 0.1, ], 'cache' => [ 'enabled' => true, 'ttl' => 3600, // 1 hour ], 'languages' => [ 'universal_support' => true, 'auto_detect_direction' => true, 'preserve_original_values' => true, ],];
OPENAI_API_KEY=your-openai-api-key-hereFILAMENT_NL_FILTER_UNIVERSAL_SUPPORT=trueFILAMENT_NL_FILTER_AUTO_DETECT_DIRECTION=trueFILAMENT_NL_FILTER_PRESERVE_ORIGINAL_VALUES=true
MIT
Full-stack developer specializing in Laravel and Filament ecosystem development. Passionate about creating developer tools that simplify complex workflows and enhance user experience. Creator of innovative Filament packages that leverage AI technology to make data management more intuitive and accessible.