Yapay zeka (AI) uygulamalarından yüksek kaliteli sonuçlar elde etmek için, “sorgu mühendisliği” (prompt engineering) konusuna odaklanmak gerekiyor. Evet, doğal diş işleme konusunda çalışan yapay zekaları kullanmak için yeni bir mühendislik alanı peydah oldu. Peki sorgu mühendisliği tam olarak nedir?
Sorgu mühendisliği, AI’nin vereceği yanıtları geliştirmek amacıyla sorgularımızı bilinçli bir şekilde tasarlama sanatıdır diyebilirim. AI’nin bize sağladığı sonuçlar, ona ne tür bilgiler verdiğimiz ile doğrudan ilişkilidir. Bence bir yapay zekayı (LLM) kullanırken en önemli kısım burasıdır. Sorgumuzun bağlamını ne kadar detaylı ve belirgin hale getirirsek, AI’ın en doğru yanıtı üretmesi okadar muhtemel. Sorgularımızı ne kadar belirgin ve detaylı bir şekilde oluşturursak, AI neyi hedeflediğimizi o kadar iyi anlar ve muhtemel doğru cevabı üretebilir.
ChatGPT gibi sohbet uygulamalarında, sorgularımızı sürekli yeniden düzenlemek ve detaylandırmak iyi sonuçlar elde etmek için önemlidir.
Özetlemek gerekirse; AI’dan kaliteli sonuçlar elde etmenin anahtarı, girdinin kalitesine bağlıdır. Sorgularınızı hazırlarken, iyi bir bağlam sağlamayı, spesifik olmayı, problemi parçalara ayırmayı, sorularınızı açıkça formüle etmeyi, gerektiğinde yeniden formüle etmeyi (cevap tatmin edici değilse) ve düzeltmeyi ve en önemlisi AI’dan aldığınız bilgileri her zaman doğrulamayı unutmayın. Aşağıda sürekli olarak güncelleyeceğim ve sıklıkla kullandığım sorgu örneklerini ve taktiklerini bulacaksınız. İyi okumalar dilerim.
Tiyo 1: İngilizce “bazen” daha avantajlı olabilir.
Yapay zeka ingilizce kaynaklar ile daha çok beslendiği için ingilizce dilindeki prompt’lara bağlı olarak çıktıların daha başarılı olabileceği düşünülebilir. Aslında durum tam olarak öyle değildir. Bu konuyu açıklamadan önce GPT’nin iki ana özelliğini anlamak gerekiyor. İlki, dil öğrenme yeteneği ve diğeri bilgi tabanı. Chat GPT bu ikisini çok iyi şekilde birleştirerek kullanabilen bir LLM (Large Language Model) AI.
Chat GPT esasen dil (lisan) öğrenme alanında (LLM) özelleşmiş bir yapay zeka modelidir. LLM modelleri bir lisana (örn: Türkçe, Çince, Rusca vb) ait tüm incelikleri anlayabilir, kullanabilir ve lisanın kurallarına uygun yeni metinler üretebilir. Buraya kadar olan kısmını dili anlayabilen ve konuşabilen ancak bilgi dağarcığı olmayan bir yapay zeka olarak hayal edelim.
İkinci kısım ise bağlamı oluşturan bilgi kısmı. Bilindiği gibi dil modelleri birçok veri seti kullanılarak eğitilirler ve dolayısıyla birçok dili anlayabilen bir dil modeli için bilginin hangi lisanda sunulduğunun “fazla” önemi yoktur. LLM için önemli olan kelimelerin oluşturduğu cümlelerin sunduğu anlamlar ve yekünde de bağlamdır. Bir dil modeli bağlamları farklı lisanlarda olsalar bile kullanılabilir, birleştirilebilir ve yeni çıkarımlar yapmak için kullanabilir. Örneğin sadece belli bir dilin yazınlarında var olabilecek bir bilgiyi farklı bir lisanda sorabilirsiniz. Dil modeli sorunuzun bağlamını oluşturur, anlar (GPT 4.0’ın 3.5’a göre bir tık iyi olduğu noktadır) ve bu bağlamı lisandan bağımsız olarak bağlamlar bilgi tabanı içinde araştırarak cevabı üretir. Lisanı farklı kaynak ve hedef bağlamlar arasında başarılı tercümeler yapabilir. Görünüşe göre bilgi tabanının ve prompt bağlamının hangi lisanda olduğunun “fazla” bir önemi yok gibi..
Ancak bir dil modeli için dil yine önemlidir, çünkü bir dilde öğrenilen bilgi ve bağlam, o dilin dilbilgisine ve dil kullanımına özgüdür. Aynı bilginin başka bir dilde nasıl ifade edileceği, dilin yapılarına ve dil kullanımına bağlıdır. Dahası, Chat GPT’nin eğitim verileri büyük ölçüde İngilizce dilinde olduğu için, belirli konular hakkındaki bilgisi İngilizce dilinde daha derin olabilir. Bu, özellikle karmaşık veya teknik konular söz konusu olduğunda geçerlidir. Sonuç olarak; Chat GPT genel bir bilgi tabanı ve evrensel bir bilgi bağlamına sahip olsa da dil, bilginin ifade edilmesi ve anlaşılması açısından hala önemlidir.
Tiyo 2: Uzun metinleri parçalayarak verin.
ChatGPT’ye tek bir prompt ile verebileceğiniz metnin uzunluğu ya da metinden oluşturulacak bağlamın miktarı sınırlıdır. Bu sınırı aşmak için aşağıdaki gibi bir prompt kullanabilirsiniz. Ayrıca uzun metinleri kolayca parçalamak ve prompt’a dönüştürmek için chatgptsplitter sitesinden faydalanabilirsiniz.
Sana 5 parça halinde bir metin vereceğim. Son metin parçasını da verdikten sonra bu metni bir bütün olarak değerlendir ve metinde ne anlatıldığının bir özetini geç. Ayrıca metinden çıkartılabilecek en önemli bilgileri maddeler halinde sırala.
ChatGPT’in istem (prompt) ve cevap için kullanacağı bir token limiti vardır. İstem ve cevap toplamı ChatGPT 4.0 için 4096 token ile limitlidir ve bu limit yapay zeka öğrenme sürecinde belirlenmiş olan tasarımsal sabit bir değerdir. Herbir kelimenin bir token’e karşılık gelebileceğini söylersem çok yanlış olmaz. Ancak en doğrusu verilen metnin ChatGPT tarafından oluşturulan bağlamının (kastedilen anlamının) kaç token ile ifade edildiğidir. Dolayısıyla istemi girerken token limitini ölçmenin pratik bir yolu yoktur.
İlk paragrafda metinleri parçalamaktan bahsetmiştim. Bu konuda daha başarılı sonuçlar elde edebilecek bir yöntemden bahsedeyim. Uzun metinleri ChatGPT’ye vermek için daha iyi bir yöntem ise “bağlamsal parçalamadır“. Metnin parçalarını bağlamsal olarak özetlemek herbir metin parçası arasındaki bağlamsal ilişkiyi en aza indirerek parçalamak olarak da ifade edilebilir. Böylece herbir istem arasında bağlam/bağlamlar korunmuş ve kullanılan token sayısı azaltılarak limite takılmanın önü alınmış olur. Başka bir ifade ile; metni kelime sayısına göre parçalamak yerine herbir metin parçasının belli bir bağlamı karşıladığından (bağlamın parçalar arasında bölünmediğinde) emin olmak daha iyidir, çünkü ChatGPT daha önceki adımlarda verilen istemlerin kendisini değil yalnızca bağlamını hatırlar.
Tiyo 3: “Gibi” değerlendirerek yanıtla.
Sorunuza yanıt ararken bağlamın hangi kaynaklardan ve bakış açısından yorumlanacağını tanımlamak doğru cevapları almak için önemlidir. Bir örnek ile açıklamak gerekirse; diyelim ki hem psikolojiyi hem de ekonomiyi ilgilendiren bir soru sor sordunuz. Cevabı bir ekonomist gözüyle yanıtlamasını mı istersiniz yoksa bir psikoloji uzmanının bilgitabanını kullanarak mı? Açıkcası “bu sorumu toplum ve kitle psikolojisi alanlarında çalışan bir ekonomi uzmanı gözüyle cevapla” da diyebilirsiniz. Buna özetle “rol biçme” adını verebiliriz. Uzmanlık alanlarını belirlerken yerli ve uluslararası uzmanlık alanlarının bir listesisini ilgili üniversitelerin eğitim programlarından elde edebilirsininiz. Sorularınızı ingilizce sormak ve ChatGPT’nin bürünmesini istedeğiniz uzmanlık alanını küresel ölçekte popüler/geçerli meslek alanlarından seçmek de iyi bir teknik olabilir. Bu listelerden oluşturduğum ufuk açıcı olabilecek bazı örnek roller aşağıda yer alıyor. Bu konuda biraz hayal gücü kullanmak gerekiyor:
- “Sorumu bir biyokimyager ve aynı zamanda jeodezi ve fotogrametri mühendisi olarak cevapla”
- “Sorumu hem bölge ve şehir plancısı hem de kıyı ve liman mühendisi olan bir uzmanın gözüyle değerlendir ve cevapla”
- “Sorumu bir gastronomi ve mutfak Sanatları uzmanı olarak yanıtla”
- “Sorumu manyetik alan tasarım mühendisi olarak yanıtla”
Tekrar hatırlatayım. ChatGPT gibi LLM’ler birçok bilgi tabanı kullanılarak eğitilmişlerdir ve onlara yanıtın hangi bilgitabanı kullanılarak üretileceği konusunda yardımcı olmak daha kaliteli sonuçlar almak açısından önemlidir.
Tiyo 4: Rastgeleliğin farkında olun.
ChatGPT gibi doğal dil işleme konusunda eğitilmiş yapay zekalar, birden fazla doğru cevabı olan girdilere farklı zamanlarda farklı cevaplar verebilirler. Bu özellikle yaratıcılığın gerektiği prompt’larda kolaylıkla farkedebileceğiniz bir özelliktir. Bu özellik sayesinde yapay zeka kendini sürekli olarak güncel tutar ve kullanıcı geri beslemeleri ile kendini geliştirmeye devam eder. Ondan her seferinde konusunu detaylı şekilde belirttiğiniz bir hikaye yazmasını isterseniz, her seferinde belirtilmeyen kısımların kurgu ve bağlantılarını farklı şekilde inşa ettiğini görebilirsiniz. İşte bu rastgeleliktir (randomizing). Eğer GPT’yi API aracılığı ile kullanıyorsanız rasgelelik parametresini kontrol etme imkanınız var ancak web arayüzü üzerinde bu seçenek şuan sunulmuyor (7/23).
! Tiyo 5: Kişiliğe büründürmek
Chat GPT sorunuzu cevaplamak istemiyorsa soruyu yeniden yapılandırın. Açıklamak istemediği konularda ona kişilik vererek veya oyunlaştırarak cevaplar alabilirsiniz.
! Tiyo 6: Eksik bilgileri tamamlatın
Chat GPT sorunuzu cevaplamak istemiyorsa soruyu yeniden yapılandırın. Açıklamak istemediği konularda ona kişilik vererek veya oyunlaştırarak cevaplar alabilirsiniz.
Tiyo 7: Benzerliklerden yararlanarak soru sormak
Ne soracağınızı ya da nasıl soracağınızı tam olarak bilmiyorsunuz ama ulaşmak istediğiniz konu ya da bilginin benzerleri hakkında bir fikriniz var. Aramanızı dilediğiniz kadar spesifik hale getirerek ChatGPT’nin benzerliklerden seçim yapmasını sağlayabilirsiniz. Demek istediğim şeyi daha iyi anlamak için şu prompt örneklerini inceleyin:
Otostopçunun Galaksi Rehberi, Dijital kale ve Ben Robot gibi kitapları okumaktan keyif aldım. Bu tarz başka tavsiye edebileceğin hangi kitaplar var ? Tavsiye edeceğin kitapların konusunda bilgisayar ve bilişim teknolojileri olsun. Lütfen herbir kitap için tavsiyenin nedenlerini de açıkla.
Aldatma Sanatı adlı kitabın içeriğine benzer olarak; pratik ve yaşanmış örnekler üzerinden konuları ele alan başka kitaplar var mı? Lütfen tavsiye nedenlerini de açıklayarak cevapla. Her bir kitap tavsiyeni Aldatma Sanatı adlı kitap ile örnek sayısı ve zekice kurgulanmış aldatmalar üzerinden karşılaştırarak 100 üzerinden baremle.
“Gözünü karartmak” deyimi ile aynı benzeşimi ve analojiyi kullanan başka deyimler var mı?
Tiyo 8: Bunu yapay zeka mı üretmiş?
Yapay zekaların oluşturduğu metinler belli başlı özelliklere sahip. Örneğin bir bilgi metninin ChatGPT tarafından oluşturulup oluşturulmadığını anlayabilirsiniz. Bunu skorlayacak çevrim içi hizmetler olduğu gibi, soruyu ChatGPT’ye de sorabilirsiniz. Örneğin aşağıdaki prompt’u kullanabilirsiniz:
“Alttaki metnin bir doğal dil işleme yapay zeka modeli tarafından oluşturulup oluşturulmadığını denetle ve denetim sonucunun bana 100 üzerinden skorla. Skorlamayı yaparken kullandığın kriterleri de paylaş.”
Gerçek insanlar tarafından yazılan metinler, makinelerden daha zengin bir kelime dağarcığına sahip olma eğilimindedir ve daha çeşitli kelimeler içeren daha uzun paragraflara sahip olma eğilimindedirler. Ayrıca insanlar, soru işaretleri, parantezler ve noktalı virgüller gibi noktalama işaretlerini ChatGPT’den daha sık kullanırlar. Gerçek insan üretimi metinlerde ayrıca “ancak”, “ama”, “bununla birlikte” gibi daha kararsız dil kullanılır ve ayrıca “bu” ve “çünkü” gibi kelimeleri sıkça yer alır. Makineler ise genellikle nötr/tarafsız duyguya sahip cümleler kurma eğilimindedirler. Aşağıda ChatGPT tarafından paylaşılmış bazı AI (yapay zeka) içerik dedektörleri yer alıyor. Listenin daha fazlası için ChatGPT’ye sorabilirsiniz:
- https://writer.com/ai-content-detector/
- https://openai-openai-detector–g5s42.hf.space
- https://www.gpt-detector.com
- http://gltr.io/dist/index.html
Yabancı makale ve video’ları hızlıca gözden geçirmek
Örneğin, öğrenmek istediğiniz veya içerisindeki bilgiyi merak ettiğiniz bir makale veya youtube video’su olsun. Hangi lisanda yazıldığının bir önemi yok. downsub.com‘a giderek video’nun URL’ini yapıştırın ve video’nun orjinal diline ait alt yazı dosyasını indirin (dosya bir metin belgesi olarak inecektir). Orjinal dilinde indirmek önemli, çünkü diğer diller genellikle youtube tarafından otomatik olarak çevrilir (bir insan tercümanın çeviri yaptığı video’lar milyonda birdir). Daha sonra gpt’ye örneğin şu prompt’u vererek altyazı dosyasının içeriğini yapıştırın:
“Aşağıdaki metinde bir video’ya ait konuşma metni yer almakta. Bu metni uzman bir psikolok/bilgisayar programcısı gözüyle değerlendir ve ne anlatılmak istendiğinin bir özetini paylaş, ayrıca video’da anlatılan en önemli bilgileri maddeler halinde paylaş. Bu çıktıyı üretirken Türkçe dilini kullan”
Benzer şekilde, uzun makaleyi metin seçme aracı ile seçerek GPT’ye verebilirsiniz. Uzun metinleri ChatGPT’ye vermek için “uzun metinleri parçalama” tiyosuna göz atabilirsiniz. Sorunuzu sorarken detay vermeyi ve rol tanımlamayı unutmayın.
Ders notları, tutanak veya literatür taraması yapmak
ChatGPT’den uzun ders notlarının birözetini çıkartmasını ve en önemli bilgileri sizinle paylaşmasını isteyebilirsiniz. Uzun toplantılar sonucunda ortaya çıkan sayfalarca konuşma metinlerini inceleyerek kısa bir özetini çıkarmasını ve toplantıda görüşülen en önemli bilgileri listelemesini isteyebilirsiniz. Benzer şekilde uzun bir tıp ya da hukuki metni vererek özetini çıkarmasını sıradan bir insanın anlayabileceği basitlikte örnekler ile açıklamasını isteyebilir veya bu metin içinden olacak şekilde sorularınızı cevaplamasını isteyebilirsiniz.
Sınav sorusu hazırlamak
Öğretmenler iyi bilir, sınav sorusu hazırlamak gerçekten vakit alan bir iştir. ChatGPT ister klasik ister test sınavı sorusu olsun, soru hazırlama konusunda oldukça başarılıdır. Şöyle bir prompt verebilirsiniz:
“Aşağıdaki metini kullanarak 4 cevap şıklı 5 adet kolay, 5 adet orta zorlukta ve 5 adet de çok zor soru hazırla. Soruların doğru cevaplarını belirtmek için sonuna * işareti koy. Soruları hazırlarken bilgi ve deneyimi ölçen sorular olmasına dikkat et. İlk soruyu 10. soru numarasından başlat. Soruların hazırladıktan sonra cevap anahtarını paylaş…”
Ardından soru hazırlamak istediğiniz metni yapıştırın. Prompt konusunda kendinizi sınırlamayın, karşınızda yorulmak ve tembellik nedir bilmeyen çok bilgili bir “robot” var. Soruların sahip olması gereken özellikleri istediğiniz gibi tarif edebilir, dilediğiniz kadar soru hazırlatabilirsiniz. Tamamen hayal gücünüze ve sorgu mühendisliği bilginize kalmış.
Aşağıdaki gibi bir soru hazırlama örneği faydalı olabilir:
“ilkokul 5. sınıf seviyesindeki bir öğrenci için okuduğunu anlama konusunda test soruları hazırlamak istiyorum. 5 tane çok zor seviye ve 5 tane de orta zorlukta çoktan seçmeli (4 cevap şıklı) test sorusu hazırlayıp cevap anahtarını paylaşırmısın. Okuma metni en az 150 kelimeden oluşsun. Okuma metninde şu özelliklere sahip bir hikaye kurgula. Adı bulut olan henüz okula gitmeyen 4 yaşında bir erkek kardeş, insanların düşüncelerini okuma ve değiştirme yeteneğine sahip komik ve duygusal bir çocuktur. Bir de ondan 4 yaş büyük Güneş adında bir ablası vardır. O da zamanda yolculuk yapabilme yeteneğine sahiptir. Birbiri ile çoğu zaman iyi anlaşan bu iki kardeş genellikle birbirlerine çeşitli şakalar yapar, bazen birlikte oynar bazen de birbirleriyle rekabet içinde olarak anne ve babalarını zor durumlara sokarlar.”
İnsanlar genel olarak çengel bulmacaları çözmekten keyif alırlar. Dilerseniz ChatGPT’yi kullanarak bir çengel bulmaca hazırlayabilirsiniz. Prompt’unuz aşağıdaki gibi olabilir.
Aşağıdaki metnin anlamına yönelik en önemli 20 kelimeyi belirle ve bir çengel bulmaca oluşturabilmek için onları her satırda bir kelime olacak şekilde paylaş. Satırlara sıra numarası verme. Ayrıca kelimelerin kökünü kullan.
Daha sonra kelime listesini kopyalayarak burdaki gibi bir siteye giderek çengel bulmacanızı oluşturabilirsiniz. Çengel bulmaca ve daha eğlenceli şeyler hazırlamak için kullanabileceğiniz çevrim içi hizmetlerin adreslerini öğrenmek için yine ChatGPT’yi kullanabilirsiniz: “Çengel bulmaca hazırlamakta kullanabileceğim çevrim içi siteler servisler neler? Adreslerini paylaşır mısın?“
Yatırım yapmak için kullanmak
Bilgisayar programcıları için
ChatGPT açık kaynak kod depolarından iyi şekilde eğitim almıştır. Dil anlama yeteneği sayesinde program yazım isteklerinizi çok iyi şekilde algılayabilir ve istediğiniz dilde yazabilir. İsterseniz C++, isterseniz Assembly isterseniz de artık pek kullanılmayan Cobol veya Prolog gibi dillerden herhangi birinde yazmasını isteyebilirsiniz. Bilgisayar programlama veya web tasarım (HTML+CSS+JS vb) ile uğraşanlar bu kullanımı mutlaka denemeliler. Yazacağı programın veriyi nasıl işleyeceğini (algoritma) ve çıktıyı ne şekilde vermesini istediğinizi uzunca (ya da gerekli olduğu kadar) tarif etmeniz yeterli. Şu inceliklerden de faydalanabilirsiniz. Tarif ettiğim programı dilin modern programlama tekniklerini kullanarak yaz, işlemci kullanımından ziyade bellek kullanımını optimize edecek şekilde veya en az işlemci ve ram’i kullanacak şekilde kodla şeklinde belirtimlerde bulunabilirsiniz. Eğer eğitim amaçlı bir program yazdırıyorsanız, programı mümkün olduğunca modüler ve basit şekilde yaz ve neyi niçin yaptığnı bol bol yorum satırı kullanarak açıkla.
ChatGPT hali hazırda mevcut olan herhangi bir programlama dili ile yazılmış kodları inceleyebilir, düzeltebilir, optimize edebilir, iyileştirebilir veya hatalarını ayıklayabilir. Yabancı bir dille yazılmışsa Türkçe’ye çevirip açıklama satırları ekleyebilir. Özetle; programın ne iş yaptığını ve nasıl çalıştığını Türkçe olarak size anlatabilir.
ChatGPT program yazımı konusunda son derece tatminkar sonuçlar üretse de şu konuları göz önünde bulundurun:
- ChatGPT son derece akıllı olmasına rağmen problemi tarif edişinizdeki eksikliklerden (problem tanımınız henüz farkında olmadığınız eksikliklere sahip olabilir) kaynaklı yanlış cevap veya hatalı bir kod üretebilir. ChatGPT’nin verdiği her şeyi körü körüne kabul etmeyin – onu dikkatlice okuyun ve test edin. Gerektiği şekilde prompt’unuzu düzeltin ve programı yeniden yazmasını isteyin. O yorulmaz ve sıkılmaz.
- ChatGPT tarafından üretilen kod verimli veya her koşulda düzgün çalışabilecek özellikte olmayabilir, güvenlik açıkları içerebilir, aşırı bellek ya da işlemci kullanımına neden olabilecek hatalar içerebilir. Kodları detaylandırabileceğiniz güvenlik hassasiyetlerine dikkat ederek veya daha bellek/işlemci kullanacak şekilde oluşturmasını belirtebilirsiniz. Ayrıca olası yanlış veri girişlerini kontrol edecek mekanizmalar kullanmasını isteyebilirsiniz. Özetle ChatGPT ile kodlama yapma bir konuşma sürecidir ve yanıtların iyileştirilmesi için sizin geri bildirimlerinizi dikkate alabilir.
- Problemi en doğru şekilde ifade edebilmek için problemi önce kendimizin iyi anlamış olması gerekir. Bir problemi daha iyi anlamak için, onu mantıksal parçalara ayırmak yardımcı olabilir. Genellikle ChatGPT’nin çözümü oluştururken yaptığı açıklamalar problemi daha iyi anlamamızı sağlamak ve bağlamı daha iyi ifade etmek açısında çok faydalıdır. Algoritma sorunuzu ChatGPT’nin çıktılarına göre sürekli olarak iyileştirip yeniden sorabilirsiniz.
- Sorguyu iyileştirmek ve muhtemel hataları tespit etmek amacıyla ChatGPT’ye düşünce yöntemini sorabilirsiniz. Yani bu cevabı/algoritmayı oluştururken hangi düşünce süreçlerini/aşamalarını işlettin gibi bir sorunun cevabı, özellikle karmaşık tasarım süreçleri gerektiren sorgularda sorgunuzu daha iyi yapılandırmanıza yardımcı olabilir.
- Sorunuz ve cevabınızın kendisi 4096 token ile sınırlı bir kaynak kullanır. Sorunuzun bağlamı veya cevabın kendisi bu sınırı aşarsa program tam olarak istenilen özelliklerde yazılamayacaktır. Bunun için mevcut problemi mantıksal bölümlere ayırmasını isteyin ve her adımda bir bölümün için kod yazmasını isteyin.