Yeni Bir Dönem Giriyoruz, Otomatize Edilmesi Olası Botlar Oluşturmak İçin İnsan Bazlı Botlar Kullanma Dönemi

E Ticaret Sitelerinin bir tanesinin laptop sayfalrında gezerken, aniden sağ altta artık klasikleşmiş hale gelen destek chat paneli ile karşılaştım. Orada Canlı olarak isteklerinize göre yanıt veren bir marka uzmanı bulunmakta idi. Ona istediğim özellikle ve kullanım alanlarını söylüyordum o da yanıtlar veriyordu. Hatta oldukça robotik ve yeterli veri toplandığında otomatize edilebilir gibi görünüyordu. Konuşurken acaba bir conversational botla mı konuşuyorum diye de düşündüm.

E Ticaret siteleri eğer 6 ay insan çalıştırma maaliyetine katlanır ve yeterli veriyi toplayabilirler ise gerçekten her konuda ellerinde yüzlerce satış danışması olacak. Burada E-Ticaret özelinde conversational olarak müşterisinde en kaliteli ve fazla veri çeken E-Ticaret öne geçecek gibi gözükmektedir.

Kısacası Bilgisayarlar ile olan iletişimimiz GUI devriminden sonra bir daha değişmekte ve daha insancıl hale bürünmeye başlayacka. Bu duruma en hızlı adapte olan şirketler de rekabet avantajına sahip olacaklar. Bakalım. Toplayabildiğiniz kadar gerçek iletişim verisi toplayın ve kullanıcılarınızı bu konuda teşvik edin, benim önerim budur.

OpenAI Dil Modelinin Yapabildikleri ve Yapamadıkları

Evet ChatGPT ile birlikte hemen hemen herkesin hayatına giren inanılmaz güçlü ve neredeyse her konuda yanıt verebilen modeller gerçekten iş hayatımıza yeni bir boyut kattı. Bakalım biz Chat-GPT ile neler yapabiliriz ve neler yapamayız?

Öncelikle Cron gibi Expression gibi mümkün olduğunca dili basit ve doğal dilde söylemesi zorlaşabilecek bir yapıyı kurmayı denedim.

const response = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: "Write Cron Expression:  every 30 minute",
  max_tokens: 10,
  temperature: 0.2,
});

şeklinde işlem yaptığımızda karşımıza beklediğimiz:

text: ‘\n\n0 0/30 * * * *’ doğru sonuç ile karşılaşmaktayız.

Peki evet doğru gözüküyor ancak daha önce Cron kullanmamış biri bunu nasıl doğrulayabilir. Şöyle yani üretilen metnin doğruluğunu nasıl test edebiliriz. Bu doğrulama Generated Textlerin hepsinde olacak ve önemli gözükmektedir.

Bunun için Dotnet ortamında Brady Holdt tarafında yazılmış CronDescriptor Librarysini kullanabiliriz. Örnek olarak:

var optionForCronText = new Options();
optionForCronText.Locale = "en";

var description = CronExpressionDescriptor.ExpressionDescriptor.GetDescription("0 0/30 * * * *",optionForCronText);
Console.WriteLine($"{description}"); //Every 30 minutes

Evet Deneysel olarak tek tek test ederek sonuca ulaşabiliriz. Yalnız şunu da söylemek lazım, klasik normal caseleri test et, edge caseleri test, bir kaç random test et yapısı burada çalışmayacaktır .Üretilen her Cron Expression:’ı ayrı ayrı doğrulamak gereklidir. Şöyleki 100 tane doğru Doğal dilden Cron’a çevirme yapsada 101.’yi doğru yapacağını asla garanti edemeyiz. Üstelik Api’den değil Chat Gpt’den üretir isek içindeki Randomness’ı da kontrol edemediğimiz için çeşitli yanlışlıklara yol açabilir.

Evet 10 tane daha Expression ürettikten sonra bayağı iyi çalışıyor diyebiliyorum.

Peki daha zor, İçinde Geometri olan bir problem olan Point in Polygon problemi ve bu problemi Dünya haritası üzerinde yapmasını istiyorum. Şöyleki dünya üzerinde noktalar vereceğim ve bana nasıl sonuçlar vereceğine bakacağım.

async function useAsHardMapTask(latitude,longtitude){
  const response1 = await openai.createCompletion({
    model: "text-davinci-003",
    prompt: latitude+","+longtitude+" latitude, Longtitude in Which city.",
    max_tokens: 20,
    temperature: 0.2,
  });
  return response1;
  }

İlk Olarak Isparta’dan bir nokta veriyorum: 38.07982787709612, 31.371001078866897

Yanıt maalesef hayal kırıklığı: Noktanın İzmir’de olduğunu söylüyor.:

‘\n\nThis location is in the city of Izmir, Turkey.’

Ardından Edirne Üzerinde bir nokta verdiğmizde:

41.67440351039774, 26.547041433535238

‘\n\nThis location is in the city of Alexandroupoli, Greece.’,

yanıtı ile karşılaşmaktayız.

Sonuç olarak GPT-3 gerçekten inanılmaz bir dil modeli ancak halen daha bir dil modeli. Sınırları bilmek ve iş yaşamında kullanırken mkutlaka doğrulayarak kullanmak gereklidir. Hatta şöyle söyleyeyim direkt son kullanıcya input verecek bir sistemde bile bu modeli kontrol etmeden kullanmayı tercih etmem.

Ve evet insan gibi düşünmüyor. Halen daha elindeki text’e yanıt üreten bir dil modeli. Yaptığı şey hala bir anlama ve dolayısı ile anlamlandırma işlevi değil. Halen dah bir şey anladığı yok, sadece cevap veriyor ve artık o kadar iyi cevap veriyor ki işimizde yarıyor 🙂

Son olarak Dil modelinden üretilen yapıyı işinide kullanmak istiyorsanız mutlaka ama MUTLAKA doğrulayarak kullanmalsınız 🙂

Elektrik Araba Şarjları Hakkında Birkaç Bilgi

2 tip şarj yöntemi bulunmaktadır: AC ve DC. Elektrikli araçlardaki bataryalar DC olduğu için DC enerjiyi herhangi bir çeviriciye ihtiyaç duymadan doğrudan depolayabilirler. AC şarjları için ise araba üzerindeki bir dönüştürücüye ihtiyaç duyulmaktadır.

Örneğin, 22 kW/saat ile AC dolum yapabilirken DC ile 150 kW/saat gibi daha yüksek hızlı şarjlar da mümkündür. Özellikle maliyet odaklı modellerde DC’de oldukça yüksek dolum değerleri ile karşılaşırken, AC’de 7.4 kW/saat hatta eski modellerde 3.7 kW/saat’a kadar düşmektedir.

Yüksek hızlı DC tip şarjlarının kurulum maliyetleri yüksek olduğundan, evlerimize kurulması zor gözükmektedir. Ancak tek faz çalışan 7.4 kW’lık modeller ve orta ve büyük ölçekli apartman ve şirketler için 11 ve 22 kW’lık 3 fazlı şarj istasyonları kurulumları mantıklı gözükmektedir.

Toplu hallerde yaşadığımız şehirleşmiş ülkemizde, bireysel şarj cihazları kullanımı oldukça zor gözükmektedir. Bir şekilde ortak kullanılabilen düşük maliyetli ve mümkünse önceden rezerve edilebilen şarj aletleri öne çıkacaktır. Burada da karşımıza OCPP protokolü çıkmaktadır. OCPP protokolü ile birlikte dünyadaki neredeyse bütün lisanslı şarj aletlerini uzaktan yönetim imkanına sahip olmaktayız. OCPP ile şarj aletlerinin hem uzaktan kontrolünü yapabilir hem de takip edebilirsiniz.

Ülkemizde Zorlu Energy, E-Şarj, Q-Charge vb. birçok firma bu alana girmiştir. Rekabet kızışmakta ve elektrikli araçlarımızı bekler hale gelmiş durumdayız. TOGG ve yeni giren Çinliler ile birlikte Megane E-Tech’te beklediğim gibi gelirse, çok daha fazla şarj aletine ihtiyacımız olacak gibi görünmektedir :).

Vue-Query ile Api Callermızda Fault-Tolerancy’yi ve Kontrol Edileblirliği Arttırmak

Marina Mosti’nin şu yazısını okurken:

https://www.vuemastery.com/blog/advanced-data-fetching-in-vue-w-tanstack-query

benim de böyle sorunlar ile karşılaştığımı ve değişik çözümler ürettiğimi anladım.

Kütüphane ile Vue.js Appimizin başarısız olması karşısında yeniden denemesi, veri eskidiğinde yenilenmesi gibi işlemleri çok kolaybir şekilde yapabilir hale geliyoruz.

Örnek olarak klasik Todo Örnepini kullanacak olursak:

import { useQuery } from "vue-query";
import axios from "axios";



export default () => {
  return useQuery({
    queryKey: ["todoID"],
    cacheTime:1000*6,
    queryFn: () =>{ 
      const random=Math.random()*10
      return axios.get("https://jsonplaceholder.typicode.com/todos/"+parseInt(random))
      }
    ,
    select: (response) => response.data // extract data from axios response
  });
};

Yukarıdaki gibi bir query oluşturabiliriz. Cache Time’ı istediğimiz gibi belirleyebildiğimiz için kullanması da oldukça kolay olmakta. Aynı şekilde retry miktarını ve retry delayini de istedğimiz gibi değiştirebilmekteyiz. Çok önemli ve mutlaka çalışması gereken querylerde retry miktarını 10,15’e kadar çıkararak belki de müşterinin bir çalışmıyor demesini bertaraf bile edebiliriz.

Şurada da default valueler güzel bir şekilde tanımlanmış:

https://vue-query.vercel.app/#/guides/important-defaults

Vue Componentimizde kullanmak için ise:

<template>
  <div class="main" v-if="!isLoading"> 
      <h1>{{data}}</h1>
  </div>
  <div v-else class="loading">
      <div>Yükleniyor... </div>
       </div>  
</template>
<script setup>
import faketodosComposable from "../composables/faketodosComposable";
const { isLoading, isError, data, error }=faketodosComposable()
</script>

Composition Api ile birlikte çalışmakta ve gerçekten iyi sonuç vermektedir. Pinia Storeunda vb kullanmak istediğimde sadece Setup’ta kullanılır diye bir hata aldım. Belirtilen şekli ile kullanmak ise gerçekten başarılı ve bir çok işi bir anda yapması ile gönlümüzü kazanıyor.