Gerçek bir konaklama agent'ı göndermenin en zor mühendislik problemi model, promptlar veya API entegrasyonu değildir. State machine'dir. Bir rezervasyon tek bir nesne değildir — her birinin farklı geçerli geçişleri olan bir durumlar dizisidir ve bir rezervasyon üzerinde aksiyon alabilen herhangi bir agent, hangi durumda olduğunu ve oradan hangi geçişlere izin verildiğini anlamak zorundadır. Bunu yanlış yapın ve agent'ınız kendinden emin bir şekilde rezervasyonları geri sarması saatler süren şekillerde bozar.
Otel nesneleri neden state machine'lerdir
Bir rezervasyon durumlar arasında hareket eder: sorgu → rezerve → değiştirildi → check-in → konaklama-sırası → check-out → folio-kapalı → arşivlendi. Her durumdan yalnızca spesifik geçişlere izin verilir. Check-out olmuş bir rezervasyonu değiştiremezsiniz. Check-in olmuş bir rezervasyonu iptal edemezsiniz (yerine erken-çıkış yaparsınız). Bir no-show'a, aktif bir iptale uyguladığınız şekilde iptal cezası uygulayamazsınız. Tamamen ödemiş bir misafir, kredi-kartı garantili bir misafirden farklı bir değişiklik akışına sahiptir.
İnsanlar bunu örtük olarak ele alır çünkü rezervasyon görevlileri aylar boyunca neye ne zaman izin verildiği konusunda eğitildi. Bir agent'ın o sezgisi yoktur — prompt'a ve fonksiyon spec'lerine yazdıklarınız neyse o vardır. State machine'i açıkça modellemezseniz, agent bir noktada check-in olmuş bir rezervasyonu iptal etmeye veya kapalı bir folio'yu değiştirmeye çalışacaktır ve PMS ya çağrıyı reddedecektir (en iyi durum) ya da kabul edecek ve bozulmuş bir state üretecektir (en kötü durum, üretimde bana iki kez oldu).
Bir agent'ta state machine nasıl modellenir
Bunun üretimde nerede bozulduğunu gördüm
Varşova'daki zincirde, rezervasyon-değişiklik agent'ında cancel_reservation adlı bir fonksiyon vardı. State-machine modeli örtüktü — fonksiyonun check-in olmuş bir rezervasyonu iptal etmeyi reddedeceğini varsaydım. PMS katmanında reddetti. Ama agent, PMS hatasını aldığında, fonksiyonu biraz farklı bir argümanla tekrar denerdi, sonra üçüncü kez, sonra misafire "iptaliniz işleme alındı" e-postası gönderirdi çünkü prompt'taki state-machine varsayımı "başarılı fonksiyon çağrısı çalıştı demektir" idi. Dört misafir, iptal edilmemiş rezervasyonlar için iptal onayları aldı. Düzeltme state'i fonksiyon spec'inde açık yapmaktı; maliyet bir haftalık yeniden iş ve kurumsal bir müşteriye bir özür çağrısıydı.
Minimum uygulanabilir state modeli
Bir konaklama agent'ı için ilk fonksiyonu yazmadan önce, şunları yazın: agent'ın dokunduğu nesne tipleri (rezervasyon, folio, misafir profili, oda bloğu), her biri için geçerli durumlar ve durumlar arasındaki geçerli geçişler. Bu genellikle operasyon direktörüyle 30-60 dakikalık bir çalışmadır. Çıktı bir A4 sayfasıdır. O sayfa her agent sistem prompt'unun, her fonksiyon ön koşulunun ve her audit log girişinin bir parçası olur. Bu adımı atlayın ve daha sonra, üretimde, telefonda misafirler varken harcayacaksınız.