Düşünce Liderleri

AI Uygulama Oluşturmanın Geleceği Tip Güvenliğiyle Bağlı

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

AI tarafından oluşturulan kod derlenebilir, ancak tip güvenliği olmadan bu başarı çok kısa sürelidir. Tip güvenliği, kırılgan kodu gizli hatalara ve çalışma zamanı hatalarına dönüşmeden önce durduran güvenlik barajıdır.

AI’ı tip güvenliği konusunda eğitmeye başlamalıyız. Bu, bağlam, talimatlar, linting ve geri bildirim döngüleri yoluyla yapılır. Birkaç saat daha sürer, ancak kalıcı kod üretir.

Tahrik Problemi

AI size memnun olmak ister. Verilen ödül fonksiyonunu optimize eder ve çoğu zaman bu sadece “derlenir mi?” anlamına gelir. Bu nedenle, yeşil onay işareti almak için gerekli her köşeyi kesecektir. Bu kısaltmalar derleme zamanında iyi görünür, ancak çalışma zamanında çöker.

Bu nedenle AI, herhangi bir şeyi sever. Ya da dize gibi geniş bir tür seçer, UUID gibi daha katı bir tür beklenir. Kod derlenir, ancak doğruluk zaten tehlikeye girer. Daha kötüsü, AI birkaç dosya önce ne yazdığını hatırlamaz, bu nedenle tip güvenliği olmadan proje hızla kendi ağırlığı altında çökerken karmaşıklık artar.

İki Tür Hata

AI tarafından oluşturulan kod çalıştırıldığında, genellikle iki tür tip güvenliği problemi görülür:

1. Derleme Zamanı Hataları

  • Ne olur: Derleyici, bildirilen tür ile geçirilen tür arasında bir uyumsuzluk yakalar.
  • İnsan nasıl düzeltir: Çağrının yanlış olup olmadığını (42’yi dizeye dönüştürmek) veya işlev imzasının yanlış olup olmadığını (bir numara türünü kabul etmek için değiştirmek) kararlaştırır.
  • AI nasıl “düzeltir”: Argüman türünü herhangi bir olarak değiştirir. Problem “çözüldü”, ancak gelecekteki hataları yakalayacak güvenlik barajını kaldırdınız.

2. Çalışma Zamanı Hataları

  • Ne olur: Derleyici her şeyin iyi olduğunu düşünür (çoğu zaman türleri gevşetildiğinden), ancak çalışma zamanındaki gerçek değer varsayımla uyuşmaz.
  • İnsan nasıl düzeltir: Değişkeni kaynağına kadar izler (bir API veya veritabanı sorgusu gibi) ve sınırda türü düzeltir, böylece veri uygun bir dize olarak gelir.
  • AI nasıl “düzeltir”: Bağlam olmadan tahmin eder. Belki her şeyi Dize(…) ile sarar veya türünü tekrar genişletir. Çökme ortadan kalkar, ancak mantık bozulur. Numaralar matematik için amaçlandığı halde dizeler haline gelir.

Bu çalışma zamanı hataları → AI “düzeltme” → gevşek tipleme döngüsü hızla birikir. Sonuç, derlenen ve daha az çalışma zamanı hatası veren, ancak güvenilir olmayan bir kod tabanıdır. Bir sağlık randevu sistemi düşünün, doktorların nöbetleri uygulamayla yönetiliyor. Bir tür uyumsuzluğu ortaya çıkar: bir int saat olarak bir dize olarak ele alınır. AI bunu herhangi bir türüne genişleterek “düzeltir”. Kod derlenir ve hata kaybolur, ancak nöbet hesaplamaları sessizce bozulur, doktorları çift görevlendirir ve hastanenin tüm bir kanadını boş bırakır.

Veritabanı Çarpanı

Veritabanına bağlandığınız anda hatalar birikir ve nedenleri daha zor izlenir. SQL, bir nedeni vardır. Her şema (INT, METİN, UUID, BOOLE) verilerinizi hakkında varsayımları kodlar.

AI her şeyi dize | herhangi birye düzleştirdiğinde, bu garantileri kaybedersiniz:

  • Kötü yazma işlemleri: “doğru”yu bir boole alanına eklemek derlenir, ancak veritabanını bozar.
  • Kötü okuma işlemleri: sorgu NULL döndürür, ancak AI bir dize varsayar, bu da bir çalışma zamanı çökmesine neden olur.
  • Bozuk ilişkiler: bir ilişki anahtarı UUID olarak bekleniyorsa, ancak AI onu bir dize olarak ele alırsa ve yanlışlıkla çöp değerler gönderirse, birleşmeler çökmeyecektir, ancak hiçbir veri döndürmeyecektir. Bu, hataları daha sonra tutarlı olmayan sonuçlar olarak ortaya çıkana kadar gizler.

Bu nedenle ciddi takımlar tip güvenli dilleri kullanır ve şemadan API’ye kadar tip güvenliğini sağlar. Bunu yapmazsanız, veritabanı sizi korumayı bırakır ve gizli sorunlar birikir.

Neden Olgun Takımlar Kısıtlayıcı Tiplemeyi Uygular

Kısıtlayıcı tipleme, geliştiricileri yavaşlatmak değildir. Ölçeklenebilirlik sağlamak içindir.

Tipler:

  • Kodu amacını kodlar.
  • Yeniden yapılandırmaları güvenli ve öngörülebilir hale getirir.
  • Üretimde görünen tüm hata sınıflarını yakalar.
  • Gelecek geliştiricilere (ve AI’ya) bir işlevi veya nesneyi nasıl kullanacağını gösterir.

Tip güvenliği olmadan, AI’nın kodu dağınık hale gelir. Onunla birlikte, aynı AI güvenilir ve genişletilebilir kod üretir.

AI’ı Tip Güvenliği Konusunda Nasıl Zorlayabilirsiniz

AI’ı bir junior mühendis gibi tedavi etmelisiniz. Hızlı, yetenekli, ancak yönlendirilmeden dikkatsiz.

Doğru Bağlamı Sağlayın

Kullanabileceği arayüzleri ve tipleri verin. Kullanım örneklerini gösterin. Kodun nasıl yapılandırılacağı konusunda görüş bildirin.

Katı Talimatlar Verin

AI’a herhangi bir türünü kullanmamasını, bilinmeyen türünü asla izin vermemesini ve her yöntemin, nesnenin ve değişkenin tipinin belirlenmesini çok açık bir şekilde belirtin. İlk geçişte özellikle bu talimatlara uymakta zorlanacağını bekleyin.

Linting ile Uygulayın

Tıpkı bir junior geliştiricinin kodunu gözden geçirmek gibi, AI’nın kodunu da gözden geçirmelisiniz. “İyi kod” anlamına gelen özel lint kuralları tasarlayın. Lint hatalarını modele geri besleyin, böylece linting geçer. Birden fazla tur alabilir, ancak ödül fonksiyonunu tip güvenliğini içerecek şekilde değiştirir.

Denetimlerle İterasyon Yapın

Derleme zamanı hataları, çalışma zamanı günlüğü, tıklama yoluyla testler. Her iterasyon, AI’ı türleri sıkılaştırmaya ve üretim sınıfı koduna yaklaşmaya zorlar.

Daha İyi Bir Yapılandırma Yöntemi

Ham üretim hızından daha kaliteli kod üretmeye öncelik vermenin uzun vadede ödendiğini öğrendim. Bu, herhangi bir tiplerine sıfır tolerans göstermek, birden fazla geri bildirim döngüsü ve AI’nın geçmesi gereken katı linting kuralları anlamına gelir. Sürekli çaba gerektirir, ancak kaliteyi düşmeden korumak için tek yol budur.

Önceki bir noktada, AI’nın çalışma zamanı hatalarını gevşek tiplerle düzeltmeye başladığında, bir vicious döngüye girdiğinizi belirttim. Her düzeltme, bir başka güvenlik barajını ortadan kaldırır ve sonuç, derlenen ancak kırılgan ve bakımsız bir kod tabanına dönüşür. Tersi de doğrudur: AI’ı her geçişte tip güvenliğini saygı duymaya zorlarsanız, bir virtuous döngü oluşturursunuz. Her iterasyon, güvenlik barajlarını sıkılaştırır, kod tabanı daha temiz hale gelir ve kalite, güvenilebilecek ve üzerine inşa edilebilecek bir şey haline gelir.

Bu, kalıcı kod kalitesi sunan sistemdir. Her iterasyon, standartları gevşetmek yerine sıkılaştırmak üzere tasarlanmıştır. Bu, en iyi mühendislik takımlarının güçlü olarak tiplenmiş dilleri seçmesinin aynı nedenidir. Tip güvenliği, bakım için temel bir güvenlik barajıdır ve AI’nın bunu görmezden gelmesine izin vermek, uygulamanızın asla üretim sınıfına ulaşamayacağı anlamına gelir.

Brad Eckert, yaşam boyu bir girişimci ve mühendislik lideri olup, ürünlerin fikir aşamasından müşteri teslimine ve ötesine kadar geçen süreçte bir thập yılı aşkın deneyime sahiptir. MIT mezunudur ve şu anda Woz'un kurucu ortak ve CTO'sudur, Woz, Y Combinator tarafından desteklenen bir AI platformudur ve herkesin kod yazmadan yazılım işlerini oluşturup ölçeklenebilmesini sağlar.