İçeriğe atla
megapromotingHadi konuşalım

Çözümler · Finansal hizmetler

Kapalı bir सूचीeden seçim yaparak para hareketlerini sınıflandıran, ardından birinin yorumlayacağı bir cümle yazmayan bir ajan.

Bir finans kuruluşunda, faydalı bir ajan tavsiye vermez ve hiçbir şeyi onaylamaz: belgeleri ve işlemleri okur, bunları sabit bir kümedeki bir kategoriye yerleştirir, ne kadar emin olduğunu söyler ve ‘bilmiyorum’ diye yanıt verme hakkına sahiptir. Geri kalan — karar, onay, politika — insanlarda kalır.

Teklif, koşullarıylaNu scriem „livrat”, pentru că nu avem un agent de acest fel pus în producție la un client din sectorul financiar. Ce avem, și arătăm exact ca atare, e o conductă proprie de ingestie care rulează pe datele noastre: cinci module Python, 1.526 de linii, care citesc notificări bancare din e-mail și extrase în PDF, clasifică fiecare tranzacție prin unelte și o scriu în PostgreSQL cu dedublare, plus patru fluxuri de automatizare pentru webhookuri de la trei procesatori de plăți. Starea reală, spusă în aceeași frază: depozitul nu e sub git, directoarele `tests/` și `webhook-server/` sunt goale, iar potrivirea aproximativă a numelor de contrapartidă folosește o euristică de n-grame marcată în cod ca „de înlocuit cu un serviciu de înglobare înainte de producție”. Partea de platformă financiară în producție — flux de cerere, contract, grafic de plăți, audit — e o lucrare separată, cu dovezile ei, și acolo scriem „livrat”.

Finansal hizmetlerde AI ajanı talepleri neredeyse her zaman “müşterilere ürünlerimiz hakkında sorulara cevap versin” biçiminde gelir. Bu meşru bir taleptir, ama zamanın kazanıldığı yer orası değildir. Zaman başka yerde kaybolur: biri her gün onlarca banka bildirimi ve hesap ekstresi açar, büyük harflerden ve bir koddan oluşan bir açıklamaya bakar ve bunun müşteriden bir tahsilat mı, bir maaş mı, bir vergi mi, alacaklıya bir taksit mi yoksa işletme gideri mi olduğuna karar verir. Bu iş tekrarlayıcı, sıkıcı ve tam da bu yüzden hata doludur.

Bir dil modeli buna uygundur, bir koşulla: ondan düz metinle bir cevap yazması istenmemelidir. Eğer ona bir cümle verirseniz, onu siz ayrıştırırsınız ve ayrıştırmayı siz yanlış yaparsınız. Bizim hatta model yazmaz: yedi araç alır ve tam olarak birini çağırmalıdır — müşteriden tahsilat, maaş, vergi, alacaklıya ödeme, işletme gideri, banka komisyonu veya bilinmeyen. Her araç, karşı taraf adı ya da kategoriye ek olarak, 0 ile 1 arasında bir güven skoru ister. “Bilinmeyen” yazılı bir gerekçe ister. Çıktı bir yapıdadır, bir kanaat değil.

İkinci kural, hiçbir şeyin iki kez girmemesidir. Bildirimden ya da ekstreden çıkarılan her işlem, alanları üzerindeki SHA-256 parmak izinin 16 karakterlik öneki olarak hesaplanan bir dış kimlik alır, sütun tabloda benzersizdir ve ekleme `ON CONFLICT (external_id) DO NOTHING` ile yapılır. Pratik sonuç: posta kutusu istediğiniz kadar yeniden okunabilir ve bakiye ikiye katlanmaz. Bu kural olmadan, herhangi bir finansal ingest hattı üçüncü haftada birinin elle temizlediği kopyalar üretmeye başlar.

Böyle bir ajanın ne yapmadığı ve bunu sayfada yazmanın neden önemli olduğu: bir ödemeyi onaylamaz, kredi kararı vermez, yatırım tavsiyesi vermez ve müşteriye kurum adına cevap vermez. Döndürdüğü güven skoru, modelin kendisi hakkında değerlendirmesidir; bizim yaptığımız bir doğruluk ölçümü değildir — bu ayrım, bir araç ile kontrol yanılsaması arasındaki farktır.

Neleri kapsıyor

Finansal hizmetlerde somut olarak ne değişir

Belge, onu on kez okusak da bir kez girer

Bildirimler IMAP üzerinden posta kutusundan okunur, ekstreler PDF’den. Her işlem, alanları üzerindeki SHA-256 parmak izinden bir dış kimlik alır, `external_id` sütunu tabloda `NOT NULL UNIQUE`’dir ve ekleme `ON CONFLICT (external_id) DO NOTHING` ile yapılır; eklenen satır ve kopya olduğu için atlanan satır için ayrı günlük tutulur. Aynı kutunun yeniden okunması hiçbir kopya üretmez.

Sınıflandırma araçlarla, kapalı bir sonuç listesiyle yapılır

Yedi araç, düz metin değil: müşteriden tahsilat, maaş, vergi, alacaklıya ödeme, işletme gideri, banka komisyonu, bilinmeyen. Model yalnızca birini çağırmalıdır. İlk altısı, ad veya kategoriye ek olarak, araç şemasında beyan edilmiş 0,0 ile 1,0 arasında bir güven skoru zorunlu kılar; yedincisi bir gerekçe ister. Kullanılan model kodda beyan edilmiştir, yapılandırmada gizli değildir.

“Bilinmeyen” gerekçeli meşru bir çıktıdır

“Bilmiyorum” deme hakkı olmayan bir sınıflandırıcı, özellikle önemli olan sıra dışı işlemleri yüksek güvenle yanlış sınıflandırır. Bu yüzden bilinmeyen aracı diğerleri kadar kullanılabilir durumdadır ve satıra geçen yazılı bir gerekçe ister. Bilinmeyen satırlar, sistemin başarısızlığı değil, insanın çalışma listesidir.

Karşı taraf adlarının yaklaşık eşleştirilmesi, gerçek durumu ile

Aynı şirket ekstrelerde üç farklı yazımla görünür. Sınıflandırmanın üzerinde, vektörler arasında kosinüs benzerliğine göre bir eşleştirme vardır. Bugün o vektörlerin ne olduğunu tam olarak söylüyoruz: kodda, üretim için gerçek bir embedding servisi çağrısıyla değiştirilmesi gerektiği yorumuyla yazılmış bir karakter n-gram sezgisel yöntemi. Yazım varyasyonları için çalışır; anlamsal bir eşleştirme değildir.

Ödeme işlemcilerinden gelen webhook’lar aynı tabloya girer

Her biri üç ödeme işlemcisi için birer tane ve günlük mutabakat için bir tane olmak üzere dört otomasyon akışı, her biri 7 ile 10 düğüm arasında. Mimari fikir şu: farklı kaynaklar — e-posta, PDF, webhook — sonra uzlaştırılması gereken üç tablo üretmez, aynı deduplikasyon kuralıyla aynı tabloda satırlar üretir.

Model tüketimi fatura altında değil, anahtar başına bütçe altında kalır

Çağrılar, `api.megapromoting.com/v1` üzerinde kendi gateway’imiz üzerinden geçer; her biri token başına maliyet ve bağlam sınırı olan 44 yapılandırılmış model vardır. Proje anahtarı model beyaz listesi, bütçe ve dönem içerir, tarihi korunarak döndürülebilir ve tüketim günlük olarak kullanıcı × anahtar × model bazında konsolide edilir. Herkesi şaşırtan ayrıntı şu: akıl yürütme modelleri, izleme sisteminin göremediği iç adımlar üretir, ancak sağlayıcı bunları faturalandırır — dolayısıyla anahtar başına brüt bütçe, istenen üst sınırın altında ayarlanır.

Veriler makineden ayrılmadan neler çalıştırılabilir

Büyük bir model gerektirmeyen adımlar için — bilinen bir formattan alan çıkarma, ad eşleştirme, tutarlılık kontrolleri — hiçbir harici sağlayıcıya ihtiyaç yoktur; bunlar sıradan koddur. Model yalnızca sınıflandırma adımı için çağrılır. Politikanız veri çıkışını yasakladığında, tartışma AI kullanılıp kullanılmadığı değil, modele tam olarak neyin gönderildiğidir: hesap kimlikleri olmadan işlem açıklaması gönderilebilir.

Böyle bir aracın yapmadığı ve yapmayacağı şeyler

Bir ödemeyi onaylamaz ve bir transferi gerçekleştirmez. Kredi kararını vermez — kurallar, eşikler ve onay kurum politikasındadır. Yatırım tavsiyesi vermez ve ayrı bir onay akışı olmadan müşteriye sizin adınıza yanıt vermez. Ve doğruluğu garanti etmez: güven skoru, modelin kendisi hakkında ürettiği çıktıdır, bağımsız bir ölçüm değildir.

Traseul

Bir talep sistemden nasıl geçer.

01

Her şeyden önce sonuçların kapalı listesini belirliyoruz, koddan önce

İlk teslimat bir araç değil, bir listedir: hangi kategorilere sınıflandırabileceği, her birinin hangi zorunlu alanları istediği ve sizde „bilinmeyen”in ne anlama geldiği. Liste bir sayfaya sığmıyorsa, görev bir araç için uygun değildir — ve bunu şimdi öğrenmek daha ucuzdur.

02

Model olmadan ingest ve deduplikasyon kuruyoruz

E-postadan, PDF’den veya webhook’tan okuma, alan çıkarma, harici kimlik hesaplama ve veritabanına yazma işlemleri herhangi bir model çağrısı olmadan yapılır ve doğrulanır. Doğru ingest eden ve çift kayıt oluşturmayan bir hat teslim ediyoruz. Bu adım sağlam değilse, üstüne konan bir model yalnızca daha ikna edici hatalar üretir.

03

Sınıflandırmayı ekliyor ve bunu sizin vakalarınız üzerinde ölçüyoruz

Çalışan hattın üzerine sınıflandırma araçlarını koyuyor ve bugün işi yapan kişinin doğru sonucu belirlediği gerçek işlemler kümesi üzerinde çalıştırıyoruz. Doğruluk hakkında bir iddia değil, uyum ve uyumsuzluk tablosunu teslim ediyoruz. Satırın insana gideceği eşik, o tablodan seçilir.

04

Bütçeyi, günlüğü ve kapıları koyuyoruz

Model beyaz listesi ve bütçesi olan proje anahtarı, tüketimin günlük konsolidasyonu, çağrılan araç ve skorla birlikte günlük, ve eşiğin altındaki veya bilinmeyen her şeyi insana gönderen bir gate. Erişimleri, devreye alma belgesini ve aracın tek başına ne yaptığını ve ne yapmadığını yazılı listeyi teslim ediyoruz.

1E-mail, PDF sauwebhook2extragerea câmpurilor3amprentă SHA-2564scriere cu ONCONFLICT DO NOTHING5încadrare prin unadin șapte unelte, cuscorrândurile„necunoscut” către om
Traseul, în 6 pași

Veriler

Neye dokunuyoruz, nerede duruyorlar ve ne kadar kalıyorlar

Kurallar sektörden sektöre değişir. Bunlar finansal hizmetlerde uygulanan kurallardır.

Somut olarak ne tür verilere dokunur
Tarih, tutar, para birimi, açıklama ve karşı taraf ile birlikte para hareketleri. Karşı tarafların bir kısmı gerçek kişilerdir — bir maaş çalışan adını taşır — bu nedenle tablo, yalnızca ticari veriler değil, çalışanların kişisel verilerini de içerir. Bu, tabloyu kimin açabileceğini değiştirir.
Modele ne gider ve ne evde kalır
Modele, işlem açıklaması metni ve tutar ulaşır. Hesap tanımlayıcıları, IBAN’lar ve diğer alanların, sınıflandırmanın çalışması için istekte yeri yoktur; bu yüzden bunlar dışında bırakılabilir. Genel olarak uyguladığımız kural şudur: ilgili adım için gerekli olmayan şey gönderilmez, çünkü gitmeyen şey kimse tarafından tutulamaz.
Çıkarılan veriler nerede durur
PostgreSQL, üzerinde benzersiz `external_id` ve onun üzerinde indeks. Veritabanı sizindir, sizin altyapınızda ya da bizim sizin için işlettiğimiz bir altyapıda kalır. Müşteriler arasında ortak bir depo yoktur, çünkü bunun var olması için teknik bir neden yoktur.
Otomatik kararın izi
Her satırda hangi aracın çağrıldığı, hangi skorla ve gerektiğinde „bilinmiyor” nedeni saklanır. Altı ay sonra birinin „bu işlem neden işletme giderlerine alındı” sorusuna cevap verebilmesi için gereken en az şey budur — omuz silkerek değil, bir yanıtla.
Burada tek başınıza seçmediğiniz saklama süresi
Finansal belgelerin saklama süreleri, bizim ya da sizin tercihinize göre değil, muhasebe ve vergi mevzuatı tarafından belirlenir. Bir finans projesinde süre bu kurallardan alınır, işleme kayıt defterine yazılır ve ancak ondan sonra silme uygulanır. Ters sıra — önce uygulanır, sonra kontrol edilir — saklanması gerekeni silen sistemler üretir.

Bir vaka

Korkmadan yeniden başlatılabilen bir ingest hattı

Durum

Banka bildirimleri ve aylık ekstreler bir posta kutusuna geliyordu ve bir insan tarafından okunup kategorilere ayrılıyordu. İlk açık seçenek — kutuyu okuyup veritabanına yazan bir betik — ancak üçüncü haftada görülen bir soruna sahiptir: her yeniden başlatmada ya da yeniden okumada aynı işlemler tekrar girer.

Ne kurduk

Beş modül, 1.526 satır Python yazdık: IMAP üzerinden iki bildirim ayrıştırıcısı, bir PDF ekstre çıkarıcısı, araçlar üzerinden sınıflandırıcı ve PostgreSQL’e yazma. Merkezî kural dış tanımlayıcıdır — işlem alanları üzerinde bir SHA-256 parmak izinden alınmış 16 karakterlik bir önek — tabloda benzersiz sütun ve `ON CONFLICT DO NOTHING` ekleme ile. Sınıflandırma metin döndürmez: model, zorunlu güven skoruyla yedi araçtan birini çağırır ve „bilinmiyor” için neden gerekir.

Ne çıktı

Posta kutusu herhangi bir zamanda yeniden okunabilir ve daha önce işlenmiş satırlar atlanır, günlükte yinelenen olarak işaretlenir. Modelin sınıflandıramadığı işlemler, her birinin yanında nedeniyle birlikte bir çalışma listesi olarak görünür; her şey yolunda gitmiş gibi görünmesi için bir kategoriye itilmez.

Vakanın söylemedikleri

Bu, bir finans müşterisine teslim edilmiş bir sistem değil, dahili bir işlem hattıdır: Git altında değil, test dizinleri boş ve adların yaklaşık eşleştirilmesi, kodun açıkça geçici olarak işaretlediği bir n-gram sezgisel yöntemi kullanır. Bunu burada bir ürün olduğu için değil, yöntemi gösterdiği için anlattım.

Sorular

Finansal hizmetlerdeki biri ne sorar

Ajan ödemeleri veya kredileri onaylıyor mu?

Hayır ve bu, bir sonraki sürümde aşacağımız teknik bir sınırlama değil. Onay, hukuki sonuçları olan bir karardır ve kurumdaki yetkili bir kişiye aittir. Ajan hazırlar: sınıflandırır, tamamlar, uymayanı işaretler. Kendi kendine onay veren bir sistemin bir denetçiye karşı cevap verebilmesi gerekir ve bir güven skoru cevap değildir.

Doğru sınıflandırdığını nasıl anlarım?

Güven skorundan değil — o, modelin kendisi hakkındaki değerlendirmesidir, bir ölçüm değil. Bugün işi yapan insanın kararlarıyla, gerçek işlemlerden oluşan bir küme üzerinde, otomatik moda geçmeden önce yapılan karşılaştırmadan anlaşılır. O karşılaştırmanın sonucu, teslim ettiğimiz bir tablodur; içinde ajanın hata yaptığı satırlar da vardır.

Güvenli olmadığında ne olur?

Bilinmeyen aracını çağırın ve nedeni yazın. Satır, sistemin çalışmış gibi görünmesi için rastgele seçilmiş bir kategoriye değil, insanın çalışma listesine gider. Çıkışı olmayan bir sınıflandırıcı, hatanın maliyetli olduğu yerde tam da orada yanılır: olağandışı işlemlerde.

Aynı bildirimi iki kez okursak tutar ikiye katlanır mı?

Hayır. Her işlemin, alanları üzerinden parmak izi gibi hesaplanan bir dış kimliği vardır, sütun tektir ve ekleme `ON CONFLICT (external_id) DO NOTHING` kullanır. Atlanan satır günlüğe yinelenen olarak not edilir, yani yeniden okunduğu görülür.

Verilerimiz bir model sağlayıcısına gidiyor mu?

Sınıflandırma adımı için evet: işlem açıklaması ve tutar, seçilen modele bizim ağ geçidimiz üzerinden, proje anahtarı, model beyaz listesi ve bütçe ile gider. Diğer adımlar — okuma, çıkarma, deduplikasyon, ad eşleştirme — sıradan koddur ve hiçbir yere çıkmaz. Nelerin gitmesine izin verildiği önceden yazılı olarak belirlenir, günlüklerden sonra keşfedilmez.

PDF ekstrelerini, yalnızca e-posta bildirimlerini değil, okuyabilir misiniz?

Evet, bu hattın modüllerinden biridir. Bilinmesi gereken şey, bir PDF ekstresinin kırılgan bir format olduğudur: ilgili bankanın ürettiği yapıya göre okunur ve banka şablonu değiştirdiğinde modülün uyarlanması gerekir. Bu nedenle, tahmin eden değil, gürültülü biçimde başarısız olan kontrollerle yazılır.

Bu sayfada neden “ofertă” yazıyor da “livrat” yazmıyor?

Çünkü kuralımız “livrat” yazmak için en az iki kendi uygulamamızı gerektirir ve burada anlatılan hat kendi verilerimiz üzerinde, finans sektöründeki bir müşteride üretimde çalışmıyor. Adını koyduğumuz eksikleri de var: git altında değil, testleri yok ve ad eşleştirme kodda geçici olarak işaretlenmiş bir sezgisel yöntem kullanıyor. Müşterilerde iki uygulamayı alıntılayabildiğimizde kelimeyi değiştiririz.

İşin başlaması için bizden ne gerekiyor?

Üç şey: kategorileri kapalı liste halinde, hangi kategorilere sınıflandırabileceğine dair izin; bugünkü işi yapan insanın verdiği doğru yanıtlarla gerçek işlemlerden bir set; ve ağınızdan hangi alanların çıkabileceğine dair yazılı karar. Üçüncü madde olmadan başlamayız, çünkü sonradan düzeltilemeyen tek şey odur.

Neyin daha iyi çalışmasını isterdiniz?

Bize sürecinizi anlatın. Neyin kurulmaya değer olduğuna, neyi bağlayabileceğimize ve sonucu nasıl doğrulayacağımıza birlikte karar verelim.

Hadi konuşalım