Blog yazı serimize Prompt Engineering yani İstem Mühendisliğinin ne olduğunu, neden önemli olduğunu tanımlamalı ve yapay zekâ alanında bu noktaya nasıl geldiğimizden bahsetmeliyiz.
Daha önce çevrimiçi bir sohbet robotu veya sanal asistan kullandıysanız, muhtemelen deneyim hakkında karışık hislere sahipsiniz. Genellikle de sinir bozucu anılara sahibizdir. Çünkü çoğu sohbet robotu, bilinen bir dizi sorguya programlı olarak yanıt vermek üzere tasarlanmıştır. Hep aynı soruların ve aynı yönlendirmelerin etrafında döner. Bu noktada yapay zekâ bize mesajlarımızı farklı şekilde ifade edebilmemiz için yeterli esnekliği verebilir, ancak aslında onlara sorularımıza yanıt olarak ne söylemeleri gerektiği söylenmektedir. İşte tüm çağrı merkezi kullanan firmaların ihtiyacı
Yapay Zeka
Bu ihtiyaçtan dolayı, OpenAI ChatGPT, Google Bard, watsonx ve benzeri yapay zekâ sohbet robotları kullanıma sunulduğunda dünyanın bunu ciddiye alması şaşırtıcı değil. Örneğin ChatGPT, Kasım 2022’deki lansmanından sonraki beş gün içinde bir milyon kullanıcı elde etti. Bugün hala çok fazla kullanılmaktadır. Karşılaştırma yapmak gerekirse, dünyanın en hızlı büyüyen uygulamalarının bu kadar çok kullanıcıyı çekmesi birkaç hafta sürdü.
Bu uygulamalarını kullanarak firmaların ürettiği konuşmaya dayalı üretken yapay zekâ sohbet robotları bizi gerçekten şaşırttı. Çünkü gerçekleşen konuşmalar doğaldı cevaplar eski daha gerçek ve tatmin ediciydi.
Bu uygulamaların perde arkasında, konuşmaya dayalı yapay zekayı mümkün kılan LLM’yi (Büyük Dil Modelleri) eğitmek için çok sayıda karmaşık matematik ve muazzam miktarda veri kullanılıyor. Neyse ki sunduklarından tam anlamıyla yararlanmak için karmaşık uygulama ayrıntılarıyla ilgilenmenize gerek yok. Nihayetinde biz sadece kullanıcıyız şimdilik
Bu deneyim, terabaytlarca veriye varan engin bilgiye sahip parlak bir bireyle etkileşime geçmeye oldukça benzer. Dinle dinle bitmez
İnsanlar bu tür sohbet robotlarını daha üretken olmak, kendilerini daha net ifade etmek, büyük miktarda veriyi hızlı bir şekilde özetlemek, karar vermeye yardımcı olmak ve kabul edelim sınavlarda kopya çekmek için kullanmaya başladı. Hayatımızın vazgeçilmezi oluverdi.
LLM’ler birçok sektörü ve genel olarak dünyayı değiştirebilecek güçlü şeylerdir.
Bu harika araca sahibiz. Bundan en iyi şekilde nasıl yararlanırız?
Her şey kullanıcı girişi ile başlar. Yazdığımız istem yani prompt her şeyi başlatır. Bu güçlü enstrümanı kontrol etmek için sahip olduğumuz tek şey, içine metin girdiğimiz bir metin kutusudur. Bu nedenle, istemimiz çıktı kalitesini büyük ölçüde etkileyecektir. Yani içeri ne ne girerse o çıkar. Uygulamaya zayıf bir istem sağlarsak, yapay zekanın tüm özelliklerinden ve bize yardımcı olmak için sunduğu her şeyden yararlanamayız.
Prompt Engineering Nedir?
Yukarıda bahsedilen LLM tabanlı yapay zekalardan birine “Prompt Mühendisliği? diye sorduğumuzda bize verilen cevap aşağıdaki gibidir.
Bu da elde ettiğim sonuç:
Cevap fena değil, değil mi? Bu yüzden yapay zekâ olayı oldukça değerli olabilir. Temel düzeyde de olsa en kısa sürede bilgiyi erişilebilir kılar. Bu yazı serisinde, hangi LLM’yi kullanmaya karar verirseniz verin, bu tür konuşmaya dayalı yapay zekadan alacağınız sonuçları optimize etmek için bilmeniz gerekenleri öğrenececeğiz.
Zero-Shot, One-Shot ve Few-Shot Prompting
GPT-3.5 gibi Büyük Dil Modelleri (LLM’ler) alanında karşılaşabileceğiniz birkaç terim bulunuyor. “sıfır atış”, “tek atış” ve “birkaç atış” gibi bu terminolojiler, modellere talimat verilme veya yönlendirilme şeklini ifade eder.
“Sıfır atış” senaryosunda, modele önceden örnekleri olmayan bir görev verilir; istemden ve mevcut eğitiminden ne yapacağını çıkarması gerekir. Yani az önce yaptığım gibi açık uçlu soru sorulur. Bu daha önce LLM tabanlı yapay zekayı kullanmamış birinin kullanacağı istemdir. Model için herhangi bir örnek vermeden sorularını sorarlardı. Prompt Engineering Nedir?” diye sorduğumuzda bizim istemimiz sıfır atışlı bir istemdi.
Bu ifade, yapay zekâ modelleriyle etkileşimde bulunurken kullanılan bazı yöntemler hakkında bilgi veriyor. “Öte yandan, ‘tek atışlık’ (one-shot) yöntem modelin önüne tek bir örnek koyarken, ‘birkaç atışlık’ (few-shot) yöntem birden fazla örnek sunarak modelin çıktısını yönlendirmeye yardımcı olur. Bu yöntemler, modelin açıkça eğitilmediği yani bilemeyeceği bir durumu yönlendirmeye çalıştığınızda çok işe yarar. Promptu yazan kişiler yapay zekaya belirli örnekler sunarak, kullanıcılar modelin düşünce yapısını belirli bir istenen çıktıya veya formata uygun hale getirebilir.
Düşünce Zinciri (Chain of Thought – CoT) bu iki prompt tekniği de kullanır. Yapay zekâ ile etkileşim kurarken kullanılan farklı yöntemler ve bu yöntemlerin nasıl kullanıldığını anlamaya yönelik bir giriştir.
“Tek atışlık” yaklaşım, modele bir problemi nasıl çözeceğine dair tek bir örnek sunar. Bu, modelin belirli bir türdeki görevleri nasıl ele alacağını anlamasına yardımcı olur.
“Birkaç atışlık” yaklaşım ise modele problemi çözme konusunda daha fazla bağlam ve örnek sunarak, modelin daha karmaşık ya da daha özel görevler üzerinde nasıl çalışacağı konusunda daha iyi bir fikir edinmesine olanak tanır.
Düşünce Zinciri (CoT) ise, modele bir problemi çözerken adım adım nasıl düşünmesi gerektiğini gösteren örnekler sunarak, modelin daha karmaşık problemleri çözmesine yardımcı olan daha ileri düzey bir tekniktir. Bu yaklaşımlar, modelin daha doğru ve etkili çıktılar üretmesine olanak tanır.
İngilizce Yeni Bir Programlama Dili
Son on yılda Python’un popüler bir programlama dili olmasıyla birlikte kodlamayı öğrenmek çok moda oldu. Programcı değilseniz, neden sadece İngilizce ya da herhangi farklı bir dil yerine bu tür programlama dillerini kullanmak zorunda olduğumuzu merak edebilirsiniz. Çünkü biz insanlar çok belirsiz konuşuyoruz. Hele Türkiye’de yaşayan insanlar daha az kelime ile daha çok şey anlatmak istiyor. Siz bizim çekoslavakyalılaştırdıklarımızdan mısınız yoksa çekoşlavakyalılaştıramadıklarımızdan mısınız ifadesini bir LLM’in 7 kelimede çözebileceğini düşünmüyorum.
Konumuza dönecek olursak konuşulan dillerdeki asıl sorun belirsizliklerdir. Uluslararası bir dil olan İngilizce için konuşmak gerekirse, bilgisayara tam olarak ne yapması gerektiğini söylemenizi sağlayan programlama dilleriyle karşılaştırıldığında biraz belirsiz kalıyor.
Örneğin, bir insandan bir kâğıda daire çizmesini istesek, bunu yaparken hiçbir sorun yaşamazlar. Burada önemli olan dairenin nasıl göründüğü veya nasıl olduğu değildir. Konu daire çizmek olduğundan çoğu kişi genellikle daha fazla soru sormadan veya tereddüt etmeden düz bir şekilde daireyi çizecektir. Çizimi yapan kişi, daire kâğıdın neresine yerleştirilmelidir? Sol üst? Merkez mi? Sağ alt? Çevre ne kadar büyük olmalı? Çizgiler ne kadar kalın olmalı? Zigzaglı mı olmalı?
İnsan, insan zekasıyla varsayımlarda bulunabilecek ve sadece daireyi çizebilecektir. Geleneksel olarak bilgisayar böyle bir varsayımda bulunamaz, dolayısıyla ne yapması gerektiği konusunda çok özel olarak bilgilendirilmesi gerekir. Çok fazla insan bunu denediğinden dolayı öğrenmiş ne beklediğimizi öğrenmiş olabileceğini düşündüğüm için şu an deneyeceğinizde standart bir daire çizme olasılığı daha yüksek olsa da onlar algoritma sistemi ile ilerler. Bilgisayara hangi grafik kitaplığının kullanılacağını, piksel cinsinden yarıçapı, çizgi kalınlığını, dairenin doldurulmasını isteyip istemediğimizi, kenarının ya da içinin hangi renkle doldurulmasını istediğimizi vb. söylememiz gerektiğini hesaba katmanız gerekir.
Kısaca şu an klasik daire dışında bir daire çizmek istiyorsan prompt’ta bunu ayrıca belirtmen gerekir. Bu noktada yapay zeka uygulamaları sayesinde ilk defa, bilgisayara talimat vermek için konuşma dilini kullanabiliyoruz. Kendi yapabildiğimizin çok daha fazlasını kısa sürede LLM uygulamaları ile yapabiliriz. Burada işin püf noktası doğru proptu girmeyi öğrenmektir. Türkçe’nin normal dillere göre daha zor olduğunu bildiğimizden İngilizcenin de evrensel olduğunu düşünürsek yazılan promptlar ingilizce olursa başarı oranı çok daha büyük olacaktır.
Limitler
LLM’ler görünüşte zekidir ancak henüz geniş anlamda zekalarını kullanabilme durumunda değiller. Bu onların bize yardımcı olmadıkları anlamına gelmez, ancak henüz bağımsız olarak öğrenmelerini, öz farkındalık sahibi olmalarını, çok karmaşık akıl yürütmeyi ele almalarını, eğittiğimiz modelin üzerinde eğitim aldığı çerçevenin dışında çalışmalarını bekleyemezsiniz.
Bazen cevabın doğruluğu yanlış olabilir çünkü yapay zekâ, insan tarafından üretilen büyük miktarda veri üzerinde eğitilmiştir. İnsanlar yanılabilir, veriler de öyle. Bu nedenle, ara sıra yanlış yanıtlarla veya önyargı gösterimiyle karşılaşacaksınız; bunları tanımlamanız ve manuel olarak ele almanız gerekir.
Ayrıca geleneksel programlama birçok görev için daha fazla hassasiyet ve kontrol sunar. Bu özellikle nüansların ve ayrıntıların önemli olduğu büyük, karmaşık sistemler için geçerlidir.