Kurt adamlar ve yapay zeka ajanları: Durum makinelerinin pratik kullanımı

Saberie

Active member
Trafik ışığı anahtarlaması, web ön uçları veya LLM aracıları olsun: birçok yazılım sistemi durum makinesi olarak modellenebilir. Durum makineleri, sistemleri adım adım talimatlar dizisi olarak görmeyen, bunun yerine onları durumlar ve durum geçişleri yoluyla bildirimsel olarak tanımlayan çok yönlü bir tasarım modelidir. Bu açıkça bir sistemin farklı koşullar altındaki davranışını gösterir. Birçok tasarım modelinde olduğu gibi, sistem açıkça bir durum makinesi olarak uygulanmasa bile durum makinelerini anlamak faydalıdır. Sistemleri durum makineleri olarak görüntülemek, açıkça tanımlanmış durumları ve yanıt seçeneklerini belirlemeyi ve teknik olmayan paydaşlarla iletişim kurmayı kolaylaştırır.


Duyuru








Inlinity'nin kurucu ortağı olan Kilian Kluge, güvenilir yapay zeka sistemleri için süreçler, yazılımlar ve altyapılar geliştiriyor. Daha önce BT danışmanı ve geliştiricisi olarak çalışmış ve kullanıcı merkezli yapay zeka alanında doktorasını Ulm Üniversitesi'nden almıştır.












Philipp Schröppel, açıklanabilir yapay zekayı araştırmadan pratiğe taşımak için Inlinity'de makine öğrenimi mühendisi ve proje yöneticisi olarak çalışıyor. Inlinity'deki çalışmalarının yanı sıra, Ulm Üniversitesi'nde yorumlanabilir makine öğrenimi ve insan-yapay zeka etkileşimi üzerine araştırma yapan doktora öğrencisidir.







Durum makineleri, birçok bağımsız ve eşzamanlı alt sistemden oluşan karmaşık sistemlerde özel bir güce sahiptir. Modelleme için, bir durum makinesi olarak görülen her alt sistemin bağımsız bir aktör olarak kendi durumunu yönettiği ve diğer aktörlerle yalnızca mesaj alışverişi yoluyla etkileşime girdiği aktör modeli kullanılabilir. Açık kaynaklı JavaScript kitaplığı XState, durum makinesi ve aktüatör modelinin bu kombinasyonuna kolayca erişilebilmesini sağlar. Başlangıçta web ön uçlarına odaklanılarak geliştirilen bu araç aynı zamanda arka uç uygulamaları ve Büyük Dil Modellerinin (LLM) sistemlerin kontrolünü ele geçirdiği yapay zeka aracılarının uygulanması için de uygundur.

Bu makalede durum makinelerinin ve aktüatör modelinin temelleri tanıtılmakta ve geliştiricilere farklı olası kullanımlar gösterilmektedir.



Durum makinelerine giriş


Durum makinesi, bir sistemi, aralarında olayla tetiklenen geçişlerin mümkün olduğu bir dizi durum olarak tanımlar. Durum makineleri, eylemler aracılığıyla çevreleriyle etkileşime girebilir. Hangi eylemin ne zaman gerçekleştirileceği, alınan duruma ve olaya bağlıdır. Durum makinelerinin açık bir örneği oturum açma akışlarıdır: başlangıçta durum “oturum kapatma”dır. Giriş bilgilerinizi girdikten sonra “Giriş” butonuna tıkladığınızda “Kimlik Doğrulama” olayı aktif hale gelir. Başarılı olması durumunda sistem “giriş yapmış” durumuna geçer, aksi halde “çıkış” durumuna geri döner. Bu süreç zorunlu olarak bir dizi adım olarak tanımlanabilir. Özetlenen basit durumda işe yarayan şey, genellikle kafa karıştırıcı, kodda iç içe geçmiş dalların daha karmaşık süreçlere dönüşmesine yol açar. En geç eşzamanlı süreçlerin senkronize edilmesi gerektiğinde (örneğin ikinci bir kimlik doğrulama faktörünün gönderilmesi ve kontrol edilmesi), çaba ve hata duyarlılığı artar.

Durum makinelerinin durum geçiş diyagramlarıyla gösterimi


“The Werewolves of Mirkwood” masa oyunu bu makalede devlet makinelerinin tasarım modeli olarak kullanılmasına bir örnek teşkil etmektedir. En az sekiz kişilik bir grup tarafından oynanan bu rol yapma oyununda oyuncular, oyun aşamasına ve role bağlı olarak birbirleriyle etkileşime giriyor. Paralel eylemler ve gizli iletişim bunun merkezi bir parçasıdır. En basit haliyle kurt adam oyununun iki rolü vardır: köylüler ve kurt adamlar. Kurt adamlar tüm köylüleri yemeyi başarabilirlerse oyunu kazanırlar ve köylüler tüm kurtadamları öldürürlerse galip gelirler. Bir oyun lideri süreci yönetir, oylamaları gerçekleştirir ve sonuçları uygular.

Şekil 1'deki durum geçiş diyagramı kurt adam oyunundaki durumları ve olası geçişleri görselleştirir. Durum geçiş diyagramları, durum makinelerinin mantığını açık bir şekilde ve teknik uygulama ayrıntıları olmadan temsil eder. Bu nedenle geliştirme ekipleri ve teknik olmayan paydaşlar arasındaki koordinasyon için etkili bir iletişim aracı oluştururlar.




Rol oynama için durum geçiş diyagramı



Rol yapma oyunu “Kurtadamlar Kuyutorman” için durum geçiş diyagramı (Şekil 1).



Bir kurt adam oyunu, her oyuncuya rastgele iki rolden birinin atandığı “Hazırlık” durumunda başlar: kurt adam veya köylü. İlk gece hazırlıkları takip eder. (Yani tek bir olası durum geçişi vardır.) “Gece” durumu oluştuğunda önce tüm oyuncular gözlerini kapatır, ardından oyun ustasının yönlendirmesiyle sadece kurt adamlar gözlerini açar. Hangi köylüyü öldürmek istediklerine işaretlerle (sessizce ve mümkünse hiç ses çıkarmadan) oy veriyorlar ve karar verdikten sonra tekrar gözlerini kapatıyorlar.

“Gece” durumundan iki olası geçiş vardır. Hala hayatta olan herhangi bir kişi varsa oyun “Gün” durumuna girer. Ancak kurt adamlar kararlarıyla kalan son köylüyü de yemişlerse kazanmış olurlar ve oyun “kurt adamlar kazanır” durumuna geçer. “Gündüz” durumunda önce tüm oyuncular gözlerini açar ve oyun ustası gece boyunca kimin öldürüldüğünü duyurur. Bu oyuncu elenir ve oyundan çıkar. Geriye kalan tüm oyuncular kimin kurt adam olduğundan şüphelendiklerini tartışır ve sonuçta oylamayla karar verirler. Seçilen oyuncu elenir ve rolünü kalan oyunculara açıklar. “Gün” durumuyla ulaşılabilecek üç olası durum vardır. Seçilen oyuncu elendikten sonra tüm kurt adamlar ölürse oyun “Köylülerin Köyü” durumunda sona erer. Elenen oyuncu kalan son köylü ise oyun Kurt Adam Zaferi durumuna girer. Diğer tüm durumlarda oyun “Gece” durumuna geri döner. “Kurt adamlar kazandı” ve “Köylüler kazandı” durumları oyunun sonunu işaret eder ve daha fazla duruma ulaşılamayan son durumlardır.

XState ile bir durum makinesinin uygulanması


XState, durum tabanlı mantığı durum makineleri olarak açıkça tanımlamanıza ve yönetmenize olanak tanıyan bir JavaScript kitaplığıdır. XState ile uygulanan durum makineleri, popüler web ön uç çerçevelerine entegre edilebilir veya Node.js ile arka uçta çalıştırılabilir. Açık kaynak projesinin arkasında artık durum makinelerinin oluşturulması ve yönetilmesi için görsel editör “Stately Studio”yu sunan Stately şirketi bulunuyor. Durum makineleri grafiksel olarak görüntülenebilir ve etkileşimli olarak ayarlanabilir. Daha sonra ilgili kaynak kodunu oluşturabilir ve dışa aktarabilirsiniz. Düzenleyiciyi kullanmak hiçbir programlama bilgisi gerektirmez ve programlama bilgisi olmayan çalışanların süreçleri ve mantığı tanımlamasına ve anlamasına olanak tanır.

Önceki bölümde anlatılan oyun, Liste 1'de gösterildiği gibi XState'te gerçekleştirilebilmektedir. Şekil 1'deki diyagramda görülebileceği gibi olası durumlar (states) en yüksek seviye. Geçişler zorunludur (always) veya bir olay nedeniyle (on). Ayrıca bir sonraki durumu da seçebilirsiniz (target) bir kriterin karşılanmasına bağlı hale getirmek (guard). Durum makinesi her zaman “Başlangıç” durumunda başlar (initial) ve son duruma ulaşıldığı anda sona erer (final) elde edilir. Her durum makinesinin herhangi bir bilginin saklanabileceği bir bağlamı vardır (context).


export const gameMachine = setup({}).createMachine({
initial: "Start",
states: {
Start: {
always: {target: "Night"}
},
Day: {
on: {
votesCollected: [
{ guard: 'allVillagersDead', target: 'WerewolvesWin' },
{ guard: 'allWerewolvesDead', target: 'VillagersWin' },
{ target: 'Night' }
]
]}},
Night: {
on: {
votesCollected: [
{ guard: 'allVillagersDead', target: 'WerewolvesWin' },
{ target: 'Day' }
]
}
},
VillagersWin: {
type: "final"
},
WerewolvesWin: {
type: "final"
},
},
context: {},
});


Liste 1: Şekil 1'de gösterilen durum geçiş diyagramının XState'te uygulanması.
 
Üst