Otonom traktör, otonom ajan: aynı problem, farklı tarla

Bear Flag'de tarlada otonom traktörle çalıştım, şimdi kod tabanında otonom ajanlarla. İki alan birbirinden çok uzak görünüyor ama aynı üç soruyu soruyorlar.

Bir dönem otonom tarım makineleri üzerine çalıştım. Bugün otonom kodlama ajanları yazıyorum. Aradaki mesafe büyük görünüyor — biri bir tarlada toprak sürüyor, diğeri bir depoda commit atıyor.

Ama iki alanda da mühendisliğin zor kısmı aynı yerde toplanıyor: makinenin ne yapabildiği değil, insan bakmadığında ne yaptığı.

Birinci ortak soru: sınır nerede

Bir traktörün otonom çalışması için tarlanın sınırını bilmesi gerekiyor. Sınır sadece bir çit değil — nereye girebileceği, hangi eğimde çalışabileceği, hangi hızda dönebileceği.

Bir ajanın da sınırı var: hangi dosyalara yazabileceği, hangi komutları çalıştırabileceği, hangi ağa çıkabileceği. Ve iki alanda da aynı gerilim var — sınırı daralttıkça makine güvenli ama işe yaramaz, genişlettikçe faydalı ama riskli oluyor.

İki tarafta da doğru cevap "en geniş güvenli alan" değil. İşi yapabileceği en dar alan. Fark ince ama sonucu büyük: birincisinde izinleri kısıtlıyorsun, ikincisinde gerekçelendiriyorsun.

İkinci ortak soru: durmayı bilmek

Otonom bir makinenin en kritik davranışı ilerlemek değil, durmak.

Tarlada beklenmedik bir engel, bozuk bir sensör okuması, kaybolan konum sinyali — hepsinde doğru davranış tahmin etmeye çalışmak değil, güvenli bir hâlde durmak. Ve "güvenli hâl" tanımı işin kendisine bağlı: hareket eden bir makinenin nerede durduğu önemli.

Ajan tarafında da aynı. Aynı hatayı beşinci kez farklı yazarak denemek, engelin üstünden geçmeye çalışmak. Doğrusu durmak — ama işi ortada bırakmadan. Yarım kalmış bir değişiklik, hiç başlamamış bir değişiklikten kötü; yarım sürülmüş bir tarla gibi.

Otonom bir sistemi değerli kılan şey ne kadar ilerlediği değil. Yanlış gittiğini fark ettiğinde ne yaptığı.

Üçüncü ortak soru: kanıt

Tarlada bir makinenin ne yaptığını görebiliyorsun — iz kalıyor. Yazılımda bu iz kendiliğinden oluşmuyor, yaratmak zorundasın.

Ama iki alanda da sorulan soru aynı: sistem beklenmedik bir şey yaptığında, ne olduğunu anlatabiliyor musun yoksa tahmin mi ediyorsun? Deterministik kayıt yazısında anlattığım şeyin karşılığı, tarım tarafında telemetri ve kara kutu.

Ve iki alanda da bu kayıt aslında bir güven mekanizması. Çiftçi makineye tarlasını, geliştirici ajana kod tabanını emanet ediyor. Emanet alan tarafın gösterebilmesi gerekiyor.

Farkın nerede olduğu

Bir fark var ve önemli: fiziksel dünyada hata geri alınamıyor.

Yanlış sürülen bir tarla yeniden sürülmüyor, çarpılan bir engel geri gelmiyor. Yazılımda ise hemen her şey geri alınabiliyor — sürüm kontrolü, yedek, geri dönüş.

Bu fark, yazılım tarafını daha rahat yapıyor ama bir tuzağı var: geri alınabilirlik, dikkatsizliği ucuzlatıyor. Fiziksel sistemlerde öğrenilen disiplinin yazılıma taşınması, tersinden taşınmasından daha faydalı.

Ve bu iki alan hızla birbirine yaklaşıyor. Ajanlar üretim sistemlerine dokunmaya başladıkça, "geri alınabilir" varsayımı da aşınıyor — gönderilen bir e-posta, aktarılan bir para, silinen bir kayıt geri gelmiyor.