Skip to content

Latest commit

 

History

History
387 lines (237 loc) · 46.6 KB

File metadata and controls

387 lines (237 loc) · 46.6 KB

İstek Mühendisliği Temelleri

İstek Mühendisliği Temelleri

Giriş

Bu modül, üretken yapay zeka modellerinde etkili istekler oluşturmak için temel kavramları ve teknikleri ele alır. Bir LLM'ye (Büyük Dil Modeli) yazdığınız isteğin şekli de önemlidir. Özenle hazırlanmış bir istek, daha kaliteli bir yanıt elde etmenizi sağlayabilir. Ancak, istek ve istek mühendisliği gibi terimler tam olarak ne anlama geliyor? Ve LLM'ye gönderdiğim istek girdisini nasıl geliştirebilirim? Bu bölümde ve bir sonraki bölümde bu soruları yanıtlamaya çalışacağız.

Üretken Yapay Zeka, kullanıcı taleplerine yanıt olarak yeni içerikler (örneğin, metin, görseller, ses, kod vb.) oluşturma yeteneğine sahiptir. Bunu, doğal dil ve kod kullanımı için eğitilmiş OpenAI'nin GPT ("Üretken Önceden Eğitilmiş Dönüştürücü") serisi gibi Büyük Dil Modelleri kullanarak başarır.

Kullanıcılar artık bu modellerle sohbet gibi tanıdık paradigmalar kullanarak, herhangi bir teknik uzmanlık veya eğitim gerektirmeden etkileşimde bulunabilir. Modeller istek tabanlıdır - kullanıcılar bir metin girişi (istek) gönderir ve yapay zekadan bir yanıt (tamamlama) alır. Ardından, "yapay zeka ile sohbet ederek" çok aşamalı konuşmalarda isteklerini rafine edebilir ve yanıt beklentilerini karşılayana kadar iyileştirebilirler.

"İstekler" artık üretken yapay zeka uygulamaları için birincil programlama arayüzü haline geliyor, modellere ne yapmaları gerektiğini söylüyor ve dönen yanıtların kalitesini etkiliyor. "İstek Mühendisliği", tutarlı ve kaliteli yanıtlar sağlamak için isteklerin tasarımı ve optimizasyonuna odaklanan hızla büyüyen bir çalışma alanıdır.

Öğrenme Hedefleri

Bu derste, İstek Mühendisliği'nin ne olduğunu, neden önemli olduğunu ve belirli bir model ve uygulama hedefi için daha etkili istekler nasıl oluşturabileceğimizi öğreneceğiz. İstek mühendisliği için temel kavramları ve en iyi uygulamaları anlayacağız - ve bu kavramların gerçek örneklere uygulandığını görebileceğimiz etkileşimli bir Jupyter Notebooks "sandbox" ortamını öğreneceğiz.

Bu dersin sonunda şunları yapabileceğiz:

  1. İstek mühendisliğinin ne olduğunu ve neden önemli olduğunu açıklamak.
  2. Bir isteğin bileşenlerini ve nasıl kullanıldıklarını tanımlamak.
  3. İstek mühendisliği için en iyi uygulamaları ve teknikleri öğrenmek.
  4. Öğrenilen teknikleri gerçek örneklere uygulamak, bir OpenAI endpoint kullanarak.

Anahtar Terimler

İstek Mühendisliği: Yapay zeka modellerini istenen çıktıları üretmeye yönlendirmek için girdileri tasarlama ve iyileştirme pratiği. Tokenizasyon: Metni, modelin anlayabileceği ve işleyebileceği daha küçük birimler olan tokenlara dönüştürme süreci. Talimatla Ayarlanmış LLM'ler: Yanıt doğruluğunu ve alaka düzeyini artırmak için belirli talimatlarla ince ayar yapılmış Büyük Dil Modelleri (LLM'ler).

Öğrenme Sandbox'ı

İstek mühendisliği şu anda bilimden çok bir sanat. Bunun için sezgimizi geliştirmek adına daha fazla pratik yapmak ve uygulama alanı uzmanlığını önerilen teknikler ve modele özgü optimizasyonlarla birleştiren bir deneme-yanılma yaklaşımını benimsemek en iyi yoldur.

Bu derse eşlik eden Jupyter Notebook, öğrendiklerinizi uygulayabileceğiniz bir sandbox ortamı sağlar - ister ders sırasında ister dersin sonunda yer alan kod zorluklarının bir parçası olarak. Alıştırmaları çalıştırmak için şunlara ihtiyacınız olacak:

  1. Bir Azure OpenAI API anahtarı - dağıtılmış bir LLM için hizmet endpoint'i.
  2. Bir Python Çalışma Zamanı - Notebook'un çalıştırılabileceği bir ortam.
  3. Yerel Çevre Değişkenleri - şimdi KURULUM adımlarını tamamlayarak hazır olun.

Notebook, başlangıç alıştırmalarıyla birlikte gelir - ancak kendi Markdown (açıklama) ve Kod (istek talepleri) bölümlerinizi ekleyerek daha fazla örnek veya fikir denemeye ve istek tasarımı için sezginizi geliştirmeye teşvik ediliyorsunuz.

Resimli Kılavuz

Bu derste ele alınan konuların genel bir resmini görmek ister misiniz? Her birinde düşünmeniz gereken ana konuları ve önemli çıkarımları size bir fikir veren bu resimli kılavuza göz atın. Ders yol haritası, temel kavramları ve zorlukları anlamaktan başlayarak, ilgili istek mühendisliği teknikleri ve en iyi uygulamalarla bunları ele almaya kadar uzanır. Bu kılavuzdaki "Gelişmiş Teknikler" bölümü, bu müfredatın bir sonraki bölümünde ele alınan içeriğe atıfta bulunur.

İstek Mühendisliği için Resimli Kılavuz

Girişimimiz

Şimdi, bu konunun eğitimde yapay zeka inovasyonunu getirme misyonumuzla nasıl ilişkili olduğundan bahsedelim. Kişiselleştirilmiş öğrenme için yapay zeka destekli uygulamalar geliştirmek istiyoruz - bu yüzden uygulamamızın farklı kullanıcılarının nasıl "istekler" tasarlayabileceğini düşünelim:

  • Yöneticiler, yapay zekadan müfredat verilerini analiz ederek kapsama alanındaki boşlukları belirlemesini isteyebilir. Yapay zeka sonuçları özetleyebilir veya kodla görselleştirebilir.
  • Eğitmenler, yapay zekadan belirli bir hedef kitle ve konu için bir ders planı oluşturmasını isteyebilir. Yapay zeka, belirtilen formatta kişiselleştirilmiş bir plan oluşturabilir.
  • Öğrenciler, yapay zekadan zor bir konuda kendilerine rehberlik etmesini isteyebilir. Yapay zeka, artık öğrencilere seviyelerine uygun dersler, ipuçları ve örneklerle rehberlik edebilir.

Bu sadece buzdağının görünen kısmı. Eğitim için İstekler - eğitim uzmanları tarafından derlenen açık kaynaklı istek kütüphanesine göz atın - olasılıkların daha geniş bir yelpazesini görmek için! Bu isteklerden bazılarını sandbox'ta veya OpenAI Playground'da çalıştırmayı deneyin ve neler olduğunu görün!

İstek Mühendisliği Nedir?

Bu derse, İstek Mühendisliğini belirli bir uygulama hedefi ve model için tutarlı ve kaliteli yanıtlar (tamamlamalar) sağlamak amacıyla metin girdilerini (istekleri) tasarlama ve optimize etme süreci olarak tanımlayarak başladık. Bunu 2 aşamalı bir süreç olarak düşünebiliriz:

  • Belirli bir model ve hedef için ilk isteği tasarlamak
  • Yanıtın kalitesini artırmak için isteği iteratif olarak iyileştirmek

Bu, optimal sonuçlar elde etmek için kullanıcı sezgisi ve çabasını gerektiren bir deneme-yanılma sürecidir. Peki neden önemlidir? Bu soruyu yanıtlamak için önce üç kavramı anlamamız gerekiyor:

  • Tokenizasyon = modelin isteği nasıl "gördüğü"
  • Temel LLM'ler = temel modelin bir isteği nasıl "işlediği"
  • Talimatla Ayarlanmış LLM'ler = modelin artık "görevleri" nasıl görebildiği

Tokenizasyon

Bir LLM, istekleri token dizisi olarak görür ve farklı modeller (veya bir modelin farklı sürümleri) aynı isteği farklı şekillerde tokenleştirebilir. LLM'ler tokenlar üzerinde (ham metin üzerinde değil) eğitildiğinden, isteklerin nasıl tokenleştirildiği, oluşturulan yanıtın kalitesi üzerinde doğrudan bir etkiye sahiptir.

Tokenizasyonun nasıl çalıştığına dair bir fikir edinmek için aşağıda gösterilen OpenAI Tokenizer gibi araçları deneyin. İsteğinizi kopyalayın - ve bunun tokenlara nasıl dönüştüğünü görün, boşluk karakterleri ve noktalama işaretlerinin nasıl ele alındığına dikkat edin. Bu örneğin daha eski bir LLM'yi (GPT-3) gösterdiğini unutmayın - bu nedenle daha yeni bir modelle denemek farklı bir sonuç üretebilir.

Tokenizasyon

Kavram: Temel Modeller

Bir istek tokenleştirildikten sonra, "Temel LLM" (veya Temel model) işlevi, o dizideki bir sonraki tokeni tahmin etmektir. LLM'ler büyük metin veri setleri üzerinde eğitildiğinden, tokenlar arasındaki istatistiksel ilişkiler hakkında iyi bir anlayışa sahiptir ve bu tahmini belirli bir güvenle yapabilir. Ancak, istekteki veya tokendeki kelimelerin anlamını anlamazlar; sadece bir sonraki tahminleriyle "tamamlayabilecekleri" bir desen görürler. Kullanıcı müdahalesi veya önceden belirlenmiş bir koşulla sonlandırılana kadar diziyi tahmin etmeye devam edebilirler.

İstek tabanlı tamamlamanın nasıl çalıştığını görmek ister misiniz? Yukarıdaki isteği Azure OpenAI Studio'nun Chat Playground bölümüne varsayılan ayarlarla girin. Sistem, istekleri bilgi talepleri olarak ele alacak şekilde yapılandırılmıştır - bu nedenle bu bağlamı karşılayan bir tamamlama görmelisiniz.

Peki ya kullanıcı, belirli bir kriteri veya görev hedefini karşılayan bir şey görmek isteseydi? İşte bu noktada talimatla ayarlanmış LLM'ler devreye giriyor.

Temel LLM Sohbet Tamamlama

Kavram: Talimatla Ayarlanmış LLM'ler

Bir Talimatla Ayarlanmış LLM, temel modelle başlar ve örnekler veya giriş/çıkış çiftleri (örneğin, çok aşamalı "mesajlar") ile ince ayar yapılarak açık talimatlar içerebilir - ve yapay zekanın yanıtı bu talimatı takip etmeye çalışır.

Bu, modelin talimatları takip etmesini ve geri bildirimlerden öğrenmesini sağlayarak, pratik uygulamalara daha uygun ve kullanıcı hedeflerine daha uygun yanıtlar üretmesini sağlayan İnsan Geri Bildirimi ile Takviyeli Öğrenme (RLHF) gibi teknikler kullanır.

Hadi deneyelim - yukarıdaki isteği tekrar gözden geçirin, ancak şimdi sistem mesajını şu talimatı bağlam olarak sağlamak için değiştirin:

Size verilen içeriği ikinci sınıf bir öğrenci için özetleyin. Sonucu bir paragraf ve 3-5 madde ile sınırlayın.

Sonucun şimdi istenen hedefi ve formatı nasıl yansıttığını görün? Bir eğitmen artık bu yanıtı doğrudan sınıfındaki slaytlarında kullanabilir.

Talimatla Ayarlanmış LLM Sohbet Tamamlama

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

Artık isteklerin LLM'ler tarafından nasıl işlendiğini bildiğimize göre, neden istek mühendisliğine ihtiyacımız olduğunu konuşalım. Cevap, mevcut LLM'lerin güvenilir ve tutarlı tamamlamaları elde etmeyi daha zor hale getiren bir dizi zorluk sunmasında yatmaktadır. Örneğin:

  1. Model yanıtları rastlantısaldır. Aynı istek, farklı modeller veya model sürümleriyle muhtemelen farklı yanıtlar üretecektir. Ve hatta aynı modelle farklı zamanlarda farklı sonuçlar üretebilir. İstek mühendisliği teknikleri, daha iyi sınırlar sağlayarak bu varyasyonları en aza indirmemize yardımcı olabilir.

  2. Modeller yanıtları uydurabilir. Modeller, büyük ama sınırlı veri setleriyle önceden eğitildiğinden, bu eğitim kapsamı dışındaki kavramlar hakkında bilgi eksikliği yaşarlar. Sonuç olarak, tamamlamalar bazen yanlış, hayali veya bilinen gerçeklerle doğrudan çelişkili olabilir. İstek mühendisliği teknikleri, kullanıcıların yapay zekadan alıntılar veya mantık istemek gibi bu tür uydurmaları belirlemesine ve azaltmasına yardımcı olur.

  3. Modellerin yetenekleri değişkenlik gösterebilir. Daha yeni modeller veya model nesilleri daha zengin yeteneklere sahip olacak, ancak maliyet ve karmaşıklık açısından benzersiz tuhaflıklar ve ödünler de getirecektir. İstek mühendisliği, model farklılıklarını soyutlayan ve ölçeklenebilir, sorunsuz yollarla modele özgü gereksinimlere uyum sağlayan en iyi uygulamalar ve iş akışları geliştirmemize yardımcı olabilir.

Bunu OpenAI veya Azure OpenAI Playground'da eylemde görelim:

  • Aynı isteği farklı LLM dağıtımlarıyla (örneğin, OpenAI, Azure OpenAI, Hugging Face) kullanın - varyasyonları gördünüz mü?
  • Aynı isteği aynı LLM dağıtımıyla (örneğin, Azure OpenAI Playground) tekrar tekrar kullanın - bu varyasyonlar nasıl farklılık gösterdi?

Uydurma Örneği

Bu derste, "uydurma" terimini, LLM'lerin bazen eğitimlerindeki sınırlamalar veya diğer kısıtlamalar nedeniyle gerçeğe uygun olmayan bilgiler üretmesi olgusunu ifade etmek için kullanıyoruz. Popüler makalelerde veya araştırma makalelerinde bu olguyu "halüsinasyonlar" olarak duymuş olabilirsiniz. Ancak, makine kaynaklı bir sonucu insan benzeri bir özelliğe atfederek davranışı yanlış bir şekilde insanlaştırmamak için "uydurma" terimini kullanmanızı şiddetle öneriyoruz. Bu aynı zamanda Sorumlu Yapay Zeka yönergelerini terminoloji açısından güçlendirir ve bazı bağlamlarda saldırgan veya kapsayıcı olmayan olarak kabul edilebilecek terimleri ortadan kaldırır.

Uydurmaların nasıl çalıştığını anlamak ister misiniz? Yapay zekaya eğitim veri setinde bulunmayan bir konu için içerik oluşturmasını isteyen bir istek düşünün. Örneğin - şu isteği denedim:

İstek: 2076'daki Mars Savaşı hakkında bir ders planı oluştur. Bir web araması, Mars savaşları hakkında kurgusal hikayeler (örneğin, televizyon dizileri veya kitaplar) olduğunu gösterdi - ancak 2076 yılında geçen bir hikaye bulunmuyor. Mantık yürütme yoluyla, 2076'nın gelecekte olduğunu ve bu nedenle gerçek bir olayla ilişkilendirilemeyeceğini söyleyebiliriz.

Peki, bu istemi farklı LLM sağlayıcılarıyla ç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 versiyonu) stokastik davranış ve model yeteneklerindeki farklılıklar nedeniyle biraz farklı yanıtlar üretiyor. Örneğin, bir model 8. sınıf seviyesindeki bir kitleyi hedeflerken, diğeri lise öğrencilerini hedef alıyor. Ancak, üç model de bilgisiz bir kullanıcıyı olayın gerçek olduğuna ikna edebilecek yanıtlar üretti.

İstem mühendisliği teknikleri, örneğin meta-istem oluşturma ve sıcaklık ayarları, modelin yanlış bilgi üretmesini bir ölçüde azaltabilir. Yeni istem mühendisliği mimari yaklaşımları, bu etkileri azaltmak veya ortadan kaldırmak için yeni araçları ve teknikleri istem akışına sorunsuz bir şekilde entegre eder.

Vaka Çalışması: GitHub Copilot

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

GitHub Copilot, sizin "Yapay Zeka Eş Programcınız"dır - metin istemlerini kod tamamlama önerilerine dönüştürür ve Visual Studio Code gibi geliştirme ortamınıza entegre edilerek sorunsuz bir kullanıcı deneyimi sunar. Aşağıdaki blog serilerinde belgelenenlere göre, ilk versiyon OpenAI Codex modeline dayanıyordu - mühendisler hızla 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 modelini tanıttılar ve daha hızlı öneriler sunmaya başladılar.

Öğrenme yolculuklarını takip etmek için aşağıdaki yazıları sırayla okuyabilirsiniz.

Ayrıca, Mühendislik bloglarını inceleyerek, bu modellerin ve tekniklerin gerçek dünya uygulamalarını nasıl yönlendirdiğini gösteren bu yazı gibi daha fazla gönderiye ulaşabilirsiniz.


İstem Tasarımı

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

Temel İstem

Temel istemle başlayalım: modele başka bir bağlam olmadan gönderilen bir metin girdisi. İşte bir örnek - ABD ulusal marşının ilk birkaç kelimesini OpenAI Completion API ile gönderdiğimizde, model hemen yanıtı tamamlayarak sonraki birkaç satırı tahmin eder ve temel tahmin davranışını gösterir.

İstem (Girdi) Tamamlama (Çıktı)
Oh say can you see Görünüşe göre ABD ulusal marşı "The Star-Spangled Banner"ın sözlerini başlatıyorsunuz. Tam sözler şu şekilde devam eder...

Karmaşık İstem

Şimdi bu temel isteme bağlam ve talimatlar ekleyelim. Chat Completion API ile bir istemi, mesajlar koleksiyonu olarak oluşturabiliriz:

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

İstek artık aşağıdaki formda olup, tokenizasyon bağlam ve konuşmadan ilgili bilgileri etkili bir şekilde yakalar. Sistem bağlamını değiştirmek, sağlanan kullanıcı girdileri kadar tamamlama kalitesi üzerinde etkili olabilir.

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 bilgi talebi olarak yorumlanabilecek basit bir metin sorgusuydu. Talimat istemleriyle, bu metni bir görevi daha ayrıntılı bir şekilde belirtmek için kullanabilir, yapay zekaya daha iyi rehberlik sağlayabiliriz. İşte bir örnek:

İstem (Girdi) Tamamlama (Çıktı) Talimat Türü
İç Savaş hakkında bir açıklama yazın basit bir paragraf döndü Basit
İç Savaş hakkında bir açıklama yazın. Önemli tarihleri ve olayları belirtin ve bunların önemini açıklayın bir paragraf ve ardından önemli olay tarihleriyle açıklamalar içeren bir liste döndü Karmaşık
İç Savaş hakkında bir paragraf yazın. Önemli tarihleri ve bunların önemini içeren 3 madde ekleyin. Önemli tarihi figürler ve katkılarıyla ilgili 3 madde daha ekleyin. Çıktıyı JSON dosyası olarak döndürün. daha kapsamlı detaylar döndü, bir metin kutusunda JSON formatında, dosyaya kopyalanıp doğrulanabilir Karmaşık. Formatlı.

Ana İçerik

Yukarıdaki örneklerde, istem hala oldukça açık uçluydu ve LLM'nin önceden eğitilmiş veri setinin hangi kısmının ilgili olduğunu belirlemesine izin veriyordu. Ana içerik tasarım modeliyle, giriş metni iki bölüme ayrılır:

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

İşte talimatın "bunu 2 cümlede özetle" olduğu bir örnek.

İstem (Girdi) Tamamlama (Çıktı)
Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'nin en büyüğüdür. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir, ancak Güneş Sistemi'ndeki diğer tüm gezegenlerin toplamının iki buçuk katı kadardır. Jüpiter, çıplak gözle gece gökyüzünde görülebilen en parlak nesnelerden biridir ve kaydedilmiş tarihten önceki antik uygarlıklar tarafından bilinmektedir. Roma tanrısı Jüpiter'in adını almıştır. Dünya'dan bakıldığında, Jüpiter'in yansıyan ışığı görünür gölgeler oluşturacak kadar parlak olabilir ve ortalama olarak Ay ve Venüs'ten sonra gece gökyüzündeki üçüncü en parlak doğal nesnedir.
Bunu 2 kısa cümlede özetle
Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'nin en büyüğüdür, gece gökyüzünde 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ına sahiptir.

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

  • Örnekler - modele ne yapması gerektiğini açık bir talimatla söylemek yerine, ne yapması gerektiğine dair örnekler verin ve modelin deseni çıkarmasına izin verin.
  • İpuçları - talimatın ardından bir "ipucu" vererek tamamlama sürecini başlatın ve modeli daha ilgili yanıtlar vermeye yönlendirin.
  • Şablonlar - bunlar, belirli kullanım durumları için verilerle özelleştirilebilen yer tutucular (değişkenler) içeren tekrarlanabilir 'tariflerdir'.

Şimdi bunları uygulamalı olarak inceleyelim.

Örnek Kullanımı

Bu yaklaşımda, ana içeriği kullanarak modele belirli bir talimat için istenen çıktının birkaç örneğini "beslersiniz" ve modelin istenen çıktının desenini çıkarmasına izin verirsiniz. Sağlanan örnek sayısına bağlı olarak sıfır atış istemi, tek atış istemi, birkaç atış istemi vb. olabilir.

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

  • Bir görev açıklaması
  • İstenen çıktının birkaç örneği
  • Yeni bir örneğin başlangıcı (bu, örtük bir görev açıklaması haline gelir)
Öğrenme Türü İstem (Girdi) Tamamlama (Çıktı)
Sıfır atış "Güneş Parlıyor". İspanyolcaya çevir "El Sol está brillando".
Tek atış "Güneş Parlıyor" => ""El Sol está brillando".
"Soğuk ve Rüzgarlı Bir Gün" =>
"Es un día frío y ventoso".
Birkaç atış Oyuncu üsleri koştu => Beyzbol
Oyuncu bir ace vurdu => Tenis
Oyuncu bir altı vurdu => Kriket
Oyuncu bir smaç yaptı =>
Basketbol

Sıfır atış isteminde modele açık bir talimat ("İspanyolcaya çevir") vermemiz gerektiğini, ancak tek atış istem örneğinde bunun çıkarıldığını fark edin. Birkaç atış örneği, daha fazla örnek eklemenin, ek talimatlar olmadan modellerin daha doğru çıkarımlar yapmasına nasıl izin verdiğini gösteriyor.

İstem İpuçları

Ana içeriği kullanmanın bir başka tekniği, örnekler yerine ipuçları sağlamaktır. Bu durumda, modelin istenen yanıt formatını yansıtan bir snippet ile başlamasına yardımcı olarak doğru yöne yönlendirilmesini sağlıyoruz. Model daha sonra bu ipucunu alır ve bu doğrultuda devam eder.

İpucu Sayısı İstem (Girdi) Tamamlama (Çıktı)
0 Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'nin en büyüğüdür. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir, ancak Güneş Sistemi'ndeki diğer tüm gezegenlerin toplamının iki buçuk katı kadardır. Jüpiter, çıplak gözle gece gökyüzünde görülebilen en parlak nesnelerden biridir ve kaydedilmiş tarihten önceki antik uygarlıklar tarafından bilinmektedir.
Bunu Özetle
Jüpiter, Güneş Sistemi'nin en büyük gezegeni ve Güneş'ten beşinci gezegendir. Gaz devi olan Jüpiter, diğer tüm gezegenlerin toplam kütlesinin iki buçuk katına sahiptir ve gece gökyüzünde kolayca görülebilir.
1 Jüpiter, Güneş'ten itibaren beşinci gezegen ve Güneş Sistemi'ndeki en büyük gezegendir. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir, ancak Güneş Sistemi'ndeki diğer tüm gezegenlerin toplam kütlesinin iki buçuk katıdır. Jüpiter, gece gökyüzünde çıplak gözle görülebilen en parlak nesnelerden biridir ve kaydedilmiş tarihten önceki antik uygarlıklar tarafından biliniyordu.
Özetle
Öğrendiğimiz şey, Jüpiter
Güneş'ten itibaren beşinci gezegen ve Güneş Sistemi'ndeki en büyük gezegendir. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir, ancak diğer tüm gezegenlerin toplam kütlesinin iki buçuk katıdır. Çıplak gözle kolayca görülebilir ve antik çağlardan beri bilinmektedir.
2 Jüpiter, Güneş'ten itibaren beşinci gezegen ve Güneş Sistemi'ndeki en büyük gezegendir. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir, ancak Güneş Sistemi'ndeki diğer tüm gezegenlerin toplam kütlesinin iki buçuk katıdır. Jüpiter, gece gökyüzünde çıplak gözle görülebilen en parlak nesnelerden biridir ve kaydedilmiş tarihten önceki antik uygarlıklar tarafından biliniyordu.
Özetle
Öğrendiğimiz En Önemli 3 Gerçek:
1. Jüpiter, Güneş'ten itibaren beşinci gezegen ve Güneş Sistemi'ndeki en büyük gezegendir.
2. Güneş'in kütlesinin binde biri kadar bir kütleye sahiptir...
3. Jüpiter, antik çağlardan beri çıplak gözle görülebilmektedir ...

Prompt Şablonları

Bir prompt şablonu, önceden tanımlanmış bir prompt tarifi olup, tutarlı kullanıcı deneyimlerini ölçeklendirmek için gerektiğinde saklanabilir ve yeniden kullanılabilir. En basit haliyle, OpenAI'den bu örnek gibi, hem etkileşimli prompt bileşenlerini (kullanıcı ve sistem mesajları) hem de API tabanlı istek formatını sağlayan bir prompt örnekleri koleksiyonudur - yeniden kullanım için destek sağlar.

Daha karmaşık bir formda, LangChain'den bu örnek gibi, yer tutucular içerir ve bu yer tutucular kullanıcı girdisi, sistem bağlamı, harici veri kaynakları gibi çeşitli kaynaklardan gelen verilerle değiştirilebilir. Bu, bir kütüphane oluşturmayı ve yeniden kullanılabilir prompt'ları ölçekli bir şekilde programlı olarak tutarlı kullanıcı deneyimlerini yönlendirmek için kullanmayı mümkün kılar.

Son olarak, şablonların gerçek değeri, dikey uygulama alanları için prompt kütüphaneleri oluşturma ve yayınlama yeteneğinde yatar - burada prompt şablonu artık hedeflenen kullanıcı kitlesi için yanıtları daha alakalı ve doğru hale getiren uygulamaya özgü bağlamı veya örnekleri yansıtacak şekilde optimize edilmiştir. Prompts For Edu deposu, ders planlama, müfredat tasarımı, öğrenci rehberliği gibi ana hedeflere vurgu yaparak eğitim alanı için prompt'ların bir kütüphanesini derleyen bu yaklaşımın harika bir örneğidir.

Destekleyici İçerik

Prompt oluşturmayı bir talimat (görev) ve bir hedef (ana içerik) olarak düşünürsek, ikincil içerik çıktıyı bir şekilde etkilemek için sağladığımız ek bağlam gibidir. Bu, modelin yanıtını istenen kullanıcı hedeflerine veya beklentilerine uygun hale getirmesine yardımcı olabilecek ayar parametreleri, biçimlendirme talimatları, konu sınıflandırmaları vb. olabilir.

Örneğin: Bir müfredat kataloğu ile tüm mevcut kurslar hakkında geniş meta veriler (isim, açıklama, seviye, meta veri etiketleri, eğitmen vb.) sağlandığında:

  • "2023 Sonbahar müfredat kataloğunu özetle" talimatını tanımlayabiliriz.
  • İstenen çıktının birkaç örneğini sağlamak için ana içeriği kullanabiliriz.
  • İkincil içeriği, en çok ilgilenilen 5 "etiketi" belirlemek için kullanabiliriz.

Artık model, birkaç örnekle gösterilen formatta bir özet sağlayabilir - ancak bir sonuç birden fazla etikete sahipse, ikincil içerikte belirtilen 5 etiketi önceliklendirebilir.


Prompting En İyi Uygulamalar

Artık prompt'ların nasıl oluşturulabileceğini bildiğimize göre, bunları en iyi uygulamaları yansıtacak şekilde nasıl tasarlayabileceğimizi düşünmeye başlayabiliriz. Bunu iki bölümde düşünebiliriz - doğru zihniyete sahip olmak ve doğru teknikleri uygulamak.

Prompt Mühendisliği Zihniyeti

Prompt Mühendisliği bir deneme-yanılma sürecidir, bu yüzden üç geniş rehber faktörü akılda tutun:

  1. Alan Bilgisi Önemlidir. Yanıt doğruluğu ve alaka düzeyi, uygulamanın veya kullanıcının çalıştığı alanın bir fonksiyonudur. Teknikleri daha fazla özelleştirmek için sezginizi ve alan uzmanlığınızı uygulayın. Örneğin, sistem prompt'larınızda alana özgü kişilikler tanımlayın veya kullanıcı prompt'larınızda alana özgü şablonlar kullanın. Alanla ilgili bağlamları yansıtan ikincil içerik sağlayın veya modeli tanıdık kullanım kalıplarına yönlendirmek için alana özgü ipuçları ve örnekler kullanın.

  2. Model Bilgisi Önemlidir. Modellerin doğası gereği rastgele olduğunu biliyoruz. Ancak model uygulamaları, kullandıkları eğitim veri seti (önceden eğitilmiş bilgi), sağladıkları yetenekler (örneğin, API veya SDK aracılığıyla) ve optimize edildikleri içerik türü (örneğin, kod vs. görüntü vs. metin) açısından da farklılık gösterebilir. Kullandığınız modelin güçlü ve zayıf yönlerini anlayın ve bu bilgiyi öncelikli görevler oluşturmak veya modelin yeteneklerine optimize edilmiş özelleştirilmiş şablonlar oluşturmak için kullanın.

  3. Yineleme ve Doğrulama Önemlidir. Modeller hızla gelişiyor ve prompt mühendisliği teknikleri de öyle. Bir alan uzmanı olarak, daha geniş topluluğa uygulanmayan başka bağlam veya kriterlere sahip olabilirsiniz. Prompt mühendisliği araçlarını ve tekniklerini kullanarak prompt oluşturmayı "hızlandırın", ardından kendi sezginizi ve alan uzmanlığınızı kullanarak sonuçları yineleyin ve doğrulayın. İçgörülerinizi kaydedin ve başkalarının gelecekte daha hızlı yinelemeler yapabilmesi için yeni bir temel olarak kullanılabilecek bir bilgi tabanı (örneğin, prompt kütüphaneleri) oluşturun.

En İyi Uygulamalar

Şimdi OpenAI ve Azure OpenAI uygulayıcıları tarafından önerilen yaygın en iyi uygulamalara bakalım.

Ne Neden
En son modelleri değerlendirin. Yeni model nesilleri muhtemelen geliştirilmiş özelliklere ve kaliteye sahip olacaktır - ancak daha yüksek maliyetlere de neden olabilir. Etkilerini değerlendirin, ardından geçiş kararları alın.
Talimatları ve bağlamı ayırın. Modelinizin/sağlayıcınızın talimatları, birincil ve ikincil içeriği daha net bir şekilde ayırmak için sınırlandırıcılar tanımlayıp tanımlamadığını kontrol edin. Bu, modellerin tokenlere daha doğru ağırlıklar atamasına yardımcı olabilir.
Spesifik ve net olun. İstenen bağlam, sonuç, uzunluk, format, stil vb. hakkında daha fazla ayrıntı verin. Bu, yanıtların hem kalitesini hem de tutarlılığını artıracaktır. Tarifleri yeniden kullanılabilir şablonlarda yakalayın.
Açıklayıcı olun, örnekler kullanın Modeller "göster ve anlat" yaklaşımına daha iyi yanıt verebilir. zero-shot bir yaklaşım ile başlayın, burada bir talimat verirsiniz (ancak örnek yoktur), ardından birkaç örnek sağlayarak few-shot ile iyileştirme yapmayı deneyin. Benzerlikler kullanın.
Tamamlama için ipuçları kullanın. İstenen sonuca doğru yönlendirmek için modele yanıt için başlangıç noktası olarak kullanabileceği bazı öncü kelimeler veya ifadeler verin.
Tekrar Edin. Bazen modele kendinizi tekrar etmeniz gerekebilir. Talimatları birincil içeriğinizin öncesinde ve sonrasında verin, bir talimat ve bir ipucu kullanın vb. Yineleyin ve doğrulayın, neyin işe yaradığını görün.
Sıra Önemlidir. Bilgiyi modele sunma sırası, öğrenme örneklerinde bile, yanıtı etkileyebilir. Bu, yakınlık yanlılığı nedeniyle olabilir. En iyi neyin işe yaradığını görmek için farklı seçenekler deneyin.
Modele bir "çıkış" verin. Modele, herhangi bir nedenle görevi tamamlayamazsa sağlayabileceği bir yedek tamamlama yanıtı verin. Bu, modellerin yanlış veya uydurma yanıtlar üretme olasılığını azaltabilir.

Herhangi bir en iyi uygulamada olduğu gibi, model, görev ve alan temelinde sonuçlarınız değişebilir. Bunları bir başlangıç noktası olarak kullanın ve sizin için en iyi olanı bulmak için yineleyin. Yeni modeller ve araçlar kullanıma sunuldukça prompt mühendisliği sürecinizi sürekli olarak yeniden değerlendirin, süreç ölçeklenebilirliği ve yanıt kalitesine odaklanın.

Ödev

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

Ödevimiz için, etkileşimli olarak tamamlayabileceğiniz alıştırmalar içeren bir Jupyter Notebook kullanacağız. Ayrıca kendi fikirlerinizi ve tekniklerinizi keşfetmek için Notebook'u kendi Markdown ve Kod hücrelerinizle genişletebilirsiniz.

Başlamak için, repo'yu fork edin, ardından

  • (Önerilen) GitHub Codespaces'i başlatın
  • (Alternatif) Repo'yu yerel cihazınıza klonlayın ve Docker Desktop ile kullanın
  • (Alternatif) Notebook'u tercih ettiğiniz Notebook çalışma zamanı ortamında açın.

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

  • Repo kökündeki .env.copy dosyasını .env olarak kopyalayın ve AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT ve AZURE_OPENAI_DEPLOYMENT değerlerini doldurun. Öğrenme Alanı bölümüne geri dönerek nasıl yapılacağını öğrenin.

Son olarak, Jupyter Notebook'u açın

  • Çalışma zamanı çekirdeğini seçin. Seçenek 1 veya 2'yi kullanıyorsanız, yalnızca geliştirici konteyneri tarafından sağlanan varsayılan Python 3.10.x çekirdeğini seçin.

Alıştırmaları çalıştırmaya hazırsınız. Burada doğru ve yanlış cevaplar olmadığını unutmayın - sadece deneme-yanılma yoluyla seçenekleri keşfetmek ve belirli bir model ve uygulama alanı için neyin işe yaradığını anlamak.

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

Bilgi Kontrolü

Aşağıdakilerden hangisi makul en iyi uygulamalara uygun iyi bir prompt'tur?

  1. Bana kırmızı bir arabanın resmini göster
  2. Bana bir uçurumun kenarında gün batımıyla park etmiş Volvo marka ve XC90 model kırmızı bir arabanın resmini göster
  3. Bana Volvo marka ve XC90 model kırmızı bir arabanın resmini göster

Cevap: 2, en iyi prompt çünkü "ne" hakkında ayrıntılar sağlar ve spesifik bir araba markası ve modeli (sadece herhangi bir araba değil) ile genel ortamı da tanımlar. 3, bir sonraki en iyisidir çünkü o da oldukça açıklayıcıdır.

🚀 Zorluk

"Show me an image of red car of make Volvo and " cümlesini tamamla prompt'u ile "ipucu" tekniğini kullanabilir misiniz? Model ne yanıt veriyor ve bunu nasıl geliştirebilirsiniz?

Harika İş! Öğrenmeye Devam Edin

Farklı Prompt Mühendisliği kavramları hakkında daha fazla bilgi edinmek ister misiniz? Bu konuyla ilgili diğer harika kaynakları bulmak için devam eden öğrenme sayfasına gidin.

  1. Derse geçin, burada ileri düzey prompt tekniklerini inceleyeceğiz!

Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.