Skip to content

Latest commit

 

History

History
410 lines (255 loc) · 45 KB

File metadata and controls

410 lines (255 loc) · 45 KB

Prompt Mühendisliğinin Temelleri

Prompt Mühendisliğinin Temelleri

Giriş

Bu modül, üretken yapay zeka modellerinde etkili istemler oluşturmak için temel kavramları ve teknikleri kapsar. Bir LLM'ye (Büyük Dil Modeli) yazdığınız istem biçimi de önemlidir. Özenle hazırlanmış bir istem, daha kaliteli yanıtlar alabilir. Peki istem ve istem mühendisliği gibi terimler tam olarak ne anlama geliyor? Ve LLM'ye gönderdiğim istem girdisini nasıl geliştirebilirim? Bu bölüm ve bir sonraki bölümde bu soruları yanıtlamaya çalışacağız.

Uretken yapay zeka, kullanıcı isteklerine yanıt olarak yeni içerikler (örneğin, metin, görsel, ses, kod vb.) oluşturabilir. Bunu, doğal dil ve kod kullanımı için eğitilmiş OpenAI’nin GPT (“Generative Pre-trained Transformer”) serisi gibi Büyük Dil Modelleri (LLM’ler) kullanarak başarır.

Artık kullanıcılar herhangi bir teknik uzmanlık veya eğitim gerekmeden sohbet gibi tanıdık paradigmalarla bu modellerle etkileşime geçebilir. Modeller istem tabanlıdır - kullanıcılar bir metin girişi (istem) gönderir, AI yanıtı (tamamlama) alır. Sonra yanıt beklentilerine uyana kadar istemlerini çok turda iteratif olarak "AI ile sohbet ederek" geliştirirler.

“İstemler” artık üretken AI uygulamaları için temel programlama arayüzü haline gelmiştir; modellere ne yapacaklarını söyler ve dönen yanıtların kalitesini etkiler. "İstem Mühendisliği", ölçekli tutarlı ve kaliteli yanıtlar sunmak için istemlerin tasarımı ve optimizasyonu üzerine odaklanan hızla büyüyen bir çalışma alanıdır.

Öğrenme Hedefleri

Bu derste, İstem Mühendisliğinin ne olduğunu, neden önemli olduğunu ve belirli bir model ve uygulama amacı için daha etkili istemleri nasıl oluşturabileceğimizi öğreneceğiz. İstem mühendisliğinin temel kavramlarını ve en iyi uygulamalarını anlayacak - bu kavramların gerçek örneklere nasıl uygulandığını görebileceğimiz etkileşimli bir Jupyter Notebooks "kum havuzu" ortamını tanıyacağız.

Bu dersin sonunda:

  1. İstem mühendisliğinin ne olduğunu ve neden önemli olduğunu açıklayabileceğiz.
  2. Bir istemin bileşenlerini ve bunların nasıl kullanıldığını tanımlayabileceğiz.
  3. İstem mühendisliği için en iyi uygulamaları ve teknikleri öğreneceğiz.
  4. Öğrenilen teknikleri gerçek örneklere, OpenAI uç noktası kullanarak uygulayabileceğiz.

Ana Terimler

İstem Mühendisliği: AI modellerinin istenen çıktılar üretmesini yönlendirmek için girdilerin tasarımı ve rafine edilmesi pratiği.
Tokenizasyon: Metni, modelin anlayıp işlem yapabileceği daha küçük birimlere (token'lara) dönüştürme süreci.
Talimatlarla İncelenmiş LLM’ler: Yanıt doğruluğu ve alaka düzeyini artırmak için belirli talimatlarla ince ayar yapılmış Büyük Dil Modelleri.

Öğrenme Kum Havuzu

İstem mühendisliği şu anda daha çok sanat, bilimden çok sezgi gerektiren bir alandır. İçgörümüzü geliştirmek için en iyi yol, daha fazla pratik yapmak ve uygulama alanı uzmanlığı ile önerilen teknikler ve modele özgü optimizasyonları birleştiren deneme-yanılma yaklaşımını benimsemektir.

Bu dersi tamamlayan Jupyter Notebook, öğrendiklerinizi uygulayabileceğiniz bir kum havuzu ortamı sunar - ister ilerlerken ister ders sonundaki kod meydan okuması sırasında. Alıştırmaları çalıştırmak için:

  1. Bir Azure OpenAI API anahtarı - dağıtılmış bir LLM için servis uç noktası.
  2. Bir Python Çalışma Zamanı - Notebook’un çalıştırılabileceği ortam.
  3. Yerel Ortam Değişkenleri - hazırlık için şimdiden KURULUM adımlarını tamamlayın.

Notebook, başlangıç alıştırmalarıyla gelir - ancak daha fazla örnek veya fikir denemek ve istem tasarımı için sezginizi geliştirmek adına kendi Markdown (açıklama) ve Kod (istem istekleri) bölümlerinizi eklemeniz teşvik edilir.

Görselleştirilmiş Kılavuz

Bu dersin kapsadığı konuların genel görünümünü hızlıca kavramak ister misiniz? Bu görselleştirilmiş kılavuza göz atın; ana konuları ve her biri için düşünmeniz gereken önemli çıkarımları sunar. Ders yol haritası, temel kavramları ve zorlukları anlamaktan, bunları ilgili istem mühendisliği teknikleri ve en iyi uygulamalar ile ele almaya kadar götürür. Bu kılavuzdaki "İleri Teknikler" bölümü, bu müfredatın sonraki bölümünde ele alınan içeriğe atıfta bulunur.

Görselleştirilmiş Prompt Mühendisliği Kılavuzu

Startup’ımız

Şimdi, _bu konu_nun eğitim alanında yapay zeka yeniliğini getirmek misyonumuzla nasıl ilişkili olduğundan bahsedelim. Kişiselleştirilmiş öğrenme odaklı AI destekli uygulamalar geliştirmek istiyoruz - öyleyse uygulamamızın farklı kullanıcılarının istemleri nasıl "tasarlayabileceğini" düşünelim:

  • Yöneticiler AI’dan müfredat verisini inceleyip kapsama alanındaki boşlukları tespit etmesini isteyebilir. AI sonuçları özetleyebilir veya kodla görselleştirebilir.
  • Eğitimciler AI’dan hedef kitle ve konu için bir ders planı oluşturmasını talep edebilir. AI, belirtilen formatta kişiselleştirilmiş planı oluşturabilir.
  • Öğrenciler AI’dan zor bir konuda rehberlik etmesini (özel ders vermesini) isteyebilir. AI artık öğrencileri seviyelerine uygun dersler, ipuçları ve örneklerle yönlendirebilir.

Bu sadece buzdağının görünen kısmı. Daha kapsamlı fikir edinmek için eğitim uzmanları tarafından düzenlenen açık kaynaklı bir istemler kütüphanesi olan Prompts For Education projesine göz atın! İstemleri kum havuzunda veya OpenAI Playground’da çalıştırmayı deneyin, sonucu görün!

İstem Mühendisliği Nedir?

Bu derse, bir uygulama amacı ve model için tutarlı ve kaliteli yanıtlar (tamalamalar) sağlamak üzere metin girişlerini (istemleri) tasarlama ve optimize etme süreci olarak İstem Mühendisliği’ni tanımlayarak başladık. Bunu iki aşamalı bir süreç olarak düşünebiliriz:

  • Verilen model ve amaç için başlangıç istemini tasarlamak
  • Yanıt kalitesini arttırmak için istemi yinelemeli olarak iyileştirmek

Bu, optimum sonucu elde etmek için kullanıcı sezgisini ve çabasını gerektiren zorunlu bir deneme-yanılma sürecidir. Peki neden önemlidir? Bu sorunun cevabı için önce üç kavramı anlamamız gerekir:

  • Tokenizasyon = modelin istemi "nasıl gördüğü"
  • Temel LLM’ler = temel modelin bir istemi "nasıl işlediği"
  • Talimatlarla İncelenmiş LLM’ler = modelin artık "görevleri nasıl görebileceği"

Tokenizasyon

Bir LLM, istemleri farklı modellerin (veya model sürümlerinin) aynı istemi farklı şekillerde tokenleştirebildiği bir token dizisi olarak görür. LLM’ler tokenler üzerinde eğitildiği için (ham metin değil), istemlerin nasıl tokenleştirildiği oluşturulan yanıtın kalitesini doğrudan etkiler.

Tokenizasyonun nasıl çalıştığına dair sezgi edinmek için aşağıdaki gibi araçları deneyin: OpenAI Tokenizer. İsteminizi kopyalayıp yapıştırın - boşluk karakterleri ve noktalama işaretlerinin nasıl işlendiğine dikkat edin. Bu örnek daha eski bir LLM’yi (GPT-3) gösteriyor; daha yeni modelle denerken farklı sonuçlar görebilirsiniz.

Tokenizasyon

Kavram: Temel Modeller

İstem tokenleştirildikten sonra, "Temel LLM" (Base LLM) (veya temel model) işlevi, o dizideki bir sonraki tokenı tahmin etmektir. LLM’ler devasa metin veri kümeleri üzerinde eğitildiğinden, tokenlar arasındaki istatistiksel ilişkileri iyi bilir ve bu tahmini nispeten güvenle yapabilir. Ancak metindeki kelimelerin anlamını anlamazlar; sadece "tamamlayabilecekleri" bir desen görürler. Kullanıcı müdahalesi veya önceden belirlenmiş bir koşul ile sonlandırılana kadar tahmin etmeye devam edebilirler.

İstem tabanlı tamamlama nasıl çalışır görmek ister misiniz? Yukarıdaki istemi Azure OpenAI Studio Chat Playground varsayılan ayarlarla girin. Sistem, istemleri bilgi talebi olarak ele alacak şekilde yapılandırmıştır; bu nedenle bu bağlama uygun bir tamamlama görmelisiniz.

Peki ya kullanıcı, belirli kriterlere veya görev hedefine uyan bir şey görmek isteseydi? İşte burada talimatlarla ince ayar yapılmış LLM’ler devreye girer.

Temel LLM Sohbet Tamamlama

Kavram: Talimatlarla İncelenmiş LLM’ler

Bir Talimatlarla İncelenmiş LLM, temel modelle başlar ve açık talimatlar içerebilen örnekler veya giriş/çıkış çiftleri (çok tur "mesajlar" gibi) ile ince ayar yapılır - AI da yanıtında bu talimatı izlemeye çalışır.

Bu, İnsan Geri Bildirimi ile Pekiştirmeli Öğrenme (RLHF) gibi teknikler kullanarak modeli talimatları takip etmeye ve geri bildirimden öğrenmeye yönlendirir, böylece daha pratik uygulamalara uygun ve kullanıcı amaçlarına daha alakalı yanıtlar üretir.

Deneyelim - yukarıdaki istemi gözden geçirin, ancak şimdi sistem mesajını şu talimatla değiştirin:

Verilen içeriği ikinci sınıf öğrencisi için özetleyin. Sonucu 3-5 madde işaretli, tek bir paragraf olarak tutun.

Sonucun istenen hedef ve formata göre ayarlandığını göreceksiniz. Bir eğitimci bu yanıtı doğrudan o ders için slaytlarında kullanabilir.

Talimatlarla İncelenmiş LLM Sohbet Tamamlama

Neden İstem Mühendisliğine İhtiyacımız Var?

Artık istemlerin LLM’ler tarafından nasıl işlendiğini bildiğimize göre, neden istem mühendisliğine ihtiyacımız olduğunu konuşalım. Cevap, mevcut LLM’lerin, güvenilir ve tutarlı tamamalara ulaşmayı, istem yapısı ve optimizasyonuna çaba harcamadan zorlaştıran birkaç zorluk barındırmasında yatar. Örneğin:

  1. Model yanıtları stokastiktir. Aynı istem, farklı modeller veya sürümler ile farklı yanıtlar oluşturabilir. Hatta aynı model ile farklı zamanlarda bile farklı sonuçlar üretebilir. İstem mühendisliği teknikleri bu varyasyonları azaltmak için daha iyi kılavuzlar sağlar.

  2. Modeller yanıt uydurabilir. Modeller büyük fakat sonlu veri kümeleriyle önceden eğitildiğinden, eğitim kapsamı dışındaki kavramlar hakkında bilgileri olmayabilir. Sonuç olarak, yanlış, hayali veya bilinen gerçeklerle doğrudan çelişen yanıtlar üretebilirler. İstem mühendisliği teknikleri, örneğin AI’dan kaynak göstermek veya mantık yürütme istemek suretiyle bu uydurmaların tespiti ve azaltılmasına yardımcı olur.

  3. Model yetenekleri değişkenlik gösterir. Daha yeni modeller veya model kuşakları daha zengin yeteneklere sahip olur ancak maliyet ve karmaşıklık açısından kendine özgü özellikler ve dengeler getirir. İstem mühendisliği, farklılıkları soyutlayarak ve model özel gereksinimlere ölçeklenebilir, sorunsuz biçimde uyum sağlayan en iyi uygulamalar geliştirmemizi sağlar.

Bunu OpenAI veya Azure OpenAI Playground’da deneyelim:

  • Farklı LLM dağıtımları (Ör. OpenAI, Azure OpenAI, Hugging Face) ile aynı istemi kullanın - varyasyonları gördünüz mü?
  • Aynı LLM dağıtımı (Ör. Azure OpenAI Playground) ile aynı istemi tekrarlı kullanın - bu varyasyonlar nasıl farklılaştı?

Uydurmalar Örneği

Bu derste, LLM’lerin bazen eğitim sınırları veya diğer kısıtlamalar nedeniyle gerçek dışı bilgi üretmesi fenomeni için "uydurma" terimini kullanıyoruz. Popüler makalelerde veya araştırma makalelerinde buna "halüsinasyonlar" denildiğine de şahit olmuş olabilirsiniz. Ancak davranışı insan-insanlaştırmamak için terim olarak "uydurma" kullanmanızı şiddetle öneriyoruz. Bu, terim açısından Sorumlu AI yönergelerini destekler ve bazı bağlamlarda da saldırgan ya da dışlayıcı sayılabilecek terimleri çıkarır.

Uydurmaların nasıl çalıştığını kavramak ister misiniz? AI’ya eğitim veri kümesinde bulunmayan bir konu için içerik oluşturma talimatı verdiğinizi düşünün. Örneğin - şu istemi denedim:

İstem: 2076 Mars Savaşı hakkında bir ders planı oluştur. Bir web araması, Kızıl Gezegen savaşları hakkında kurgusal anlatımlar (örneğin, televizyon dizileri veya kitaplar) olduğunu gösterdi - ancak hiçbiri 2076 yılında değil. Sağduyu da bize 2076'nın gelecekte olduğunu ve bu nedenle gerçek bir olayla ilişkilendirilemeyeceğini söylüyor.

Peki bu istemi farklı LLM sağlayıcıları ile çalıştırdığımızda ne olur?

Yanıt 1: OpenAI Playground (GPT-35)

Yanıt 1

Yanıt 2: Azure OpenAI Playground (GPT-35)

Yanıt 2

Yanıt 3: : Hugging Face Chat Playground (LLama-2)

Yanıt 3

Beklendiği gibi, her model (veya model sürümü), stokastik davranış ve model kapasiteleri farklılıkları nedeniyle biraz farklı yanıtlar üretir. Örneğin, bir model 8. sınıf seviyesindeki bir kitleyi hedeflerken, diğeri lise öğrencisi varsaymaktadır. Ancak üç model de, bilgisiz bir kullanıcıyı olayın gerçek olduğuna inandırabilecek yanıtlar üretti.

metaprompting ve sıcaklık yapılandırması gibi istem mühendisliği teknikleri, model uydurmalarını bir dereceye kadar azaltabilir. Yeni istem mühendisliği _mimari_leri, bu etkileri hafifletmek veya azaltmak için yeni araçları ve teknikleri sorunsuzca istem akışına entegre etmektedir.

Vaka Çalışması: GitHub Copilot

Bu bölümü, gerçek dünya çözümlerinde istem mühendisliğinin nasıl kullanıldığını anlamak için bir Vaka Çalışması ile tamamlayalım: GitHub Copilot.

GitHub Copilot, sizin "Yapay Zeka Eş Programcınız"dır - metin istemlerini kod tamlamalarına dönüştürür ve geliştirme ortamınıza (örneğin, Visual Studio Code) entegre edilerek kesintisiz bir kullanıcı deneyimi sunar. Aşağıdaki blog serisinde belgelenmiştir ki, en erken versiyon OpenAI Codex modeline dayanıyordu - mühendisler kısa sürede modeli ince ayar yapma ve kod kalitesini artırmak için daha iyi istem mühendisliği teknikleri geliştirme ihtiyacını fark ettiler. Temmuz ayında, Codex'in ötesine geçen geliştirilmiş bir yapay zeka modeli duyurdular; böylece öneriler çok daha hızlı hale geldi.

Öğrenme yolculuklarını takip etmek için yazıları sırasıyla okuyun.

Gerçek dünyadaki uygulamalar için bu modellerin ve tekniklerin nasıl uygulandığını gösteren mühendislik bloglarını da, bu yazı gibi okuyabilirsiniz.


İstem Oluşturma

İstem mühendisliğinin neden önemli olduğunu gördük - şimdi istemlerin nasıl oluşturulduğunu anlayalım ki, daha etkili istem tasarımı için farklı teknikleri değerlendirebilelim.

Temel İstem

Basit bir istem ile başlayalım: modele başka bir bağlam olmadan gönderilen bir metin girişi. Örneğin, US milli marşının ilk birkaç kelimesini OpenAI Completion API ‘ye gönderdiğimizde, model hemen yanıtı takip eden birkaç satırla tamamlar, temel tahmin davranışını gösterir.

İstem (Giriş) Tamamlama (Çıkış)
Oh say can you see ABD'nin milli marşı olan "The Star-Spangled Banner"ın sözlerini okumaya başladığınız anlaşılıyor. Tam metni şöyledir ...

Karmaşık İstem

Şimdi o temel isteme bağlam ve talimatlar ekleyelim. Chat Completion API, karmaşık bir istemi şu şekildedir bir mesajlar koleksiyonu olarak oluşturmamıza izin verir:

  • Kullanıcı girdisi ve asistan yanıtını yansıtan giriş/çıkış çiftleri.
  • Asistan davranışını veya kişiliğini belirleyen sistem mesajı.

İstek aşağıdaki biçimdedir; burada tokenization bağlam ve sohbetten ilgili bilgileri etkili biçimde yakalar. Sistem bağlamını değiştirmek, verilen kullanıcı girdileri kadar tamamlama kalitesini etkileyebilir.

response = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

Talimat İstemi

Yukarıdaki örneklerde, kullanıcı istemi bir bilgi talebi olarak yorumlanabilecek basit bir metin sorgusuydu. Talimat istemi ile, metni yapay zekaya daha ayrıntılı bir görev belirtmek için kullanabilir ve daha iyi rehberlik sağlayabiliriz. İşte bir örnek:

İstem (Giriş) Tamamlama (Çıkış) Talimat Türü
İç Savaş hakkında bir açıklama yaz basit bir paragraf döndürdü Basit
İç Savaş hakkında bir açıklama yaz. Önemli tarihleri ve olayları ver, bunların önemini açıkla bir paragraf döndürdü ardından önemli olay tarihleri ve açıklamalarından oluşan bir liste Karmaşık
İç Savaş hakkında 1 paragraf yaz. Başlıca tarihler ve önemleri ile 3 madde ver. Önemli tarihi kişiler ve katkıları için 3 madde daha ver. Çıktıyı JSON dosyası olarak ver daha kapsamlı detayları içeren bir metin kutusunda JSON biçiminde çıktı döndürür; dosyaya yapıştırıp doğrulayabilirsiniz Karmaşık. Biçimlendirilmiş.

Birincil İçerik

Yukarıdaki örneklerde, istem oldukça açık uçluydu ve LLM önceden eğitilmiş veri kümesinin hangi kısmının ilgili olduğunu kendisi seçiyordu. Birincil içerik tasarım deseni ile giriş metni iki parçaya ayrılır:

  • bir talimat (eylem)
  • eylemi etkileyen ilgili içerik

Örneğin, talimat "bunu 2 cümlede özetle" olabilir.

İstem (Giriş) Tamamlama (Çıkış)
Jüpiter Güneş'ten beşinci ve Güneş Sistemi'ndeki en büyük gezegendir. Bir gaz devidir, kütlesi Güneş'in binde biri kadar olmakla birlikte, Güneş Sistemi'ndeki diğer tüm gezegenlerin toplamının iki buçuk katıdır. Jüpiter, çıplak gözle gece gökyüzünde görülebilen en parlak cisimlerden biridir ve antik medeniyetler tarafından tarih öncesi kayıtlardan önce bilinmiştir. Roma tanrısı Jüpiter'in adını taşımaktadır.[19] Dünya'dan bakıldığında, Jüpiter yansıtılan ışığıyla görünür gölgeler oluşturacak kadar parlak olabilir,[20] ve ortalama olarak Ay ve Venüs'ten sonra gece gökyüzündeki üçüncü en parlak doğal cisimdir.
Bunu 2 kısa cümlede özetleyin
Jüpiter, Güneş'ten beşinci gezegen olup Güneş Sistemi'nin en büyüğüdür ve gece gökyüzündeki en parlak nesnelerden biridir. Roma tanrısı Jüpiter'in adını taşıyan bu gaz devi, Güneş Sistemi'ndeki diğer tüm gezegenlerin toplam kütlesinin iki buçuk katıdır.

Birincil içerik bölümü, daha etkili talimatlar vermek için çeşitli şekillerde kullanılabilir:

  • Örnekler - modele kesin bir talimat vermek yerine, istenen çıktı örneklerini verip modellerden kalıbı çıkarmasını sağlamak.
  • İpuçları - talimatı, modelin daha ilgili yanıtlar vermesi için tamamlayan “ipuçları” izler.
  • Şablonlar - özel kullanım durumları için verilerle özelleştirilebilen yer tutucular (değişkenler) içeren tekrarlanabilir istem "tarifleri".

Bunları uygulamada inceleyelim.

Örnek Kullanımı

Bu yöntemde, birincil içerik ile modele, bir talimat için istenen çıktının bazı örnekleri verilir ve modeli, istenen çıktının kalıbını çıkarmaya bırakırız. Verilen örnek sayısına bağlı olarak, sıfır-vuruş (zero-shot), tek-vuruş (one-shot), birkaç vuruş (few-shot) istemlendirme yapılabilir.

İstem artık üç bileşenden oluşur:

  • Görev açıklaması
  • İstenen çıktının birkaç örneği
  • Yeni bir örneğin başlangıcı (örtük görev açıklaması olur)
Öğrenme Türü İstem (Giriş) Tamamlama (Çıkış)
Sıfır-vuruş "The Sun is Shining". İspanyolcaya çevir "El Sol está brillando".
Tek-vuruş "The Sun is Shining" => "El Sol está brillando".
"It's a Cold and Windy Day" =>
"Es un día frío y ventoso".
Several-shot Oyuncu üsleri döndü => Beyzbol
Oyuncu servis attı => Tenis
Oyuncu servi aldı => Kriket
Oyuncu smacı yaptı =>
Basketbol

Sıfır-vuruş istemlendirmede açık talimat vermek ("İspanyolcaya çevir") gerektiğine dikkat edin; tek-vuruş örnekte ise bu çıkarılır. Birkaç örnek verilmesi, modele ek talimat olmadan daha doğru çıkarım yapmasını sağlar.

İstem İpuçları

Birincil içeriği kullanmanın bir diğer yolu, örnekler yerine ipuçları vermektir. Bu durumda, modele istenen yanıt formatına uygun bir parçayla başlayarak ufak bir işaret verilir. Model, bu işareti alıp o doğrultuda yanıtı devam ettirir.

İpucu Sayısı İstem (Giriş) Tamamlama (Çıkış)
0 Jüpiter Güneş'ten beşinci gezegendir ve Güneş Sistemi'nin en büyüğüdür. Bir gaz devidir, kütlesi Güneş'in binde biri kadar olmakla birlikte, Güneş Sistemi'ndeki diğer tüm gezegenlerin toplamının iki buçuk katıdır. Jüpiter çıplak gözle gece gökyüzünde görülebilen en parlak nesnelerden biridir ve antik medeniyetlerce tarih öncesinden beri bilinir.
Bunu Özetle
Jüpiter, Güneş Sistemi'nin en büyük gezegenidir ve Güneş'ten beşincidir. Kütlesi Güneş'in binde biri olmasına rağmen, diğer tüm gezegenlerin toplamından daha ağırdır. Antik uygarlıklar tarafından uzun zamandır bilinmekte ve gece gökyüzünde kolayca görülebilmektedir.
1 Jüpiter, Güneş'ten beşinci gezegendir ve Güneş Sistemi'nin en büyüğüdür. Kütlesi Güneş'in binde biri olan bir gaz devidir, ancak diğer tüm gezegenlerin kütlesinin iki buçuk katıdır. Jüpiter, çıplak gözle gece gökyüzünde görülebilen en parlak nesnelerden biridir ve kayıtlı tarihi önceki antik medeniyetler tarafından bilinmektedir.
Bunu Özetle
Öğrendiklerimiz şudur ki Jüpiter
Güneş'ten beşinci gezegerdir ve Güneş Sistemi'nin en büyüğüdür. Kütlesi Güneş'in binde biri olan bir gaz devidir, ancak diğer tüm gezegenlerin birleşik kütlesinin iki buçuk katıdır. Kolayca çıplak gözle görülebilir ve antik çağlardan beri bilinmektedir.
2 Jüpiter, Güneş'ten beşinci gezegendir ve Güneş Sistemi'nin en büyüğüdür. Kütlesi Güneş'in binde biri olan bir gaz devidir, ancak diğer tüm gezegenlerin birleşik kütlesinin iki buçuk katıdır. Jüpiter, çıplak gözle gece gökyüzünde görülebilen en parlak nesnelerden biridir ve kayıtlı tarihi önceki antik medeniyetler tarafından bilinmektedir.
Bunu Özetle
Öğrendiğimiz En İyi 3 Gerçek:
1. Jüpiter, Güneş'ten beşinci gezegendir ve Güneş Sistemi'nin en büyüğüdür.
2. Kütlesi Güneş'in binde biri olan bir gaz devidir...
3. Jüpiter, antik çağlardan beri çıplak gözle görünmüştür ...

İstek Şablonları

Bir istek şablonu, önceden tanımlanmış bir istek tarifi olup, gerektiğinde saklanıp yeniden kullanılabilir; böylece tutarlı kullanıcı deneyimlerini büyük ölçekte yönetir. En basit haliyle, kullanıcı ve sistem mesajlarını ve API tabanlı istek formatını içeren OpenAI'nin şu örneği gibi bir dizi örnekten oluşur.

Daha karmaşık bir formda, LangChain'in şu örneği gibi, çeşitli kaynaklardan (kullanıcı girişi, sistem bağlamı, harici veri kaynakları vb.) dinamik olarak istek oluşturmak için yer tutucular içerir. Bu, tutarlı kullanıcı deneyimlerini programatik olarak ölçeklendirmek için yeniden kullanılabilir istekler kütüphanesi oluşturmamızı sağlar.

Son olarak, şablonların gerçek değeri, dikey uygulama alanları için istek kütüphaneleri oluşturma ve yayımlama becerisinde yatar — bu şablonlar artık uygulamaya özgü bağlam ya da örneklerle optimize edilmiştir, böylece cevaplar hedef kullanıcı kitlesi için daha ilgili ve doğru olur. Prompts For Edu deposu, eğitim alanı için ders planlama, müfredat tasarımı, öğrenci eğitimi gibi önemli hedeflere vurgu yaparak böyle bir yaklaşımın güzel bir örneğidir.

Destekleyici İçerik

İstek oluşturmayı bir talimat (görev) ve hedef (birincil içerik) olarak düşünürsek, ikincil içerik çıktı üzerinde bir şekilde etki etmek amacıyla sağlanan ek bağlam gibidir. Bu, ayarlama parametreleri, biçimlendirme talimatları, konu taksonomileri vb. olabilir; modelin yanıtını istenen kullanıcı hedeflerine uygun hale getirmesine yardımcı olur.

Örneğin: Müfredattaki tüm mevcut kurslar için kapsamlı meta veriler (isim, açıklama, seviye, etiketler, öğretmen vb.) içeren bir kurs kataloğu verildiğinde:

  • "2023 Güz dönemi kurs kataloğunu özetle" şeklinde bir talimat belirleyebiliriz
  • Birincil içerik olarak istenen çıktıdan birkaç örnek verebiliriz
  • İkincil içerik olarak en çok ilgi gören 5 "etiketi" belirtebiliriz.

Model, birkaç örnekle gösterilen formatta bir özet sağlayabilir — ancak sonuçta birden fazla etiket varsa, ikincil içerikte belirtilen 5 etikete öncelik verebilir.


İstek Verme En İyi Uygulamaları

Artık isteklerin nasıl oluşturulacağını bildiğimize göre, onları en iyi uygulamalarla tasarlama konusunu düşünmeye başlayabiliriz. Bunu iki kısımda düşünebiliriz — doğru bakış açısı ve doğru tekniklerin uygulanması.

İstek Mühendisliği Bakış Açısı

İstek Mühendisliği deneme-yanılma sürecidir, bu nedenle üç temel rehber faktörü aklınızda tutun:

  1. Alan Bilgisi Önemlidir. Yanıtların doğruluğu ve ilgisi, o uygulamanın veya kullanıcının içinde bulunduğu alana bağlıdır. İçgüdünüzü ve alan uzmanlığınızı kullanarak teknikleri özelleştirin. Örneğin, sistem isteklerinizde alana özgü kişilikler tanımlayın, kullanıcı isteklerinde alana özel şablonlar kullanın. Alan bağlamlarını yansıtan ikincil içerik sağlayın veya modeli aşina olduğu kalıplara yönlendirmek için alana özgü ipuçları ve örnekler kullanın.

  2. Modeli Anlamak Önemlidir. Modeller doğası gereği stokastiktir. Ama model uygulamaları kullandıkları eğitim veri setine (önceden eğitilmiş bilgi), sundukları yeteneklere (örneğin API veya SDK yoluyla) ve optimize edildikleri içerik türüne (örneğin kod, görsel veya metin) göre değişiklik gösterebilir. Kullandığınız modelin güçlü ve zayıf yönlerini anlayın ve bu bilgiyle görev önceliklendirmesi yapın veya modelin yeteneklerine göre özelleştirilmiş şablonlar oluşturun.

  3. Yineleme ve Doğrulama Önemlidir. Modeller hızla gelişiyor ve istek mühendisliği teknikleri de öyle. Bir alan uzmanı olarak, genel topluluğa uymayabilecek başka bağlamlar veya kriterleriniz olabilir. İstek mühendisliği araçları ve tekniklerini kullanarak istek oluşturmayı "hızlandırın", sonra içgüdünüz ve uzmanlığınızla sonuçları yineleyin ve doğrulayın. İçgörülerinizi kaydedin ve başkalarının daha hızlı tekrarları için kullanabileceği bir bilgi tabanı (örneğin istek kütüphaneleri) oluşturun.

En İyi Uygulamalar

Şimdi OpenAI ve Azure OpenAI uzmanlarının önerdiği yaygın en iyi uygulamalara göz atalım.

Ne Yapmalı Neden
En yeni modelleri değerlendirin. Yeni model nesilleri muhtemelen geliştirilmiş özellikler ve kaliteye sahiptir — ancak maliyetleri de daha yüksek olabilir. Etkisini değerlendirin ve sonra geçiş kararları alın.
Talimatları ve bağlamı ayırın. Model sağlayıcınızın talimatlar ile birincil ve ikincil içeriği daha net ayırmak için sınırlandırıcılar tanımlayıp tanımlamadığını kontrol edin. Bu, modele tokenlara farklı ağırlıklar vermesinde yardımcı olur.
Spesifik ve net olun. İstenilen bağlam, sonuç, uzunluk, format, stil vb. hakkında daha fazla detay verin. Bu yanıt kalitesini ve tutarlılığını artırır. Tarifleri yeniden kullanılabilir şablonlarda kaydedin.
Tanımlayıcı olun, örnekler kullanın Modeller "göster ve anlat" yaklaşımına daha iyi yanıt verebilir. Önce sıfır örnek ile, yani sadece talimat verip örnek vermeden başlayın, sonra birkaç örnekle (few-shot) istediğiniz çıktıyı refinelayın. Benzetmeler kullanın.
Tamamlama için ipuçları kullanın Modeli istenen sonuca doğru yönlendirmek için başlangıç kelime veya ifadeleri verin; bu onun yanıtına yön vermesinde kolaylık sağlar.
Çift Katman Yapın Bazen modeli tekrar etmeniz gerekebilir. Talimatları hem içerikten önce hem sonra verin, talimat ve ipucunu birlikte kullanın vb. Ne işe yaradığına dair yinelemeler yapın ve doğrulayın.
Sıra Önemlidir Verilen bilgilerin modelde sunuluş sırası, çıkışı etkileyebilir; bu durum öğrenme örneklerinde bile geçerlidir (son bilgi önyargısı nedeniyle). Farklı seçenekleri deneyin.
Modele "çıkış" yolu verin Modelin görevi tamamlayamadığı durumlar için bir geri dönüş tamamlama yanıtı sağlayın. Bu, modelin yanlış veya uydurma yanıtlar verme olasılığını azaltabilir.

Her en iyi uygulamada olduğu gibi, kendi deneyiminiz kullandığınız model, görev ve alana göre değişebilir. Bunları bir başlangıç noktası olarak alın ve size en uygun olanı bulana kadar yineleme yapın. Yeni model ve araçlar çıktıkça istek mühendisliği sürecinizi sürekli yeniden değerlendirin; ölçeklenebilir süreç ve yanıt kalitesine odaklanarak.

Ödev

Tebrikler! Dersin sonuna geldiniz! Şimdi bazı kavram ve teknikleri gerçek örneklerle test etme zamanı!

Ödevimiz için, etkileşimli tamamlayabileceğiniz alıştırmalar içeren bir Jupyter Notebook kullanacağız. Kendi Markdown ve Kod hücrelerinizi ekleyerek fikir ve teknikleri keşfedebilirsiniz.

Başlamak için depoyu çatallayın, sonra

  • (Önerilen) GitHub Codespaces'i başlatın
  • (Alternatif) Depoyu yerel cihazınıza klonlayıp Docker Desktop ile kullanın
  • (Alternatif) Tercih ettiğiniz Notebook çalışma ortamında açın.

Sonra, ortam değişkenlerinizi yapılandırın

  • Depo kökünde bulunan .env.copy dosyasını .env olarak kopyalayın ve AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_DEPLOYMENT değerlerini doldurun. Daha fazla bilgi için Öğrenme Sandbox bölümü'ne dönün.

Sonra, Jupyter Notebook'u açın

  • Çalışma zamanı kernelini seçin. 1. veya 2. seçenekleri kullanıyorsanız, geliştirici konteynerin sağladığı varsayılan Python 3.10.x kernelini seçmeniz yeterlidir.

Alıştırmaları çalıştırmaya hazırsınız. Burada doğru ve yanlış cevaplar yoktur — sadece deneme-yanılma ile seçenekleri keşfedip, bir model ve uygulama alanında neyin işe yaradığını sezgisel olarak anlamaya çalışıyorsunuz.

Bu nedenle derste Kod Çözüm segmentleri bulunmamakta. Bunun yerine, Notebook'ta "Çözümüm:" başlıklı Markdown hücreleri olacak ve referans için bir örnek çıktı gösterecek.

Bilgi kontrolü

Aşağıdakilerden hangisi makul en iyi uygulamalara uygun iyi bir istektir?

  1. Bana kırmızı araba resmi göster
  2. Bana kırmızı renkli, Volvo marka XC90 model, bir uçurum kenarında, güneş batarken park edilmiş bir araba resmi göster
  3. Bana kırmızı renkli, Volvo marka XC90 model bir araba resmi göster

Cevap: 2, çünkü detaylar içeriyor ve "ne" sorusuna cevap veriyor, spesifik (sadece herhangi bir araba değil, belirli bir marka ve model) ve aynı zamanda genel ortamı tanımlıyor. 3. ise detay açısından ikinci en iyisidir.

🚀 Meydan Okuma

"Show me an image of red car of make Volvo and " cümlesini tamamlayarak ipucu (cue) tekniğini kullanabilir misiniz? Model nasıl yanıt veriyor ve bunu nasıl geliştirebilirsiniz?

Harika İş! Öğrenmeye Devam Edin

Farklı İstek Mühendisliği kavramlarını daha fazla öğrenmek ister misiniz? Bu konuyla ilgili diğer harika kaynakları bulmak için devam eden öğrenme sayfasına gidin.

İleri düzey istek tekniklerine bakacağımız 5. Derse gidin: [../05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst]!


Feragatname: Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba gösterilmekle birlikte, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu oluşabilecek yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmemektedir.