hayderhatem/filament-natural-language-filter
Composer 安装命令:
composer require hayderhatem/filament-natural-language-filter
包简介
Natural language filtering for Filament tables and forms
README 文档
README
A simple Filament filter that converts natural language text into database queries using AI.
Installation
composer require hayderhatem/filament-natural-language-filter
Configuration
- Publish the config file:
php artisan vendor:publish --tag="filament-natural-language-filter-config"
- Add your OpenAI API key to your
.envfile:
OPENAI_API_KEY=your-openai-api-key-here
Usage
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' ]) ]); }
Search Modes
You can configure how the filter triggers searches:
Submit Mode (Default) - Search on Enter key
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->submitSearch() // Users press Enter to search
Live Mode - Search as you type
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->liveSearch() // Search happens automatically as user types
Manual Mode Configuration
NaturalLanguageFilter::make() ->availableColumns(['name', 'email', 'status']) ->searchMode('live') // or 'submit'
When to Use Each Mode
Submit Mode (Default) - Best for:
- Large datasets where live search might be slow
- Complex queries that users want to perfect before searching
- Reducing API calls to OpenAI (only search when user is ready)
Live Mode - Best for:
- Instant feedback and better user experience
- Smaller datasets where performance isn't a concern
- Users who prefer immediate results as they type
How it works
- User enters natural language: "show users named john created after 2023"
- AI processes the text: Converts it to structured filters based on your available columns
- Database query is built:
WHERE name LIKE '%john%' AND created_at > '2023-01-01' - Results are filtered: Table shows matching records
Examples
- "users named john" →
WHERE name LIKE '%john%' - "active users" →
WHERE status = 'active' - "created after 2023" →
WHERE created_at > '2023-01-01' - "email contains gmail" →
WHERE email LIKE '%gmail%'
Universal Language Support 🌍
The filter supports ANY language with automatic AI translation and understanding:
Multi-Language Examples
English:
- "show users named john" →
WHERE name LIKE '%john%' - "created after 2023" →
WHERE created_at > '2023-01-01'
Arabic (العربية):
- "الاسم يحتوي على أحمد" →
WHERE name LIKE '%أحمد%' - "أنشئ بعد 2023" →
WHERE created_at > '2023-01-01'
Spanish (Español):
- "usuarios con nombre juan" →
WHERE name LIKE '%juan%' - "creado después de 2023" →
WHERE created_at > '2023-01-01'
French (Français):
- "nom contient marie" →
WHERE name LIKE '%marie%' - "créé après 2023" →
WHERE created_at > '2023-01-01'
German (Deutsch):
- "benutzer mit namen hans" →
WHERE name LIKE '%hans%' - "erstellt nach 2023" →
WHERE created_at > '2023-01-01'
Chinese (中文):
- "姓名包含张三" →
WHERE name LIKE '%张三%' - "2023年后创建" →
WHERE created_at > '2023-01-01'
Japanese (日本語):
- "田中という名前のユーザー" →
WHERE name LIKE '%田中%' - "2023年以降に作成" →
WHERE created_at > '2023-01-01'
How It Works
- AI Language Detection: Automatically detects the input language
- Natural Understanding: Maps language-specific keywords to operators
- Value Preservation: Keeps original values in their native language/script
- Mixed Language: Handles mixed-language queries seamlessly
Mixed Language Queries
The AI can handle mixed-language queries naturally:
- "name يحتوي على john" ✅
- "usuario con email gmail.com" ✅
- "姓名 contains 张三" ✅
Configuration Options
// config/filament-natural-language-filter.php return [ '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, ], ];
Environment Variables
OPENAI_API_KEY=your-openai-api-key-here FILAMENT_NL_FILTER_UNIVERSAL_SUPPORT=true FILAMENT_NL_FILTER_AUTO_DETECT_DIRECTION=true FILAMENT_NL_FILTER_PRESERVE_ORIGINAL_VALUES=true
Requirements
- PHP 8.1+
- Laravel 10+
- Filament 3+
- OpenAI API key
License
MIT
hayderhatem/filament-natural-language-filter 适用场景与选型建议
hayderhatem/filament-natural-language-filter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 203 次下载、GitHub Stars 达 13, 最近一次更新时间为 2025 年 06 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 hayderhatem/filament-natural-language-filter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hayderhatem/filament-natural-language-filter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 203
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-02