Form doğrulaması sadece boş alanları ve e-posta formatlarını kontrol ettiğinde, kullanıcılarınızı hayal kırıklığına uğratır ve verilerinizi kirletir. Çoğu geliştirici bu durumu biliyor, ancak aynı yüzeysel kontrolleri göndermeye devam ediyorlar.
Geleneksel Laravel Doğrulaması Karmaşık Mantık için Neden Yetersiz Kalıyor?
Geleneksel Laravel Doğrulaması Karmaşık Mantık için Neden Yetersiz Kalıyor?
Laravel’in yerleşik doğrulama sistemi yapısal kontroller için gerçekten mükemmeldir. required, email, unique ve regex kuralları temel gereksinimleri iyi bir şekilde ele alıyor. Ancak iş mantığı doğrulaması — yani bağlamı anlamayı gerektiren tür — geleneksel yaklaşımlar tamamen başarısız olur.
Bir sağlık hizmetleri randevu formunu düşünün; bir hasta randevu alıyor. Standart doğrulama, tarihin gelecekte olduğunu ve zaman diliminin mevcut olduğunu onaylar. Ancak seçilen uzmanlık dalının hastanın belirttiği durumu tedavi etmediğini veya seçilen sigorta tipinin seçilen prosedürle uyumsuz olduğunu tespit etmez. Bunlar anlamsal hatalardır ve bunların gönderim öncesinde yakalanması akıl yürütme gerektirir, kural değil.
2026 yılında, büyük dil modellerinin OpenAI’nin GPT-4o, Anthropic’ın Claude 3.5 ve Google’ın Gemini 1.5 Pro gibi API’ler aracılığıyla uygulama yığında doğrudan entegre edilmesiyle, bağlamsal akıl yürütmeyi doğrudan Laravel doğrulama hattınıza entegre edebilirsiniz. Bu artık teorik değil — sadece bir composer paketi ve birkaç servis sınıfı uzakta.
Yapısal ve Anlamsal Doğrulama Arasındaki Farklar
Yapısal ve Anlamsal Doğrulama Arasındaki Farklar
Yapısal doğrulama, şunu sorar: Bu veri doğru türde ve formatta mı?
Anlamsal doğrulama ise: Bu veri, bildiğimiz her şeyi göz önünde bulundurduğumuzda anlamlı mı?
AI destekli form doğrulaması bu boşluğu doldurur. Mevcut FormRequest sınıflarınızı değiştirmekten ziyade, verinin arkasındaki niyeti anlayan akıllı bir katman eklemekle ilgilidir. Mevcut kurallarınızı ID’leri kontrol eden bir güvenlik görevlisi gibi düşünün. AI doğrulaması, ID iyi görünse de hikayenin kurgusunun tutarsız olduğunu fark eden bir müdürdür.
Laravel’de AI Destekli Form Doğrulamasını Kurma
Laravel’de AI Destekli Form Doğrulamasını Kurma
Temiz bir mimari, AI doğrulamasını özel bir Laravel FormRequest içinde ve bu doğrulama için özel bir AIValidationService ile paketler. Bu, denetleyicilerinizi ince tutar, mantığınızı test edilebilir hale getirir ve AI çağrılarınızı bileşenler halinde yapılandırmanıza olanak tanır.
Öncelikle OpenAI PHP istemcisini yükleyin:
composer require openai-php/client
Ardından, servis sınıfınızı oluşturun:
namespace App\Services;
use OpenAI\Client;
use Illuminate\Support\Facades\Log;
class AIValidationService
{
public function __construct(private readonly Client $openai) {}
public function validateFormContext(array $formData, string $validationContext): array
{
$prompt = $this->buildValidationPrompt($formData, $validationContext);
try {
$response = $this->openai->chat()->create([
'model' => 'gpt-4o',
'messages' => [
[
'role' => 'system',
'content' => 'You are a form validation assistant. Return ONLY valid JSON with an "errors" array containing objects with "field" and "message" keys. Return an empty errors array if valid.'
],
['role' => 'user','content' => $prompt]
],
'response_format' => ['type' => 'json_object'],
'temperature' => 0.1,
]);
$result = json_decode($response->choices[0]->message->content, true);
return $result['errors'] ?? [];
} catch (\Exception $e) {
Log::warning('AI validation failed, falling back gracefully', ['error' => $e->getMessage()]);
return [];
}
}
private function buildValidationPrompt(array $formData, string $context): string
{
$dataJson = json_encode($formData, JSON_PRETTY_PRINT);
return "Context: {$context}\n\nForm data submitted:\n{$dataJson}\n\nIdentify any logical inconsistencies, contradictions, or semantic errors in this form submission.";
}
}
Bunu FormRequest İçine Bağlamak
Bunu FormRequest İçine Bağlamak
Laravel’in FormRequest‘indeki withValidator kancası, entegrasyon noktanızdır — bu, yapısal kuralların geçmesinden sonra çalışır, bu da AI akıl yürütmesini uygulamak için tam zamanında doğru andır:
namespace App\Http\Requests;
use App\Services\AIValidationService;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
class AppointmentBookingRequest extends FormRequest
{
public function rules(): array
{
return [
'patient_name' => ['required', 'string', 'max:255'],
'appointment_date' => ['required', 'date', 'after:today'],
'specialist_type' => ['required', 'string', 'in:cardiology,neurology,orthopedics'],
'symptoms' => ['required', 'string', 'min:20'],
'insurance_type' => ['required', 'string'],
'procedure_code' => ['required', 'string'],
];
}
public function withValidator(Validator $validator): void
{
$validator->after(function (Validator $validator) {
if ($validator->errors()->isNotEmpty()) {
return; // Yapısal doğrulama zaten başarısız olduysa API çağrılarını boşa harcama
}
$aiService = app(AIValidationService::class);
$context = 'Tıbbi randevu rezervasyon sistemi. Uzmanlık tipinin belirtilen belirtilerle eşleştiğini, prosedür kodunun uzmana uygun olduğunu ve sigorta tipinin genellikle talep edilen prosedürü karşıladığını doğrulayın.';
$aiErrors = $aiService->validateFormContext($this->validated(), $context);
foreach ($aiErrors as $error) {
$validator->errors()->add($error['field'], $error['message']);
}
});
}
}
Bu yapı cerrahi — AI doğrulaması yalnızca yapısal denetimler geçerse tetiklenir, böylece açıkça hatalı veriler için token israfını önler. Bu koruma şartını yeterince vurgulamak istemiyorum. Onu atlayın.
Performans ve Maliyet Optimizasyon Stratejileri
Performans ve Maliyet Optimizasyon Stratejileri
AI destekli form doğrulamanın geç kalma süresi ve maliyeti ile ilgili geçerli endişeler vardır. Optimize edilmemiş bir uygulama, her bir form gönderimine 800-1500ms ekler. Bu, çoğu UX bağlamında kabul edilemez, ama tamamen çözülebilir.
Livewire 3 ile Asenkron Doğrulama
Livewire 3 ile Asenkron Doğrulama
Livewire 3‘ün wire:model.blur ve özel eylem yavaşlatma özellikleri, kullanıcı formu doldururken AI doğrulamasını tetiklemenizi sağlar; bu, sadece gönderim sırasında değil. Bu, bir kullanıcının yazma akışındaki doğal duraklamalar boyunca gecikmeyi dağıtır:
// Livewire bileşeninizde
public function updatedSymptoms($value): void
{
if (strlen($value) > 50) {
$this->dispatch();
}
}
Bunu Laravel’in kuyruk sistemi ile eşleştirerek, arka plana atılan ve UI’yı yayınlama yoluyla güncelleyen doğrulama kontrolleri gerçekleştirebilirsiniz. Kullanıcı gönder düğmesine bastığında, AI işini çoktan yapmış olur.
Tekrarlanan Kalıplar için Yanıt Önbellekleme
Tekrarlanan Kalıplar için Yanıt Önbellekleme
Aynı veya benzer form kombinasyonları için yanıtları bir hash anahtarı kullanarak önbelleğe alabilirsiniz:
public function validateFormContext(array $formData, string $context): array
{
$cacheKey = . md5(json_encode$formData$contextreturn cache()->remember($cacheKey, now()->addMinutes10), function () use ($formData, $context) {
return $this->callAIValidation($formData, $context);
});
}
Yüksek trafikli formlar için, bu API harcamalarını önemli ölçüde azaltır ve kullanıcılar aynı yaygın hatayı yaparlarsa — ki yapacaklardır — anında önbelleklenmiş geri bildirim alırlar; her seferinde yeni bir API çağrısı değil.
Gerçek Dünya AI Destekli Form Doğrulama Kalıpları
Gerçek Dünya AI Destekli Form Doğrulama Kalıpları
Randevu rezervasyonu dışında, bu yaklaşımın net ROI sunduğu üç yüksek değerli kalıp bulunmaktadır.
E-ticaret ürün listelemeleri: Bir AI doğrulayıcı, bir satıcının “çocuk oyuncakları” olarak listelediği bir ürünün voltaj spesifikasyonlarının endüstriyel ekipmanları işaret ettiğini ya da piyasa fiyatının üç sıfır kadar uzak olduğunu yakalar. Bu tür anlamsal çelişkiler, her kural tabanlı sistemin içinden kaçabilir.
Mali kredi başvuruları: Yıllık 48.000$ gelir beyanı yaparken, aylık giderlerin toplamı 6.200$ olan bir başvuru, teknik olarak geçerli bir veri — ancak mantıksal olarak sorunlu. AI, bu koherenss kaybını anında yakalar, evrakların bir değerleme masasına ulaşmadan önce.
İş başvuru formları: “10 yıl deneyim” seçen bir adayın 3 yıl önce piyasaya sürülen bir teknolojiyi seçmesi, hemen belirli bir hata mesajı tetikler; böylece bir işe alım uzmanının zamanını boşa harcamaktansa fark eder.
Bağlam İsteksillerinizi Yapılandırma
Bağlam İsteksillerinizi Yapılandırma
Doğrulamanızın kalitesi, tamamen bağlam isteğinizin niteliğine bağlıdır. Alanınızı, alanlar arasındaki ilişkileri ve belirli kullanım durumunuzda mantıksal bir hatanın ne olduğunu açıkça belirtin. Neden bu kadar çok geliştirici belirsiz isteklere yazıyor ve sonra AI doğrulamanın çalışmadığından şikayet ediyor? Çöp girerse, çöp çıkar — bu, transformerler işin içinde olsa bile değişmez.
private string $validationContext = 'A consumer goods company should realistically not ask for a $50,000 invoice
3. Contradictory specifications (a "portable" device listed at 200kg)
4. Age-appropriateness inconsistencies between category and content descriptors
Return specific field names from the submitted data in your error objects.
EOT;
Özgüllük, her zaman genel geçerlilikten daha önemli. Belirsiz isteklere belirli, yararlı hata mesajları üretmek, kullanıcıları daha fazla kafa karışıklığına iter.
AI Destekli Form Doğrulama için Test Etme ve Güvenilirlik
AI Destekli Form Doğrulama için Test Etme ve Güvenilirlik
AI doğrulamanızın bir başarısızlık noktası haline gelmesine izin vermeyin. Servis sınıfındaki try/catch, API kesintilerini nazikçe yönetir, ancak test setinizin dikkatli bir kapsama sahip olması gerekir. “Üretimde çalışıyor” bir test stratejisi değildir.
FormRequest testlerinizde OpenAI istemcisini Laravel’in servis konteynerini kullanarak taklit edin:
public function test_ai_validation_catches_specialist_mismatch(): void
{
$this->mock(AIValidationService::class, function ($mock) {
$mock->shouldReceive()
->once()
->andReturn([
[=> , ]
]);
});
$response = $this->postJson(, [
=> ,
=> now()->addDays(7)->format(),
=> ,
=> ,
=> ,
=> ,
]);
$response->assertUnprocessable()
->assertJsonValidationErrors([]);
}
Bu, test setinizi hızlı ve belirlenebilir tutar, aynı zamanda entegrasyon yolunun düzgün çalıştığını doğrular. AI’yi test etmezsiniz — uygulamanızın AI yanıtlarını düzgün bir şekilde yönetip yönetmediğini test edersiniz. Bu ayrım önemlidir.
Sonuç
Sonuç
AI destekli form doğrulama, Laravel’in güçlü kural tabanlı sisteminin bir yerini almaz — bunun üzerine, kuralların temelde çözemeyeceği anlamı yöneten bir katmandır. Yapısal FormRequest kurallarını bağlamsal AI akıl yürütmesi ile birleştirerek, aksi takdirde ortaya çıkıp veri kalitesini azaltabilecek veya bir destek biletine dönüşecek mantık hatalarını yakalarsınız.
Uygulama günümüzde pratik. AI çağrılarınızı bir serviste sarın, yalnızca yapısal doğrulama geçtikten sonra ateşleyin, önbelleği agresif bir şekilde uygulayın ve her zaman nazik bir şekilde başarısız olun. Uygulamanızdaki bir yüksek değerli form ile başlayın; oanamsal hataların gerçek şekilde sorunlar yarattığı yerler. ROI hemen ve ölçülebilir olacaktır.
Bu yaklaşım, doğrulamayı veri kontrolünden veriyi anlama aşamasına kaydırır — ve 2026 yılında, bu ayrım, iyi bir UX ile harika bir UX arasındaki farktır.
Bu makale, qcode.in adresinde orijinal olarak yayınlandı.
Kaynak: Orijinal Makale


