Firmalar için Web Servis Entegrasyonu

Neden Firmalar CEYD-A’yı Tercih Etmeli?

CEYD-A’nın katmanlı geliştirme ortamı sayesinde şirket içindeki farklı görev grupları, hem sesli algılayan hem de konuşabilen yapay zeka sistemini şekillendirebilir ve ihtiyaçlarına göre şirkete özel bir sistem oluşturabilirler.

Sistemin alternatif yapılara göre avantajları şunlardır:

  1. Sesi algılayıp konuşabilen firmaya özel bir sistem oluşturulabilir.
    CEYD-A alt yapısı Android işletim sistemi üzerine kurulu olduğu için ses sistemi Android sisteminin olanaklarını kullanır.
  2. Sistemin kendi yorumlayıcı motoru vardır ve bu motor, üzerinde çalıştığı mobil cihaz üzerindedir. Söylenilenler cihaz üzerinde yorumlanıp çalıştırılır.
    1. Programlanabilir:
      Veri güvenliğini sağlamak için kişisel veriler cihaz üzerindeki yorumlayıcı üzerinde çalıştırılır. CEYD-A[1], CEYD [2]dili Asistanıdır. Kendine has yorumlayıcısı olan bir dile sahiptir. Dil geniş bir çerçeveye destek vermektedir. Sistem komutlarından veri işleme komutlarına kadar bilinen diğer programlama dillerinde olmaz ise olmaz yapıları desteklemektedir.
    2. Blok Tasarımla [3]Kurgulanabilir:
      Sürükle, bırak, yap, boz, birleştir mantığıyla blokları kod yazmadan düzenleyebilir ve CEYD-A’nın istenen soru türüne belirtilen cümle yapısı ile nasıl algılayacağını, hangi eylemleri gerçekleştireceğini ve ne cevap vereceğini kolayca kurgulayabilirsiniz.
  3. Şirket ağı içinde çalıştırılabilir ve veri akışı sadece cihaz ile şirket sunucuları arasında olacak şekilde kurgulanabilir.
    Ses algılaması, cihaz üzerinden Google sunucularına bağlantı sağlanarak gerçekleştirilmektedir. Bunun dışında, çalışabilmesi için dış dünyaya ihtiyaç yoktur.
  4. Linux sisteminde çalışabilen özel bir sürümü de bulunmaktadır.

Bu özel sürüm Android üzerinde çalışan sürüm ile uyumludur. Sadece ses algılama ve konuşma desteği bulunmamaktadır. Web sunucuları üzerine kurulabilir ve Web API desteği [4]sayesinde ses sistemi destekli istemcilerin ilettiği cümleler üzerinde Doğal Dil İşleme[5] (NLP) gerçekleştirerek istenilen eylemleri yapabilir ve sonuç olarak cevap metinleri gönderebilir.

Firma Web Hizmet Yapısı ile Entegrasyon

Aşağıda kurgusu bulunan web hizmet yapısının hali hazırda olduğunu farzedelim. İsteklerimizi REST mimarisi kullanarak POST yöntemi ile işlenmemiş (raw) olarak json formatında gövde (body) üzerinden göndereceğiz.

İki metod örneği bulunmakta: CreateTokenAsync ve CustomerLoginAsync. Bu metodlar ASP.NET Web Api destekli sunucu üzerinde çeşitli istemcilere hizmet vermek için bulunmaktalar. CEYD-A’yı istemci olarak düşünüp sunucu üzerindeki bu web hizmeti metodlarına ulaşacağız.
Oluşturulacak yapıda tüm kullanıcı ismi ve şifreler, token oluşturma bilgileri gibi hassas ve güvenliği ilgilendiren veriler sadece cihaz üzerindeki CEYD-A ve sunucu arasında paylaşılacak şekilde olacaktır. Üçüncü bir cihaz ile bu verilerin iletişimi olmamalıdır.
CEYD-A’yı rakiplerinden farklı kılan cihaz ile firma sunucusu arasında birebir bağlantı kurabilme imkanıdır.

CreateTokenAsync metodu ile sabit kullanıcı ismi ve şifre ile cihaza özel token numarası istiyoruz. Sunucu tarafından oluşturulup sağlanan bu token numarası cihaz üzerinde tutuluyor ve sonrasında diğer metod çağrılarında bu token ile sunucudan istekde bulunabiliyoruz. Bu token bilgisini yeni metod çağrısı ile alan sunucu, istemcinin kimliğini doğruluyor ve çağrı sonucunu istemciye dönüyor.

Hazırlık Aşaması

Postman uygulaması ile CreateTokenAsync metodunun hangi parametreleri gönderdiği ve hangi sonucu döndüğünü gözlemleyebiliriz. Bir sonraki aşamada cevap bölümünde görünen Token alanını CEYD-A’ya aktaracağız.

CreateTokenAsync metoduna gönderilen parametreler, CEYD-A üzerinde ön tanımlı olmalıdır. Bu nedenle mobil cihazın dış dizinine (external directory) içeriğinde json formatında istek metni olan bir dosya atıyoruz.

Geliştiriciler için Komut Kodlama[6]

CEYD-A Kullanıcı İsmi olarak yapıyı kurgulayacağımız kullanıcının hesabı olarak atamamız gerekiyor. Bu şekilde bu kullanıcı hesabının tüm kurguları bu kullanıcı girişini yapan tüm şirket cihazlarına otomatik olarak inecektir. Kurgular başka cihazlara yayılmayacak örnek görseli varsayarsak sadece firmaismi hesabı ile giriş ayarı yapan CEYD-A’lar da bu kurgular çalışacaktır. Kullanıcı ismi ile Sahip İsmi farklıdır. Sahibin ismi cihaza özeldir. CEYD-A ile konuşan kişinin ismidir. Kullanıcı ismi ise geliştirici hesabının ismidir ve birçok cihazda ortak kullanılabilir.

CEYD-A Komut girişi ekranından aşağıdaki komutu tanımlıyoruz. Burada CEYD komutu olan cmdloadfile komutu tokenrequest.txt dosyasının içeriğini okumaktadır. cmdloadurlpost ise json formatında belirttiğimiz web hizmeti yoluna bu içeriği göndermektedir. Alınan sonuç json isimli değişkenine atanmakta ve cmdgetjsonvalues komutuyla json formatındaki cevap, values isimli CEYD listesine şablondaki alan isimleri korunarak aktarılmaktadır. Son olarak token değişkenine listedeki Token alanı atanmaktadır. Artık bu değişkendeki token bilgisini diğer komutlarımızda da kullanabilir durumdayız.

CEYD-A üzerinde tutulan değişkenler, cihaz üzerindeki veritabanı üzerinde tutulduğu için uygulamadan çıkılıp yeniden giriş yapılsa bile son değerler değişkenler üzerinde tutulurlar. Bu özellik sayesinde token değişkenini diğer metodlar içinde kullanabiliyoruz.

İkinci web hizmeti metodumuz olan Customerloginasync için de CEYD-A yapısı için aşağıdaki gibi bir komut oluşturalım. Burada createtoken komutunu tekrar çalıştırıyoruz. Eğer token bilgisinin süre kısıtı yok ise tekrar çalıştırmaya gerek yoktur. cmdloadurlpost komutu ile bu sefer cihazdaki dosyanın içeriğini değil, dinamik kullanıcı verisini gönderiyoruz. myemailaddress, mypassword değişkenleri daha önceden CEYD-A ile sesli veya klavyeden kullanıcı tarafından girilmiştir.

Yazılan Komutların Denenmesi

Firmaismi kullanıcısı ile oluşturduğumuz komutlar ilgili cihazlardaki CEYD-A’lar açıldığında devreye girecektir. Komutları denediğimizde aşağıdaki gibi sonuçlar alacağız.

Web hizmetlerini çağıran CEYD-A komutlarını yazılım geliştiricileri hazırlarken, daha üst seviyedeki kurguları sistem analistleri gibi kod geliştirme bilgi gereksinimi olmayan çalışanlar hazırlayabilirler. Bu aşamada CEYD-A’nın katmanlı yapısı yardıma koşacaktır.

Komut Kodlarının Ayıklanabilmesi

İşin içine kod geliştirme girince kod ayıklama (debug) ihtiyacı kaçınılmaz olur. Oluşturulan kurgu veya komut kodlarının denenmesi şu şekilde yapılabilir.

CEYD-A Geliştirici Bilgileri ayarlarında Komut Kodları seçildiğinde yaptığınız denemelerin tüm yorumlayıcı aşamaları ekrana gelir. Bir problem olduğunda bu bölümden sorunu çözmeye yönelik her türlü bilgi edinmemiz mümkündür.

Sistem Analistleri için Blok Geliştirme

Yazılım geliştiricilerinin hazırladığı createtoken ve customerloginasync komutlarını daha üst seviyedeki çalışanlar, aşağıdaki gibi blok tasarımıyla kendi kurgularında kullanabilirler. Üst seviyedeki çalışanlar aynı kullanıcı ismi ile CEYD-A geliştirme ortamına giriş yapıp yukarıdaki blok grubunu sürükle bırak yap boz düzenle yöntemleriyle kod bilgisi gerektirmeden kurgulayabilir.

Kurgu kaydedildikten sonra firmaismi hesabına bağlı herhangi bir CEYD-A açıldığında kurgumuzu deneyebiliriz.

 

Komut Kurguları ve Veriler

Görüldüğü gibi komut kodları içinde gizli veya güvenli veri kullanılmamaktadır. Veriler kullanıcı tarafından CEYD-A içinde tanımlanmaktadır.

CEYD-A’nın çalışma yapısı güvenlik ve gizlilik adına bilinen uygulamalardan biraz daha farklıdır. CEYD-A, cihazınız üzerine kurulan uygulama üzerinde komut kurgularını yorumlar ve çalıştırır. Uygulamanın kendi iç derleyicisi vardır. Benzer uygulamalar genelde verileri sunucuya aldıktan sonra tek bir yerden yorumlayıp çalıştırır. Bu da bilgilerinizin cihazınızın dışına, internet ortamına çıkması demektir. Bu tür uygulamalar verilerinizi kendi sunucuları üzerinde değerlendirip cihaza sonucu döndürürken, CEYD-A ise cihazınız üzerinde kurguyu çalıştırıp yorumlar. Çalışan komut kurguları içindeki sağlanan veriler veya cihazınızdaki veriler yine cihaz üzerinde kalır.

Komut Kurgusu ve Veri (başka deyişle değişken içindeki değer) iki farklı kavramdır. Komut kurgusu CEYD-A’ya verilecek kuralları belirleyen söz dizimidir. Veri ise komut içinde işlenecek olan bilgilerdir.

Kullanıcılar tarafından oluşturulan komutlar internet ortamındaki ortak bir havuzda toplanır. Kullanıcılar ortak havuzdaki kendisine ait olmayan onaysız komutlara erişemezler.

Veriler ise internet üzerine çıkmadan cihaz üzerindeki derleyici tarafından komut kurgusu içinde yine cihaz içinde derlenir.

 

  1. CEYD-A Nedir?
    https://medium.com/deep-learning-turkiye/ceyd-a-t%C3%BCrk%C3%A7e-mobil-asistan-b3f019b177fa
  2. CEYD Dili Nedir?
    https://medium.com/deep-learning-turkiye/ceyd-dili-nedir-299abc2b6c5c
  3. CEYD-A’yı Kod Yazmadan Geliştirelim.
    https://medium.com/deep-learning-turkiye/ceyd-ay%C4%B1-kod-yazmadan-geli%C5%9Ftirelim-efb99b50a019
  4. CEYD API
    https://ceyda.docs.apiary.io/
  5. CEYD-A ile Doğal Dil İşlemeye Giriş
    https://medium.com/deep-learning-turkiye/ceyd-ile-do%C4%9Fal-dil-i%CC%87%C5%9Flemeye-giri%C5%9F-f6b2583748e0
  6. Komut Ekleme Nasıl Yapılır?
    https://web.ceyd-a.com/2018/09/komut-ekleme-nasil-yapilir/