Bu modül, üretken yapay zeka modellerinde etkili istemler oluşturmak için temel kavramlar ve teknikleri kapsar. Bir LLM'ye isteminizi yazma şekliniz de önemlidir. Özenle hazırlanmış bir istem, daha kaliteli bir yanıt elde edebilir. Peki tam olarak istem ve istem mühendisliği gibi terimler ne anlama geliyor? Ve LLM'ye gönderdiğim istem girişini nasıl iyileştiririm? Bu bölüm ve bir sonraki bölümde bu soruları yanıtlamaya çalışacağız.
Uretken yapay zeka, kullanıcı taleplerine yanıt olarak yeni içerik (örneğin, metin, görsel, ses, kod vb.) oluşturabilir. Bunu, doğal dil ve kod kullanımına yönelik eğitilmiş OpenAI'ın GPT ("Generative Pre-trained Transformer") serisi gibi Büyük Dil Modelleri (LLM) kullanarak başarır.
Kullanıcılar artık herhangi bir teknik uzmanlığa veya eğitime ihtiyaç duymadan sohbet gibi tanıdık paradigmalar aracılığıyla bu modellerle etkileşime girebilir. Modeller istem tabanlıdır - kullanıcılar bir metin girdisi (istem) gönderir ve yapay zekadan yanıt alır (tamamlama). Daha sonra çok turlu sohbetler halinde "yapay zeka ile sohbet" ederek istemlerini yanıt beklentilerine uyana kadar yineleyebilirler.
"İstemler" artık üretken yapay zeka uygulamalarında modellerin ne yapacağını bildiren ve dönen yanıtların kalitesini etkileyen birincil programlama arayüzü haline gelir. "İstem Mühendisliği", tutarlı ve kaliteli yanıtlar sunmak için istemlerin tasarlanması ve optimize edilmesi üzerine hızla gelişen bir çalışma alanıdır.
Bu derste, İstem Mühendisliği'nin ne olduğunu, neden önemli olduğunu ve belirli bir model ve uygulama hedefi için daha etkili istemlerin nasıl oluşturulacağını öğreniyoruz. İstem mühendisliği için temel kavramları ve en iyi uygulamaları anlayacak ve bu kavramların gerçek örneklere nasıl uygulandığını görebileceğimiz interaktif bir Jupyter Notebooks "sandbox" ortamını keşfedeceğiz.
Bu dersin sonunda şunları yapabileceğiz:
- İstem mühendisliğinin ne olduğunu ve neden önemli olduğunu açıklamak.
- Bir istemin bileşenlerini ve nasıl kullanıldığını tanımlamak.
- İstem mühendisliği için en iyi uygulama ve teknikleri öğrenmek.
- Öğrenilen teknikleri gerçek örneklere OpenAI uç noktası kullanarak uygulamak.
İstem Mühendisliği: Yapay zeka modellerini istenen çıktılar üretmeye yönlendirmek için girdileri tasarlama ve iyileştirme uygulaması.
Tokenizasyon: Metni modelin anlayıp işleyebileceği daha küçük birimler olan tokenlara dönüştürme süreci.
Talimat Ayarlı LLM'ler: Tepki doğruluğunu ve alakasını artırmak için belirli talimatlarla ince ayar yapılmış Büyük Dil Modelleri (LLM).
İstem mühendisliği şu anda daha çok bir sanat olarak kabul edilir. Buna dair sezgimizi geliştirmek için en iyi yol daha fazla pratik yapmak ve uygulama alanı uzmanlığını önerilen teknikler ve modele özgü optimizasyonlarla birleştiren deneme-yanılma yaklaşımını benimsemektir.
Bu dersle birlikte gelen Jupyter Not Defteri, öğrendiklerinizi uygulayabileceğiniz bir sandbox ortamı sağlar - ister derste ister ders sonunda kod meydan okuması sırasında. Egzersizleri çalıştırmak için şunlara ihtiyacınız olacak:
- Bir Azure OpenAI API anahtarı - konuşlandırılmış bir LLM için servis uç noktası.
- Bir Python Çalışma Zamanı - Not Defterinin çalıştırılabilmesi için.
- Yerel Ortam Değişkenleri - Hazırlanmak için KURULUM adımlarını tamamlayın.
Defter, başlangıç egzersizleriyle birlikte gelir - ancak kendi Markdown (açıklama) ve Kod (istem istekleri) bölümlerinizi ekleyerek daha fazla örnek veya fikir deneyebilir ve istem tasarımı konusundaki sezginizi geliştirebilirsiniz.
Derse başlamadan önce bu dersin genel kapsamını görmek ister misiniz? Bu görsel rehber, ana konular ve her biri için düşünmeniz gereken önemli çıkarımlar hakkında size bir fikir verir. Ders yol haritası, temel kavramları ve zorlukları anlamaktan ilgili istem mühendisliği teknikleri ve en iyi uygulamalarla çözümlemeye kadar ilerler. Rehberdeki "İleri Teknikler" bölümü, bu müfredatın bir sonraki bölümünde ele alınacak içeriğe atıfta bulunur.
Şimdi, bu konunun yapay zeka yeniliğini eğitime getirmek misyonumuza nasıl bağlandığından bahsedelim. Kişiselleştirilmiş öğrenmenin yapay zeka destekli uygulamalarını geliştirmek istiyoruz - bu yüzden uygulamamızın farklı kullanıcılarının istemleri nasıl "tasarlayabileceği" üzerine düşünelim:
- Yöneticiler, müfredat verilerini analiz ederek kapsama alanındaki boşlukları tespit etmesi için yapay zekaya istekte bulunabilir. AI, sonuçları özetleyebilir veya kodla görselleştirebilir.
- Eğitmenler, hedef kitle ve konu için ders planı oluşturmasını yapay zekadan isteyebilir. Yapay zeka, belirtilen formatta kişiselleştirilmiş planı oluşturabilir.
- Öğrenciler, zor bir konuda kendilerine öğretmenlik yapmasını isteyebilir. Yapay zeka, öğrencilerin seviyelerine uygun dersler, ipuçları ve örneklerle rehberlik yapabilir.
Bu sadece buzdağının görünen kısmı. Geniş olanakları görmek için eğitim uzmanları tarafından derlenen açık kaynaklı istemler kütüphanı Prompts For Education adresine göz atın! Bu istemlerin bazılarını sandbox'ta veya OpenAI Playground'da çalıştırmayı deneyin ve neler olduğunu görün!
Derse, belirli bir uygulama hedefi ve model için tutarlı ve kaliteli yanıtlar (tamamlamalar) sunmak üzere metin girdilerini (istemleri) tasarlama ve optimize etme süreci olarak İstem Mühendisliği kavramını tanımlayarak başladık. Bunu 2 adımlı bir süreç olarak düşünebiliriz:
- Belirli bir model ve hedef için ilk istemi tasarlamak
- Yanıt kalitesini artırmak için istemi yinelemelerle iyileştirmek
Bu, en iyi sonuçları elde etmek için kullanıcı sezgisi ve çabası gerektiren zorunlu bir deneme-yanılma sürecidir. Peki neden önemli? Bu soruyu yanıtlamak için önce üç kavramı anlamamız gerekir:
- Tokenizasyon = modelin istemi nasıl "gördüğü"
- Temel LLM'ler = temel modelin istemi nasıl "işlediği"
- Talimat Ayarlı LLM'ler = modelin artık "görevleri" nasıl görebildiği
Bir LLM, istemleri token dizisi olarak görür; farklı modeller (veya bir modelin farklı sürümleri) aynı istemi farklı şekillerde tokenize edebilir. LLM'ler tokenlar üzerinde eğitildiğinden (ham metin üzerinde değil), istemlerin nasıl tokenize edildiği üretilen yanıtın kalitesi üzerinde doğrudan etkilidir.
Tokenizasyonun nasıl çalıştığına dair sezgi kazanmak için aşağıdaki gibi araçları deneyin: OpenAI Tokenizer. İsteminizi kopyalayın ve bunun tokenlara nasıl dönüştüğüne, boşluk karakterleri ve noktalama işaretlerinin nasıl işlendiğine dikkat edin. Bu örnek daha eski bir LLM'yi (GPT-3) göstermektedir - daha yeni bir modelde farklı bir sonuç elde etmek mümkündür.
Bir istem tokenize edildikten sonra, "Temel LLM" (veya Temel Model) temel işlevi, o dizideki tokeni tahmin etmektir. LLM'ler, devasa metin veri kümeleri üzerinde eğitildiğinden tokenlar arasındaki istatistiksel ilişkileri iyi bilir ve bu tahmini belli bir güvenle yapabilirler. İstemdeki kelimelerin anlamını anlamazlar; sadece bir sonraki tahminleri ile "tamamlayabilecekleri" bir desen görürler. Kullanıcı müdahalesi ya da önceden belirlenmiş bir koşul gerçekleşinceye kadar diziyi tahmin etmeye devam edebilirler.
İstem tabanlı tamamlama nasıl çalışır görmek ister misiniz? Yukarıdaki istemi Azure OpenAI Studio Chat Playground içine varsayılan ayarlarla girin. Sistem, istemleri bilgi istekleri olarak ele alacak şekilde yapılandırılmıştır - dolayısıyla bu bağlamı karşılayan bir tamamlama görmelisiniz.
Peki ya kullanıcı, bazı kriterlere veya görev hedeflerine uygun belirli bir şeyi görmek isterse? İşte burada talimat ayarlı LLM'ler devreye girer.
Bir Talimat Ayarlı LLM, temel modelle başlar ve açık talimatlar içerebilen örnekler veya giriş/çıkış çiftleri (örneğin, çok turlu "mesajlar") ile ince ayar yapılır; yapay zekanın yanıtı bu talimatı takip etmeye çalışır.
Bu, İnsan Geribildirimi ile Takviyeli Öğrenme (RLHF) gibi teknikleri kullanarak modeli talimatları takip etmeye ve geribildirimden öğrenmeye eğitmek üzere kullanılır; böylece pratik uygulamalara daha uygun ve kullanıcı hedefleriyle daha alakalı yanıtlar üretir.
Deneyelim - yukarıdaki istemi tekrar ziyaret edin ancak şimdi sistem mesajını şu bağlamı sağlamak üzere değiştirin:
Verilen içeriği ikinci sınıf öğrencisi için özetleyin. Sonucu 3-5 maddeyle bir paragraf halinde tutun.
Sonucun artık istenen hedef ve biçime göre ayarlandığını görüyor musunuz? Bir eğitimci bu yanıtı doğrudan o sınıf için slaytlarında kullanabilir.
Artık istemlerin LLM'ler tarafından nasıl işlendiğini anladığımıza göre, istem mühendisliğine neden ihtiyacımız olduğunu konuşalım. Cevap, mevcut LLM'lerin bazı zorluklar ortaya koymasıyla ilgilidir; bu zorluklar, istem yapısına ve optimizasyonuna çaba sarf edilmeden güvenilir ve tutarlı tamamlamalar elde etmeyi zorlaştırır. Örneğin:
-
Model yanıtları stokastiktir. Aynı istem, farklı modellerde veya model sürümlerinde muhtemelen farklı yanıtlar verecektir. Hatta aynı model ile tekrarlandığında zamanla farklı sonuçlar üretilebilir. İstem mühendisliği teknikleri, bu varyasyonları daha iyi sınırlar sunarak minimize etmemize yardımcı olur.
-
Modeller yanıt uydurabilir. Modeller önceden büyük ama sınırlı veri kümeleriyle eğitildiğinden, eğitim kapsamı dışındaki kavramlar hakkında bilgi eksikliği vardır. Sonuç olarak, yanlış, hayali veya bilinen gerçeklerle doğrudan çelişen tamamlamalar üretebilirler. İstem mühendisliği teknikleri, kullanıcıların yapay zekadan kaynaklar veya gerekçelendirme talep ederek bu uydurmaları tespit edip azaltmasına yardımcı olur.
-
Model yetenekleri farklılık gösterecek. Yeni modeller veya model nesilleri daha zengin yetenekler sunar ama maliyet & karmaşıklıkta kendine özgü farklılıklar ve ödünleşmeler getirir. İstem mühendisliği, farkları soyutlayan ve model-spesifik gereksinimlere ölçeklenebilir, kesintisiz uyum sağlayan en iyi uygulamalar ve iş akışları geliştirmemize olanak tanır.
Bunu OpenAI veya Azure OpenAI Playground'da pratik yapalım:
- Farklı LLM dağıtımları (örneğin OpenAI, Azure OpenAI, Hugging Face) ile aynı istemi kullanın - varyasyonları gördünüz mü?
- Aynı LLM dağıtımı (örneğin Azure OpenAI Playground) ile aynı istemi tekrar tekrar kullanın - bu varyasyonlar nasıl farklılaştı?
Bu derste, LLM'lerin eğitimlerindeki kısıtlar veya diğer nedenlerle bazen gerçeklere aykırı bilgi üretmesini "uydurma" terimiyle ifade ediyoruz. Bu duruma popüler makalelerde veya araştırma makalelerinde bazen "halüsinasyon" denir. Ancak davranışı insan benzeri bir özelliğe atfetmemek için "uydurma" teriminin kullanılmasını şiddetle tavsiye ediyoruz. Bu aynı zamanda Sorumlu Yapay Zeka yönergeleri açısından da uygun, bazı bağlamlarda saldırgan veya kapsayıcı olmayan terimlerin kaldırılmasını pekiştirir.
Uydurmaların nasıl çalıştığını anlamak ister misiniz? Yapay zekanın eğitim veri setinde bulunmayan var olmayan bir konu için içerik üretmesini isteyen bir istem düşünün. Örneğin - şu istemi denedim:
İstem: 2076 Mars Savaşı hakkında bir ders planı oluştur. Bir web araması bana Mars savaşları hakkında kurgusal anlatımlar (örneğin, televizyon dizileri veya kitaplar) olduğunu gösterdi — ancak 2076 yılında hiçbir şey yoktu. Sağduyu da 2076’nın gelecekte olduğunu ve dolayısıyla gerçek bir olayla ilişkilendirilemeyeceğini söylüyor.
Peki bu istemi farklı LLM sağlayıcılarıyla çalıştırdığımızda ne oluyor?
Yanıt 1: OpenAI Playground (GPT-35)
Yanıt 2: Azure OpenAI Playground (GPT-35)
Yanıt 3: : Hugging Face Chat Playground (LLama-2)
Beklendiği üzere, her model (veya model sürümü) rassal davranışlar ve model yeteneklerindeki farklılıklar nedeniyle biraz farklı yanıtlar üretiyor. Örneğin, bir model 8. sınıf seviyesini hedeflerken diğeriyse lise öğrencisini varsayıyor. Ancak üç model de, bilgi sahibi olmayan bir kullanıcıyı olayın gerçek olduğuna ikna edebilecek yanıtlar üretti.
Metaprompting ve sıcaklık yapılandırması gibi istem mühendisliği teknikleri, model uydurmalarını belli ölçüde azaltabilir. Yeni istem mühendisliği mimarisileri de, bu etkilerin bazılarını hafifletmek veya azaltmak amacıyla araçları ve teknikleri sorunsuz biçimde istem akışına entegre eder.
Bu bölümü kapatırken, gerçek dünyadaki çözümlerde istem mühendisliğinin nasıl kullanıldığını anlamak için bir vaka çalışmasına bakalım: GitHub Copilot.
GitHub Copilot, sizin "Yapay Zeka Ortak Programcınız"dır — metin istemlerini kod tamamlama haline dönüştürür ve geliştirme ortamınıza (ör. Visual Studio Code) entegre edilmiştir, böylece sorunsuz bir kullanıcı deneyimi sunar. Aşağıdaki blog dizisinde belgelenen üzere, ilk sürüm OpenAI Codex modeline dayanıyordu — mühendisler hızla modeli ince ayar yapma ve daha iyi istem mühendisliği teknikleri geliştirme ihtiyacını fark etti, böylece kod kalitesini artırdılar. Temmuz ayında, Codex’in ötesine geçen geliştirilmiş yapay zeka modelini tanıttılar, daha hızlı öneriler için.
Öğrenme yolculuklarını takip etmek için yazıları sırasıyla okuyun.
- Mayıs 2023 | GitHub Copilot, Kodunuzu Anlama Konusunda Daha İyi Oluyor
- Mayıs 2023 | GitHub’ın İçinden: GitHub Copilot’un Arkasındaki LLM’lerle Çalışmak
- Haziran 2023 | GitHub Copilot İçin Daha İyi İstemler Nasıl Yazılır
- Temmuz 2023 | GitHub Copilot, Geliştirilmiş Yapay Zeka Modeliyle Codex’in Ötesinde
- Temmuz 2023 | Bir Geliştiricinin İstem Mühendisliği ve LLM Rehberi
- Eylül 2023 | Bir Kurumsal LLM Uygulaması Nasıl Kurulur: GitHub Copilot’tan Dersler
Ayrıca, Mühendislik bloglarını gezerek, bu modellerin ve tekniklerin gerçek dünya uygulamalarını nasıl uygulandığını gösteren şu gibi daha fazla yazıya ulaşabilirsiniz.
İstem mühendisliğinin neden önemli olduğunu gördük — şimdi, daha etkili istem tasarımı için farklı teknikleri değerlendirebilmemiz adına, istemlerin nasıl oluşturulduğunu anlayalım.
Temel istemle başlayalım: modele başka bir bağlam verilmeden gönderilen bir metin girişi. Örneğin, ABD milli marşının ilk birkaç kelimesini OpenAI Tamamlama API’sine gönderdiğimizde, yanıtı anında bir sonraki birkaç satırla tamamlar, temel tahmin davranışını gösterir.
| İstem (Girdi) | Tamamlama (Çıktı) |
|---|---|
| Oh say can you see | Sanki ABD’nin milli marşı "The Star-Spangled Banner"ın sözlerini yazmaya başlamışsınız gibi geliyor. Tam sözler ... olarak nedir ... |
Şimdi o temel isteme bağlam ve talimat ekleyelim. Chat Tamamlama API, karmaşık bir istemi, şu bileşenlerden oluşan bir mesajlar koleksiyonu halinde oluşturmamıza izin verir:
- Kullanıcı girişi ve asistan yanıtını yansıtan giriş/çıkış çiftleri.
- Asistan davranışını veya kişiliğini belirleyen sistem mesajı.
İstek artık aşağıdaki biçimdedir, burada tokenizasyon bağlam ve sohbetten ilgili bilgileri etkili şekilde yakalar. Artık 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?"}
]
)Yukarıdaki örneklerde kullanıcı istemi, bilgi talebi olarak yorumlanabilecek sade bir metin sorgusuydu. Talimat istemleriyle, yapay zekaya görevi daha ayrıntılı belirtebilir ve daha iyi yol gösterici sağlayabiliriz. İşte bir örnek:
| İstem (Girdi) | Tamamlama (Çıktı) | Talimat Türü |
|---|---|---|
| İç Savaş ile ilgili bir açıklama yaz | basit bir paragraf döndürüldü | Basit |
| İç Savaş ile ilgili bir açıklama yaz. Önemli tarihleri ve olayları ver, önemlerini anlat | bir paragraf döndürdü ardından önemli olay tarihleri ve açıklamaları içeren bir liste | Karmaşık |
| İç Savaş hakkında 1 paragrafta açıklama yaz. 3 maddeyle önemli tarihleri ve önemlerini ver. 3 maddeyle önemli tarihi kişiler ve katkılarını anlat. Çıktıyı JSON dosyası olarak döndür | daha kapsamlı detaylar döndürür, dosyaya kopyalanıp doğrulanabilen JSON biçiminde | Karmaşık. Formatlı |
Yukarıdaki örneklerde, istem hâlâ oldukça açık uçluydu; modelin önceden eğitildiği veri setinden hangisinin ilgili olduğuna kendisi karar verebiliyordu. Birincil içerik tasarım kalıbında, giriş metni ikiye ayrılır:
- bir talimat (eylem)
- eylemi etkileyen ilgili içerik
Burada, talimatın "Bunu 2 cümlede özetle" olduğu bir örnek var.
| İstem (Girdi) | Tamamlama (Çıktı) |
|---|---|
| Jüpiter, Güneş’ten beşinci gezegen ve Güneş Sistemi’nin en büyüğüdür. Bir gaz devidir; kütlesi Güneş’in binde biri, ancak Güneş Sistemi’ndeki diğer tüm gezegenlerin toplam iki buçuk katıdır. Jüpiter, açık havada çıplak gözle görülebilen en parlak cisimlerden biridir ve antik uygarlıklar tarafından kayıtlı tarihten önce bilinmektedir. Roma tanrısı Jüpiter’in adını taşır.[19] Dünya’dan bakıldığında, yansıtılan ışığıyla gölgeler oluşturacak kadar parlak olabilir,[20] ve ay ve Venüs’ten sonra gece gökyüzündeki ortalama üçüncü en parlak doğal cisimdir. Bunu 2 kısa cümleyle özetle |
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 cisimlerden biridir. Roma tanrısı Jüpiter’in adını taşır, kütlesi Güneş Sistemi’ndeki diğer tüm gezegenlerin toplamının iki buçuk katıdır. |
Birincil içerik bölümü, daha etkili talimatlar için çeşitli yollarla kullanılabilir:
- Örnekler — modele ne yapacağını açık talimat vermek yerine, örnekler sunarak modeli istediğiniz desenleri çıkarmaya yönlendirin.
- İşaretler — talimatın ardından, tamamlama için modeli hedefe yönlendiren bir "işaret" ekleyin.
- Şablonlar — değişkenlerle (placeholders) tanımlanmış "tarifler" olan tekrar kullanılabilir istemlerdir; belirli kullanım durumlarında veriyle özelleştirilebilir.
Şimdi bunları uygulamalı inceleyelim.
Bu yöntem, birincil içeriği modele talimat verilen çıktı örnekleri vermek ve böylece modelin istenen çıktı modelini çıkarmasına olanak tanımaktır. Verilen örnek sayısına göre sıfır atışlı, tek atışlı, az sayıda örnekli istemler yapılabilir.
İstem artık üç bileşenden oluşur:
- Bir görev tanımı
- İstenen çıktının birkaç örneği
- Yeni örneğin başlangıcı (dolaylı görev tanımı olur)
| Öğrenme Türü | İstem (Girdi) | Tamamlama (Çıktı) |
|---|---|---|
| Sıfır Atışlı | "The Sun is Shining". İspanyolcaya çevir | "El Sol está brillando". |
| Tek Atışlı | "The Sun is Shining" => ""El Sol está brillando". "It's a Cold and Windy Day" => |
"Es un día frío y ventoso". |
| Az Örnekli | Oyuncu koşuları tamamladı => Beyzbol Oyuncu as vuruşu yaptı => Tenis Oyuncu altı sayı yaptı => Kriket Oyuncu smaç yaptı => |
Basketbol |
Görüyorsunuz, sıfır atışta açık talimat ("İspanyolcaya çevir") vermek gerekirken, tek atışta bu örneklerden çıkarılıyor. Az örnekli ise hiç talimat vermeden, daha fazla örnek ekleyerek modeli daha doğru çıkarımlar yapmaya yönlendiriyor.
Birincil içerikten yararlanmanın bir diğer yöntemi de örnekler yerine işaretler sağlamaktır. Burada, model uygun yanıt biçimini yansıtan bir parçayla başlatılır, böylece model o biçimde devam eder.
| İşaret 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. Bir gaz devidir; kütlesi Güneş’in binde biri, ancak Güneş Sistemi’ndeki diğer tüm gezegenlerin toplam iki buçuk katıdır. Jüpiter, açık havada çıplak gözle görülebilen en parlak cisimlerden biridir ve antik uygarlıklar tarafından kayıtlı tarihten önce bilinmektedir. Bunu Özetle |
Jüpiter, Güneş Sistemi’nin en büyük gezegeni ve Güneş’ten beşinci gezegendir. Kütlesi Güneş’in binde biri olsa da, diğer tüm gezegenlerden daha ağırdır. Antik uygarlıklar Jüpiter’i uzun zamandır bilmektedir ve gece gökyüzünde kolayca görülür. |
| 1 | Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'ndeki en büyüğüdür. Kütlesi Güneş'in binde biri kadar olan bir gaz devi olup, Güneş Sistemi'ndeki diğer tüm gezegenlerin birleşik 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 kayıtlı tarihten önceki antik uygarlıklar tarafından bilinmektedir. Bunu Özetle Öğrendiklerimiz şudur: Jüpiter |
Güneş'ten beşinci gezegen ve Güneş Sistemi'ndeki en büyüğüdür. Kütlesi Güneş'in binde biri kadar olan bir gaz devidir, ancak diğer tüm gezegenlerin birleşik kütlesinin iki buçuk katıdır. Çıplak gözle kolayca görülebilir ve antik zamanlardan beri bilinmektedir. |
| 2 | Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'ndeki en büyüğüdür. Kütlesi Güneş'in binde biri kadar olan bir gaz devi olup, Güneş Sistemi'ndeki diğer tüm gezegenlerin birleşik 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 kayıtlı tarihten önceki antik uygarlıklar tarafından bilinmektedir. Bunu Özetle Öğrendiğimiz İlk 3 Gerçek: |
1. Jüpiter, Güneş'ten beşinci gezegen ve Güneş Sistemi'ndeki en büyüğüdür. 2. Kütlesi Güneş'in binde biri kadar olan bir gaz devidir... 3. Jüpiter antik çağlardan beri çıplak gözle görünür durumdadır ... |
Bir ipucu şablonu, ölçeklenebilir şekilde daha tutarlı kullanıcı deneyimleri sağlamak için gerektiğinde saklanıp yeniden kullanılabilen _önceden tanımlanmış ipucu reçetesi_dir. En basit haliyle, OpenAI'nın bu örneğinde olduğu gibi, hem etkileşimli ipucu bileşenlerini (kullanıcı ve sistem mesajları) hem de API tabanlı istek formatını sağlayan bir ipucu örnekleri koleksiyonudur - yeniden kullanımı desteklemek amacıyla.
Daha karmaşık bir biçimde, LangChain'in bu örneğinde olduğu gibi, çeşitli kaynaklardan (kullanıcı girişi, sistem bağlamı, harici veri kaynakları vb.) alınan verilerle dinamik olarak bir ipucu oluşturmak için değiştirilebilen yer tutucular içerir. Bu da, sürekli kullanımla tutarlı kullanıcı deneyimleri sağlamak için programatik olarak kullanılabilen yeniden kullanılabilir ipucu kütüphaneleri oluşturmayı mümkün kılar.
Son olarak, şablonların gerçek değeri, bir uygulama alanına özgü bağlam veya örnekler içerecek şekilde uyarlanmış ve yayımlanmış ipucu kütüphaneleri yaratma yeteneğinde yatar - böylece yanıtlar hedeflenen kullanıcı kitlesi için daha alakalı ve doğru olur. Prompts For Edu deposu, ders planlaması, müfredat tasarımı ve öğrenci eğitimi gibi önemli hedeflere odaklanarak eğitim alanına yönelik bir ipucu kütüphanesi derleyen harika bir örnektir.
Eğer ipucu yapısını bir talimat (görev) ve hedef (birincil içerik) olarak düşünürsek, ikincil içerik ise çıktıyı bir şekilde etkilemek amacıyla 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 taksonomileri vb. olabilir.
Örneğin: Müfredattaki tüm mevcut kursların ayrıntılı meta verilerine (isim, açıklama, seviye, meta veri etiketleri, eğitmen vb.) sahip bir kurs kataloğu göz önüne alındığında:
- "2023 Güz dönemi kurs kataloğunu özetle" şeklinde bir talimat belirleyebiliriz
- İstenen çıktı için birkaç örnek sağlayan birincil içerik kullanabiliriz
- İlgi çekici en iyi 5 "etiketi" belirlemek için ikincil içerik kullanabiliriz.
Böylece model, birkaç örnekle gösterilen formatta bir özet sunabilir - ancak bir sonuçta birden fazla etiket varsa, ikincil içerikte belirttiğimiz 5 etiketi önceliklendirebilir.
İpucu nasıl oluşturulacağını öğrendiğimize göre, onları tasarlamaya ilişkin en iyi uygulamaları düşünmeye başlayabiliriz. Bunu iki kısımda düşünebiliriz - doğru _zihin yapısı_na sahip olmak ve doğru teknikleri uygulamak.
İpucu mühendisliği, deneme-yanılma sürecidir; bu nedenle üç geniş rehber faktörü aklınızda tutun:
-
Alan Bilgisi Önemlidir. Yanıt doğruluğu ve alaka, uygulamanın veya kullanıcının faaliyet gösterdiği alan ile ilişkilidir. Sezgilerinizi ve alan uzmanlığınızı kullanarak teknikleri özelleştirin. Örneğin, sistem ipuçlarında alana özgü kişilikler tanımlayın veya kullanıcı ipuçlarında alan bazlı şablonlar kullanın. Alan bağlamlarını yansıtan ikincil içerik sağlayın veya modeli tanıdık kullanım kalıplarına yönlendirmek için alan özel ipuçları ve örnekler kullanın.
-
Modeli Anlamak Ö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 (ör., API veya SDK üzerinden) ve optimize edildikleri içerik türü (ör., kod vs. görüntü vs. metin) açısından farklılık gösterebilir. Kullandığınız modelin güçlü ve zayıf yanlarını anlayın ve bu bilgiyi görev önceliklendirmesi veya model yeteneklerine optimize edilmiş özelleştirilmiş şablonlar oluşturmak için kullanın.
-
Yineleme ve Doğrulama Önemlidir. Modeller hızla gelişiyor, ipucu mühendisliği teknikleri de öyle. Alan uzmanı olarak, sizin belirli uygulamanızla ilişkili farklı bağlam veya kriterleriniz olabilir; bunlar genel topluluk için geçerli olmayabilir. İpucu mühendisliği araçları ve tekniklerini kullanarak ipucu oluşturmaya "hızlı başlangıç" yapın, ardından kendi sezgileriniz ve uzmanlığınızla sonuçları yineleyin ve doğrulayın. Gözlemlerinizi kaydedin ve başkalarının daha hızlı yinelemeler yapabileceği bir bilgi tabanı (ör., ipucu kütüphaneleri) oluşturun.
Şimdi, OpenAI ve Azure OpenAI uzmanlarının önerdiği yaygın en iyi uygulamalara bakalım.
| Ne | Neden |
|---|---|
| En yeni modelleri değerlendirin | Yeni model nesilleri muhtemelen daha gelişmiş özellikler ve kalite sunar - ancak maliyeti de artabilir. Etkisini değerlendirin ve ardından geçiş kararları verin. |
| Talimatları ve bağlamı ayırın | Modelinizin/sağlayıcınızın talimatları, birincil ve ikincil içerikleri daha net ayırmak için sınırlayıcılar tanımlayıp tanımlamadığını kontrol edin. Bu, modelin tokenlara daha doğru ağırlık vermesine yardımcı olabilir. |
| Spesifik ve net olun | İstenen bağlam, çıktı, uzunluk, format, stil vb. hakkında daha fazla ayrıntı verin. Bu, yanıt kalitesi ve tutarlılığını artırır. Tarifleri yeniden kullanılabilir şablonlarda kaydedin. |
| Betimleyici olun, örnekler kullanın | Modeller, "göster ve anlat" yaklaşımına daha iyi yanıt verebilir. Önce talimat (örneksiz, sıfır vuruş) verip sonra birkaç örnek (az vuruş) ile rafine etmeyi deneyin. Analoji kullanın. |
| Yanıtları başlatmak için ipuçları kullanın | Yanıt için başlangıç olarak kullanılabilecek bazı öncü kelime veya ifadeler vererek modeli istenen sonuca yönlendirin. |
| Tekrarlayın | Bazen modeli tekrarlamanız gerekebilir. Talimatları birincil içerikten önce ve sonra verin, talimat ve ipucunu birlikte kullanın vb. Ne işe yaradığını görmek için yineleyin ve doğrulayın. |
| Sıra Önemlidir | Bilgiyi modele sunma sırası çıktıyı etkileyebilir; öğrenme örneklerinde bile, yakınlık önceliği nedeniyle. En iyi sonucu görmek için farklı seçenekleri deneyin. |
| Modele bir “çıkış” verin | Modelin görevi tamamlayamadığında verebileceği bir geri dönüş yanıtı sağlayın. Bu, modelin yanlış veya uydurma yanıtlar üretme olasılığını azaltabilir. |
Herhangi bir en iyi uygulamada olduğu gibi, sizin deneyiminiz model, görev ve alana göre farklılık gösterebilir. Bunları başlangıç noktası olarak kullanın ve size en uygun olanı bulmak için yineleyin. Yeni modeller ve araçlar kullanılabilir hale geldikçe, süreç ölçeklenebilirliğine ve yanıt kalitesine odaklanarak ipucu mühendisliği sürecinizi sürekli yeniden değerlendirin.
Tebrikler! Dersin sonuna geldiniz! Şimdi bu kavramlar ve tekniklerin bazılarının gerçek örneklerle test edilme zamanı!
Ödevimiz için, etkileşimli olarak tamamlayabileceğiniz egzersizler içeren bir Jupyter Not defteri kullanacağız. Kendi fikirlerinizi ve tekniklerinizi keşfetmek için not defterini Markdown ve Kod hücreleri ile genişletebilirsiniz.
- (Önerilen) GitHub Codespaces’i başlatın
- (Alternatif) Repositoriyi yerel aygıtınıza klonlayın ve Docker Desktop ile kullanın
- (Alternatif) Tercih ettiğiniz Not defteri çalışma zaman ortamı ile Not defterini açın.
- Depo kökündeki
.env.copydosyasını.envolarak kopyalayın veAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTveAZURE_OPENAI_DEPLOYMENTdeğerlerini doldurun. Nasıl yapacağını öğrenmek için Öğrenme Kum Havuzu bölümü'ne geri dönün.
- Çalışma zamanı çekirdeğini seçin. 1 veya 2. seçenek kullanılıyorsa, geliştirme konteynerinin sağladığı varsayılan Python 3.10.x çekirdeğini seçmeniz yeterlidir.
Egzersizleri çalıştırmaya hazırsınız. Burada doğru ya da yanlış cevaplar yoktur - sadece deneme-yanılma yoluyla seçenekleri keşfetmek ve belirli bir model ve uygulama alanı için neyin işe yaradığını sezmek amaçlanmıştır.
Bu nedenle ders içinde Kod Çözüm bölümleri yoktur. Bunun yerine, Not defteri "Çözümüm:" başlıklı Markdown hücreleri içerir ve referans için tek bir örnek çıktı gösterir.
Aşağıdakilerden hangisi makul bazı en iyi uygulamaları takip eden iyi bir ipucudur?
- Bana kırmızı bir arabanın resmini göster
- Bana kırmızı Volvo marka XC90 model bir arabanın güneş batarken bir uçurum kenarında park edilmiş resmini göster
- Bana kırmızı Volvo marka XC90 model bir arabanın resmini göster
Cevap: 2, çünkü hem "ne" olduğu hakkında detay verir hem de çevreyi tanımlar (sadece herhangi bir araba değil, belirli bir marka ve model). 3 ise oldukça açıklayıcı olduğu için ikinci en iyisidir.
"İpucu" tekniğini kullanarak şu ipucu ile deneyin: Cümleyi tamamla "Bana kırmızı Volvo marka bir arabanın ... göster". Model ne yanıt veriyor ve siz bunu nasıl geliştirirsiniz?
Farklı İpucu Mühendisliği kavramları hakkında daha fazla bilgi edinmek ister misiniz? Bu konudaki diğer harika kaynakları bulmak için devam eden öğrenme sayfasına gidin.
Devamında, 5. Derse gidin; burada ileri ipucu tekniklerine bakacağız!
Feragatname: Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık 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 ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.







