Bir işletmede ERPSipariş, stok, muhasebe ve üretim planlama süreçlerini tek bir veritabanında birleştiren kurumsal yazılım sistemi.Sözlükte detaylı bilgi → veya MESÜretim sahasındaki makine, operatör ve süreç verilerini gerçek zamanlı olarak toplayan ve yöneten yazılım sistemi.Sözlükte detaylı bilgi → yatırımı genellikle tek soruyla ölçülür: “Sistem çalışıyor mu?” Asıl sorulması gereken soru farklıdır: Sistemde biriken veri, karar verenlerin eline ne kadar ulaşıyor? Veri yıllardır birikiyor; ama çoğu işletmede yalnızca rapor yazabilen birkaç kişinin okuyabildiği bir arşiv olarak duruyor.

Bu soruyu kendi elimizle denemek istedik: işletme veritabanına Türkçe soru sorulabilen ve tamamen şirket içinde çalışan bir yapay zekaVeriden örüntü öğrenip tahmin, sınıflandırma ya da metin üretimi yapan yazılım; üretimde rapor, bakım ve kalite kararlarına yardımcı olur.Sözlükte detaylı bilgi → asistanı kurduk. Seçtiğimiz yaklaşım, sistemin kurgusu, modeli işletmeye tanıtma biçimimiz ve gerçek kullanıcıların önünde gördüklerimiz aşağıda.

Sorun verinin azlığı değil, dili

ERP ve MES tablolarla, kodlarla ve sorgularla konuşur; yönetici cümlelerle düşünür. Hazır raporda olmayan her soru bilgi işlem ekibine yeni bir iş olarak düşer ve sıraya girer. Sıradaki iş bittiğinde soru çoğu zaman eskimiştir.

Yapay zekanın bu iki dil arasında tercümanlık yapabileceğini düşünüyoruz. Beklediğimiz kazanımlar şunlar:

İlk üçü sistemin işe yaradığı ölçüde gerçekleşir. Dördüncüsü, aşağıda anlatacağımız gibi, sistem hiç çalışmasa bile elde kalan kazanımdır.

Yaklaşım: Doğal dilden sorguya, şirket içinde

Denediğimiz yaklaşım literatürde “text-to-SQLKullanıcının Türkçe sorusunu dil modeliyle veritabanı sorgusuna çeviren, sonucu tekrar doğal dile döken yaklaşım.Sözlükte detaylı bilgi →” diye geçer: kullanıcı soruyu kendi cümlesiyle yazar, dil modeliBüyük metin kütlesinden öğrenmiş, doğal dildeki soruyu anlayıp metin ya da veritabanı sorgusu üreten yapay zeka modeli.Sözlükte detaylı bilgi → bu soruyu bir veritabanı sorgusuna çevirir, sorgu çalışır ve sonuç tekrar Türkçeye dönüştürülür.

Burada bilinçli bir tercih yaptık. Bulut tabanlı bir yapay zeka servisi yerine şirket içinde çalışan, açık kaynaklı ve görece küçük bir dil modeli kullandık. Model şirket sunucusunda çalışıyor ve mevcut veritabanına, sistemde herhangi bir değişiklik yapılmadan bağlanıyor. Kullanıcı tarayıcı üzerinden, bir sohbet ekranında soru soruyor.

Bu tercihin arkasında üç beklenti var. Veri şirket dışına çıkmıyor, çünkü hiçbir bilgi harici bir sunucuya gönderilmiyor. Maliyet öngörülebilir, çünkü soru başına ücret ödenmiyor. Kontrol işletmede kalıyor, çünkü sistemin davranışı bir servis sağlayıcının güncellemesiyle bir gecede değişmiyor.

Bedeli de açık: küçük bir lokal modelBulut servisine değil şirketin kendi sunucusuna kurulan yapay zeka modeli; veri dışarı çıkmaz, soru başına ücret ödenmez.Sözlükte detaylı bilgi →, büyük bulut modelleri kadar güçlü değil. Bu yüzden sistemi, modelin iyi yaptığı işe odaklanacağı, geri kalanın yazılımla güvence altına alınacağı biçimde kurguladık. Cevapların tutarlı olması için modelin “yaratıcılık” payını en aza indirdik; bu, aynı soruya her zaman birebir aynı cevabı garanti etmiyor ama değişkenliği belirgin biçimde azaltıyor.

Bir sorunun yolculuğu

Kullanıcının yazdığı bir cümle, cevaba dönüşene kadar birkaç aşamadan geçiyor. Her aşamanın tek bir görevi var ve hiçbir aşama bir öncekine körü körüne güvenmiyor. Hatalı ya da güvensiz bir sorgu kullanıcıya ulaşmadan modele geri dönüyor; düzeltme hakkı en fazla üç deneme.

Akış şeması: Türkçe soru önce veri sorusu mu sohbet mi diye ayrılır; veri sorusu SQL üretimi, tek SELECT kontrolü ve salt okunur çalıştırma adımlarından geçer, hata olursa en fazla üç deneme için modele geri döner, sonunda SQL ve ham veriyle birlikte Türkçe açıklama üretilir

Modeli işletmeye tanıtmak: tablo rehberi

Bir dil modeli sorgu dilini bilir; ama işletmenizin “açık sipariş” derken neyi kastettiğini bilemez. Bu bilgi tablo adlarında yazmaz, işletmenin hafızasındadır. Bu yüzden modele veritabanının kendisini değil, iş kurallarıyla zenginleştirilmiş bir tablo rehberi verdik.

Rehberi, yazılımcı olmayan iş birimi uzmanlarının da okuyup düzenleyebileceği biçimde hazırladık; çünkü kuralı en iyi bilen kişi çoğu zaman yazılımcı değil, işi her gün yapan kişidir. Her konu için (sipariş, stok, cari…) ayrı bir bölüm var ve her bölüm şunları anlatıyor:

Bu rehber bir kerelik iş değil. Sistem kullanıldıkça eklenen her yeni kural rehberi büyütüyor; elde kalan şey, iş kurallarının tek yerde yazılı olduğu bir kurum hafızası. Yukarıda “sistem hiç çalışmasa bile” dediğimiz kazanım bu.

Güvenlik: modele güvenmek zorunda kalmamak

Modelin yanlış ya da zararlı bir sorgu yazabileceğini baştan kabul ettik ve sistemi buna göre kurduk. Korumayı tek bir noktaya bırakmak yerine üst üste binen katmanlarla sağlıyoruz:

Bağlantı hatalarını sorgu hatalarından ayrı tutuyoruz: sunucuya ulaşılamıyorsa model boşuna düzeltme denemesi yapmaz, kullanıcıya sorunun bağlantıda olduğu söylenir.

Sahadan gözlemler: nerede zorlandık, ne öğrendik?

İlk denemeler umut vericiydi. Sistem gerçek kullanıcıların gerçek sorularıyla karşılaştığında ise test ortamında görmediğimiz durumlar çıktı. Beşini, olması gerektiğini düşündüğümüz davranışla ve bugün vardığımız noktayla birlikte anlatıyoruz.

1. Sayısal özetlerde hata

Model, sonuç tablosunu özetlerken toplamları ve kayıt sayılarını kendisi hesaplamaya kalktığında zaman zaman yanlış rakam verdi; üstelik bunu büyük bir özgüvenle yaptı. Dil modelleri kelimelerde güçlü, aritmetikte zayıf. Hesap yazılımın, yorum modelin işi olmalıydı.

Toplamlar ve sayılar artık yazılım tarafında hesaplanıp modele hazır veriliyor. O günden beri özetlerdeki rakamın tablodaki rakamdan saptığını görmedik. Beş gözlemin en temiz kapananı bu.

2. Tablolar arası bağlantılarda kayıtların çoğalması

Bazı tablolarda aynı ana kayda bağlı birden fazla alt kayıt bulunur. Model tabloları bu ayrıntıyı bilmeden birleştirdiğinde satırlar çoğaldı ve toplamlar olduğundan büyük çıktı. Farklı para birimlerindeki tutarların tek toplamda birleştirildiği de oldu. Veritabanı her iki durumda da hata vermedi; sorgu geçerliydi, sonuç yanlıştı.

Doğru bağlantı koşulu ve “hangi tutarlar birlikte toplanabilir” kuralı modelin tahminine bırakılmamalı, rehberde açıkça yazmalı. Rehberin “sık yapılan hatalar” bölümüne eklenen kurallar bu hataları gözle görülür biçimde azalttı. Ancak rehbere henüz yazılmamış bir kural yine yanlış sonuca yol açabilir; bu alanı izlemeye devam ediyoruz.

3. Veri değerini eksik bilgi sanmak

Modele, rehberde olmayan tablo ve alanlar için uydurma (halüsinasyonDil modelinin olmayan alan, kayıt ya da rakamı özgüvenle üretmesi; sayıların yazılımda hesaplanmasının nedeni.Sözlükte detaylı bilgi →) yapmaması, “bilgi yok” demesi öğretilmişti. Kural uydurma alan adlarını büyük ölçüde engelledi; ama kullanıcı soruda bir müşteri adı ya da ürün kodu geçirdiğinde, model bu değeri rehberde bulamayınca yine “bilgi yok” diyebildi. Oysa rehber verinin kendisini değil, yapısını anlatır; sorudaki bir isim ya da kod rehberde değil veritabanında aranmalı.

Talimatlarda yapı ile değer arasındaki fark açıkça yazıldı; model yine de “bilgi yok” derse sistem bir kez itiraz edip yeniden deniyor. Yanlış retler azaldı; tamamen bitti diyemiyoruz.

4. Devam sorularında bağlamın kaybolması

Kullanıcılar bir sonucu adım adım daraltmayı seviyor: önce genel bir liste, ardından “peki sadece şunlar?” gibi bir devam sorusu. Küçük model devam sorusunu çoğu zaman bağımsız bir soru gibi ele alıp önceki filtreleri unuttu.

Önceki soru ve sorgusu modele açıkça verildiğinde ve devam ifadeleri tanındığında, tek adımlık daraltmalarda sonuç iyileşti. Uzun soru zincirlerinde küçük bir modelden kusursuz sonuç beklemek gerçekçi değil; bunu çözmüş değiliz. Kullanılan sorgunun görülebilmesi teknik kullanıcı için bir güvence sağlıyor. Teknik olmayan kullanıcıya sonucun doğru olup olmadığını nasıl göstereceğimizi ise henüz bilmiyoruz; arayış sürüyor.

5. Boş sonuçların yanlış yorumlanması

Filtreye uyan kayıt bulunmadığında model boş bir tabloyu yorumlamaya çalışıp anlamsız cümleler kurdu. Boş sonuç modele sorulacak bir durum değil; yazılımın doğrudan tanıyıp kullanıcıya açıkça söylemesi gereken bir durum. Artık boş sonuçta model hiç çağrılmıyor; kullanıcıya kayıt bulunamadığı söyleniyor ve kullanılan sorgu gösteriliyor.

Beş gözlemin ortak dersi

Yazılımla güvence altına alınabilen sorunlarda kalıcı iyileşme gördük. Rehberin kalitesine ve modelin yorumuna bağlı olanlar iyileşti ama takip istiyor. En dikkatli olunması gereken yer, veritabanının hata vermediği ama anlamca yanlış olan sonuçlar; bunları yakalamanın tek yolu rehberi sürekli geliştirmek ve sonuçları zaman zaman uzman gözüyle kontrol etmek.

Buradan çıkardığımız ilke kısa: modele yalnızca iyi yaptığı işi verin, gerisini yazılımla güvence altına alın.

Haklı olarak şu denebilir

“Bu kadar katman, bu kadar rehber… Rehbere her kuralı zaten yazıyorsanız, raporu da yazın bitsin. Model ne iş yapıyor?” Rehber bir kez, konu başına yazılır; sorular ise sınırsızdır. Sipariş bölümü bir kez doğru anlatıldığında “bu ay hangi müşteriye kaç sipariş açıldı”, “geçen yıl aynı ayla farkı ne”, “bunların kaçı termini geçti” sorularının her biri için ayrı rapor yazılmaz. Rapor, cevabı önceden bilinen soruya yazılır; model, henüz sorulmamış soru için var.

İkinci itiraz daha ciddi: “Sonucun yanlış olduğunu kullanıcı nasıl anlayacak?” Bunun teknik kullanıcı için cevabı var, teknik olmayan kullanıcı için henüz yok. Yukarıda açıkça yazdık.

Nereden başlamalı?

Bu tür bir deneme için büyük bir proje başlatmak gerekmez. Bize göre en sağlıklı yol küçük başlamak:

Asıl kazanç: veriyle konuşan bir işletme

“Ürün Bazında Enerji Maliyeti” makalesinde her hafta aynı üç soruya dönmekten söz etmiştim: Hedeften ne kadar uzağız? Neden? Ne yapacağız? O rutini kıran şey çoğu zaman isteksizlik değil, cevabın bir rapor talebinin arkasında olmasıdır. Yapay zekanın ERP ve MES verisine katabileceği en büyük değer, bize göre yeni bir rapor değil, yeni bir alışkanlık: merak edilen şeyin sorulması ve cevabına kısa sürede ulaşılması. Üstelik bunu veriyi şirketin dışına çıkarmadan denemek mümkün.

Veri veritabanında duruyor ama ona ulaşmak için birini bekliyorsanız, o verinin değeri henüz ortaya çıkmamıştır.

Cevabı için birini beklediğiniz veri, henüz karar verisi değildir.

Yorumlar

Yorumlar yükleniyor…