Yapay zekayla çalışmak

İleri istem teknikleri

İleri istem teknikleri beş basamaklı bir merdivendir: örneksiz, örnekli, düşünce zinciri, yapılandırılmış çıktı ve sistem istemi. Üst basamak daha iyi değil, daha fazladır; ve bugünün akıl yürüten modellerinde üreticilerin kendi yönergeleri üçüncü basamağa çoğunlukla çıkılmaması gerektiğini söylüyor.

  • Ders 4 / 15
  • Orta
  • Ücretsiz, kayıt yok

Beş basamak, alttan yukarı

Her basamak isteme bir şey ekler. Hiçbiri altındaki basamağın yerini almaz ve hiçbiri tek başına uzmanlık işareti değildir.

  1. 1

    Örneksiz

    Yalnızca sorarsınız. Gerçek işlerin beşte dördü tam burada biter.

  2. 2

    Örnekli

    İki ila beş doğru örnek. İşin biçimi tarif edilmekten kolay görüldüğünde.

  3. 3

    Düşünce zinciri

    Yanıttan önceki adımlar. Bugün akıl yürütmeyi iyileştirmekten çok görmeye yarıyor.

  4. 4

    Yapılandırılmış çıktı

    Bir programın okuyabileceği sabit biçim. Kaliteyi ölçülebilir kılan tek basamak.

  5. 5

    Sistem istemi

    Kalıcı kurallar, bir kez. Genellikle uyulan bir kuraldır, bir duvar değil.

Üçüncü basamak bugünün akıl yürüten modellerinde çoğunlukla gereksizdir ve üreticilerin kendi yönergeleri bunu söylüyor. Sayfa metni ikisinin de kaynağını veriyor.

Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.

Bu beş basamak nedir ve üst basamak ne demek

Bu dersteki beş tekniğin hepsi tek bir şey yapar: isteme, orada olmayan bir şey ekler. Örneksiz, yalnızca sormak demektir. Örnekli, birkaç doğru girdi ve çıktı çiftini de koymak demektir. Düşünce zinciri, yanıttan önce adımları istemek demektir. Yapılandırılmış çıktı, yanıtın biçimini bir programın okuyabileceği şekilde sabitlemek demektir. Sistem istemi ise her mesaja uygulanan ve her seferinde tekrarlanmayan kurallar demektir.

Çoğu anlatımın kaçırdığı nokta şu: bu merdiven bir kalite ölçeği değil. Üst basamak daha iyi bir yanıt vermez, daha büyük bir istem yapar. Çıktığınız her basamak üç şey ekler: token, gecikme ve yanlış olabilecek bir şey daha. Kendi kurallarınızla çelişen bir örnek, örneksizlikten kötüdür.

Yani çalışma kuralı şu: birinci basamaktan başlayın ve ancak bir çıktı size nerede yetersiz kaldığını gösterdiğinde çıkın. Gerçek işteki her beş istemin dördü birinci basamakta kalır ve bu, acemilik işareti değildir.

İleri istem teknikleri: beş basamak ve her birinin yeri

Örnek vermek: kaç tane yeter ve ne zaman ters teper

Few shot terimi, OpenAI'ın 2020 tarihli "Language Models are Few-Shot Learners" başlıklı makalesinden geliyor ve fikri basit: işi tarif etmek yerine ondan birkaç örnek gösterin. Biçimi tarif edilmekten kolay görülen işlerde bu basamak gerçekten işe yarar: sınıflandırma, ton ve ayrıntısı çok olan her kalıp.

Gerçek bir örnek. Gelen müşteri mesajlarını dört kovaya ayırmak istediğinizi varsayın. Örneksizken istem "bu mesajı şu dört kovadan birine koy" der; model çoğunu doğru yapar ve sınırdakilerde kendi kafasına göre davranır. Örnekliyken o sınırdakileri siz seçersiniz:

Mesaj: Merhaba, 123 numaralı sipariş dün geldi ama kutu ezikti. İçindeki ürün sağlam.
Kova: şikayet

Mesaj: 123 numaralı sipariş ne zaman gelir, söyleyebilir misiniz?
Kova: sipariş durumu

Mesaj: Merhaba. Geçen aldığımdan üç tane daha istiyorum.
Kova: yeni sipariş

Bu üç satırın değeri, yazıya dökemediğiniz şeyde: "kutu ezik, ürün sağlam" durumunun yine de şikayet sayılması genel bir kural değil, sizin kararınız. Örnekler tam da o sınır kararlarını taşır.

Kaç tane olacağına gelince, sihirli bir sayı yok ve size bir sayı veren kişi tahmin yürütüyordur. OpenAI'ın akıl yürüten modeller için kendi yönergesi önce örneksiz denemeyi, gerekirse örnek eklemeyi söylüyor ve aynı sayfada örneklerin yönergelerle sıkı sıkıya uyuşması gerektiği uyarısını yapıyor; çünkü ikisi arasındaki tutarsızlık kötü çıktı üretiyor.

Örneklerin ters teptiği üç yer: hepsi tek bir kovadan geldiğinde model o dağılımı kopyalar; bir örnek kendi kurallarınızdan biriyle çeliştiğinde model kurala değil örneğe inanır; ve örnekler gerçek müşteri verisinden alındığında, o veri bundan sonra her çalıştırmada birlikte yolculuk eder.

Düşünce zinciri nereden geldi ve bugün neden daha az gerekiyor

Ocak 2022'de Google araştırmacılarından "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" başlıklı bir makale çıktı. İddiası şuydu: örnekleriniz yanıta giden ara adımları da gösterirse, yeterince büyük modeller aritmetik ve mantık problemlerinde daha iyi sonuç veriyor. "Adım adım düşün" ifadesi bütün anlatımlara o makaleden girdi.

Yaklaşık beş yıl sonra üreticilerin kendi yönergeleri başka bir şey söylüyor. OpenAI'ın akıl yürüten modellerden en iyi verimi almaya dair sayfası, istemleri sade ve doğrudan tutmayı ve düşünce zinciri istemlerinden kaçınmayı söylüyor; çünkü bu modeller akıl yürütmeyi içeride yapıyor ve onlara adım adım düşünmelerini söylemek gereksiz. Anthropic'in genişletilmiş düşünme belgeleri de betimleyici adımlar yerine genel yönergeleri tercih etmeyi söylüyor: "iyice düşün" gibi bir istem, çoğu zaman elle yazılmış adım adım bir plandan daha iyi akıl yürütme üretiyor.

Yani teknik yanlış hale gelmedi; yer değiştirdi. Modelin içine girdi. İki yer onu hâlâ istiyor: iç akıl yürütmesi olmayan daha küçük ve eski modeller ve adımları tartışabilmek için görmek istediğiniz her durum. İkincisi iyi bir gerekçedir ve gerekçesi yanıt kalitesi değil denetimdir.

Nadiren okuyacağınız bir uyarı: modelin yazdırdığı adımlar, içinde olup bitenin raporu değildir. O metin de geri kalan metinle aynı yolla üretildi. Yanıt doğru olup adımlar alakasız olabilir ya da adımlar ikna edici olup yanıt yanlış olabilir. Onu size sunulan bir açıklama sayın, damgalı bir makbuz değil. Bu bizim tutumumuz ve büyük dil modeli dersinde anlatılan mekanizmadan çıkıyor.

Sayfanın üstündeki tarihi ciddiye alın. Burada hızla dönen şey tam da üretici yönergeleridir ve bu paragraf, bir yıl sonra yarısı yanlış olabilecek türden bir iddiadır.

Düşünce zinciri: nerede hâlâ değer, nerede sadece token

Tek bir teknik, tümüyle farklı iki kullanım. Biri sönüyor, diğeri sönmüyor.

Yanıtı iyileştirmek için

  • Bugünün akıl yürüten modellerinde çoğunlukla gereksiz
  • İki üreticinin yönergesi istemi sade tutmayı söylüyor
  • Daha küçük ve eski modellerde hâlâ yardımcı olur
  • Token ve gecikme ekler, bazen sonucu kötüleştirir

Akıl yürütmeyi görmek için

  • Bir yanıtın nereden geldiğini görmeniz gerektiğinde
  • Çok adımlı bir işin tam olarak nerede bozulduğunu bulmak için
  • Yanıtı başkasına açıklamanız gerektiğinde
  • Bu kullanım modeller iyileştikçe sönmez

İkinci sütunda bile yazdırılan adımlar, modelin içinde olanın raporu değildir. Size sunulan bir açıklamadır.

Yapılandırılmış çıktı: yanıt bir programa girecekse

Gerçek işte neredeyse her zaman kendini amorti eden tek basamak budur ve nedeni metin kalitesi değil: sabit biçimli bir yanıt makineyle denetlenebilir. Çıktı akıcı bir paragraf olduğu sürece onu değerlendirmenin tek yolu okumaktır. Çıktı adlandırılmış anahtarları olan bir kayıt olduğunda, beş satır kod size hangi kaydın bozuk olduğunu söyler.

Bunu almanın iki yolu var ve aralarındaki fark önemli. Birincisi biçimi istemde istemek ve ummak. İkincisi üreticilerin bunun için kurduğu, çıktıyı belirli bir şemaya bağlayan kipi kullanmak; Anthropic ve Google bunun için ayrı belgeler tutuyor. Bir API üzerinden çalışıyorsanız ikincisini seçin. Sohbet penceresinde çalışıyorsanız birincisi tek seçeneğinizdir ve o zaman çıktıyı denetlemek tek garantinizdir.

Farsça ve Arapça yazanlara özgü, hiçbir İngilizce belgede bulamayacağınız bir tuzak: kurallarınız "1 ile 3 arasında bir sayı" ifadesini o dillerin rakamlarıyla yazarsa, model de o rakamlarla yanıtlayabilir ve çıktı geçerli JSON olmaktan çıkar, çünkü JSON yalnızca Latin rakamlarını kabul eder. Çözümü tek cümle: kuralda rakamların Latin olacağını söyleyin. Bunu aşağıdaki reçeteye koyduk.

Ve tekniğin kendisinden değerli bir alışkanlık: yapılandırılmış bir çıktının, geri alınması zor bir şeyi doğrudan yapmasına asla izin vermeyin. Müşteriye e-posta göndermek, iade kaydı açmak, fiyat değiştirmek. Çıktı ile eylem arasına bir insan koyun; en azından yüz gerçek kayıtta denemiş olana kadar.

Sistem istemi: her seferinde tekrarlamadığınız kurallar

Sistem istemi, işinizin kalıcı kurallarının durduğu ve o konuşmadaki her mesaja uygulanan yerdir. API'de ayrı bir parametredir ve Anthropic bunun için ayrı bir belge sayfası tutar. Sohbet ürünlerinde ise özel yönergeler ya da proje yönergeleri gibi adlarla karşınıza çıkan şeydir.

Oraya ait olanlar: kim olduğunuz ve kimin için yazdığınız, hiç değişmeyen kısıtlar ve asla madde işaretli liste istememek gibi çıktı gelenekleri. Oraya ait olmayanlar: tek bir işin ayrıntıları, her istekte değişen her şey ve elbette hiçbir parola veya anahtar.

Çoğu anlatımda bulunmayan bir nokta: sistem istemi bir güvenlik sınırı değildir. Modelin genellikle uyduğu bir kuraldır, hiçbir şeyin geçemediği bir duvar değil. Bir sonraki mesajınızda yapıştırdığınız metin, bir web sayfasının içeriği ya da bir müşteri mesajı, içinde kurallarınızla çelişen bir yönerge taşıyabilir. Bu sayfanın aşağısındaki blokta doğru adıyla anılan şey budur.

Bu teknikleri nereye koymamalı

Merdivene çıkmanın yalnızca maliyet olduğu dört durum var. Birincisi tek seferlik iş: bir kez yaptığınız şey örneklere, bir şemaya ve sistem istemine değmez; sorun, yanıtı okuyun, bitti. İkincisi sorun bilgi eksikliğiyken: doğru yanıt modelin sahip olmadığı bir veriye ihtiyaç duyuyorsa hiçbir basamak onu yaratmaz ve çözüm veriyi vermektir.

Üçüncüsü çıktı bir programa değil bir insana gidiyorken. Yapılandırılmış çıktı orada yalnızca sürtünme ekler ve metni katılaştırır. Dördüncüsü ve en büyüğü: sonucu denetleyecek hiçbir yolunuz yokken. Daha çok teknik, yanlış bir yanıtı daha kendinden emin ve daha düzenli gösterir; bu da onu daha tehlikeli yapar. Doğru bir çıktının neye benzediğini söyleyemiyorsanız, önce onu çözün.

Tekrarlamaya değer bir özet: bu beş basamaktan gündelik işte getirisi en yüksek olanı yapılandırılmış çıktıdır, çünkü kaliteyi ölçülebilir kılan tek basamak odur. Diğerleri kaliteyi değiştirir, ölçmeyi olduğu yerde bırakır.

Nerede teknik eklemeli, nerede durmalı

İkinci sütun daha önemli. Aşırı karmaşık istemlerin çoğu, kimse onu okumadığı için var.

İstem karar sayfasımerdivene çıkmadan önce

Teknik ekleyin

  • Aynı iş onlarca kez çalışacak
  • Yazıya dökmesi zor sınır kararlarınız var
  • Çıktı bir programa ya da tabloya girecek
  • Her seferinde yeniden yazdığınız kalıcı kurallarınız var

Burada durun

  • İş tek seferlik
  • Sorun bilgi eksikliği, istem biçimi değil
  • Çıktıyı bir program değil bir insan okuyor
  • Sonucun doğruluğunu denetleyecek bir yolunuz yok

Bunların hiçbiri katı bir yasa değil. Durumunuz iki sütuna da uyuyorsa, sade olanı seçin.

Yapay zekayla hızlı yol

Bu beş basamağın en hızlı profesyonel biçimi, dördüncüsünün neredeyse hiçbir anlatımın söylemediği bir şeyle birleşmesidir: modelin ilk seferde doğru olması gerekmez. Biçimi istersiniz, çıktıyı mekanik bir denetimle okursunuz ve hata listesini olduğu gibi geri verirsiniz ki yalnızca bozuk kayıtları yeniden kursun. Elle düzeltmeye karşı fark on kayıtta görünmez, iki yüz kayıtta bir öğleden sonra ile bir hafta arasındaki farktır.

  1. Çıktı biçimini tarif etmek yerine bir kez doldurulmuş olarak yazın. Bütün anahtarları olan bir örnek kayıt, o örnekte boş kalan anahtarlar dahil.
  2. Aynı biçimi bütün girdileriniz için isteyin ve başka hiçbir şey yazılmaması gerektiğini açıkça söyleyin. Bu tur mekanik iştir ve hızlı ucuz bir model genellikle yeter.
  3. Çıktıyı mekanik bir denetimle okuyun; o denetim yalnızca bir json.loads olsa bile. Makineyle denetleyemediğiniz şey pratikte yapılandırılmış değildir.
  4. Hata listesini kayıt kimlikleriyle geri verin ve yalnızca o kayıtları yeniden isteyin. Genellikle tek bir onarım turu yeter; ikinci tur da hata veriyorsa kusur modelde değil, istediğiniz biçimdedir.
  5. Son adım sizin. Mekanik denetim biçimi doğrular, doğruluğu asla; kayıtlardan rastgele bir örneklemi kendiniz okuyun.

Kopyalamaya hazır şablon

Birinci bölüm, çıkarım:

Aşağıdaki her metinden bu aynı kaydı kur ve başka hiçbir şey yazma.

Kayıt biçimi, tam olarak bu anahtarlar ve bu sıra:
{"id": "m-001", "kova": "sikayet|siparis_durumu|yeni_siparis|diger", "aciliyet": 2, "ozet": "tek cümle, en fazla on beş kelime", "telefon": null}

Kurallar:
- "aciliyet" 1 ile 3 arasında bir sayıdır, Latin rakamlarıyla. Başka rakam biçimi kullanma, çünkü JSON kabul etmez.
- 3, müşterinin bugün yanıt beklediği anlamına gelir.
- Metinde telefon numarası yoksa "telefon" değerini null bırak ve numara uydurma.
- Bir metin dört kovadan hiçbirine uymuyorsa "diger" kullan ve nedenini "ozet" içinde söyle.

Çıktı: yalnızca bir JSON dizisi. Yorum yok, kod bloğu yok, öncesinde ve sonrasında metin yok.

Metinler:
{her metin bir satırda, başında kimliğiyle}


İkinci bölüm, onarım (denetim çalıştıktan sonra):

Bu senin çıktındı ve bunlar denetleyicinin bulduğu hatalar:
{hata listesi, her biri kayıt kimliği ve nedeniyle}

Yalnızca o bozuk kayıtları aynı biçim ve aynı kurallarla yeniden ver. Geçen kayıtları tekrar gönderme ve başka bir şey yazma.

Çıktıya güvenmeden önce: Mekanik denetim biçimi doğrular, doğruluğu değil. Bir kayıt kusursuz biçimli ve tümüyle yanlış olabilir; özellikle o aciliyet sayısı, modelin bilmesine imkân olmayan bir yargıdır. Bu çıktı bir şeye bağlanmadan önce rastgele bir örneklemi kendiniz okuyun ve bir kaydın, geri alınması zor bir şeyi doğrudan yapmasına asla izin vermeyin.

Bu işte yapay zeka

Burada asıl önemli soru şu: hangi model tek bir sabit biçimi arka arkaya yirmi kayıt boyunca koruyor? Bu, hangi modelin daha akıllı olduğu sorusuyla aynı değildir ve kullandığımız hiçbir sıralama tablosu bunu ölçmez. Kendi sıralama ölçütlerimiz de öyle: arena puanı, dolar başına puan, bağlam penceresi, araç olgunluğu ve İrandan erişim. Hiçbiri yönergeye bağlılık değil. Dürüst yanıt şu: bunu bir saatte kendiniz ölçersiniz; yirmi gerçek girdi, tek bir sabit şema ve biçimden çıkan kayıtların sayımı. Bundan çıkan sayı, işiniz için herhangi bir sıralamadan değerlidir.

Gerçekten işe yarayan araçlar

  • Claude Dördüncü basamak için ayrı belgeler tutar ve çıktıyı bildirilmiş bir şemaya bağlar; bu, biçimi istemin içinde istemekten farklı bir şeydir. İran, Anthropic'in iki desteklenen ülke listesinin hiçbirinde yok; bunu Anthropic'in kendi sayfasında okuduk.
  • Gemini O da yapılandırılmış çıktı kipini belgeliyor ve istem kılavuzu üçü içinde en açık olanı. Google'ın kendi sayfası Gemini web uygulamasının 230'dan fazla ülke ve bölgede çalıştığını söylüyor ve İran o listede yok.
  • ChatGPT En yaygın seçim ve akıl yürüten model kılavuzu, bu dersin düşünce zinciri ile örneklere dair iki iddiasının kaynağı. İrandan erişim hakkında bir iddiada bulunmuyoruz: OpenAI'ın ana alan adı bu sunucuya erişim hatası döndürüyor.

Nerede geri teper

Bu tekniklerdeki somut riskin bir adı var: istem enjeksiyonu. İsteminiz sizin yazmadığınız bir metni içine aldığı anda, bir web sayfasının içeriği, bir belge ya da yukarıdaki reçetenin üzerinde çalıştığı müşteri mesajı, o metnin içinde duran bir yönerge modelin davranışını değiştirebilir. OWASP vakfı bunu, dil modelleri üzerine kurulu uygulamalar için hazırladığı on riskin başına koyuyor ve böyle bir yönergenin insan tarafından okunabilir olmasının gerekmediğini, modelin ayrıştırmasının yettiğini açıkça söylüyor. Çözüm, sistem istemine yazılacak sihirli bir cümle değil; çünkü o bir kuraldır, duvar değil. Pratik çözüm üç şey: model çıktısını geri alınması zor bir şeye asla doğrudan bağlamayın, her anahtarı ve parolayı istemin dışında tutun ve bilinmeyen metni, içinde bir yönerge olabileceğini varsayarak okuyun. İkinci risk daha sessiz: bir kayıt biçim olarak kusursuz, içerik olarak tümüyle uydurma olabilir ve yapı, yanlışlığı derli toplu ve ikna edici gösterir.

Kaynaklar: OWASP: LLM01 prompt injection Anthropic: structured outputs Anthropic: system prompts Google: structured output with Gemini

Bu tavsiyenin sınırı

Bu sayfanın söyledikleri her zamankinden kısa ömürlü ve bunu gizlememek daha iyi: düşünce zinciri bölümü iki üreticinin yönergesine dayanıyor ve hızla dönen şey tam da üretici yönergeleri. Ayrıca bu beş tekniğin hiçbirini bu sunucuda ölçmedik; elimizde olan makaleler ve üreticilerin kendi belgeleri ve hepsinin bağlantısı var. Üçüncüsü, bu dersin tamamı metin modelleriyle ilgili, bir sohbet penceresi ya da API üzerinden; görüntü modelleri için bu basamakların hiçbiri bir anlam taşımaz. Son olarak bu sayfa hangi modelin daha itaatkâr olduğunu söylemez, çünkü kendi sıralamamız bunu ölçmez; kaynaklarıyla ölçtüğümüz şey sohbet botu sıralamasında, kod işi için de kodlama modeli sıralamasında duruyor.

Kendi işimizden

Okuduğunuz öğrenme bölümünün kendisi dördüncü basamağın bir örneği. Her ders sabit biçimli bir veri dosyasıdır ve sayfa daha kurulmadan üzerinden bir doğrulayıcı geçer; o doğrulayıcı 23 ret kuralı taşır: eksik bir sınır bloğundan ölü bir iç bağlantıya, kaynaksız bir sayı gösteren bir grafiğe kadar. Neden bu kadar katı: bu sitenin yapay zeka bölümünde çok dilli bir alan bir kez dört dilli dizi yerine düz bir metin olarak yazıldı ve sonuç, İngilizce sayfalarda basılan Farsça metin oldu. Bunu hiçbir istemdeki hiçbir yönerge engellemedi; engelleyen şey, düz metni reddeden üç satırlık bir koşuldu. Kendi işiniz için pratik ders yukarıdaki reçetedeki ders: biçimi isteyin, sonra biçimi denetleyin.

Gerçek devam soruları

Örnekli istem için kaç örnek yeterli?

Sabit bir sayı yok ve bir yerde okuduğunuz her sayı bir tahmindi. OpenAI yönergesi önce örneksiz denemeyi, gerekirse örnek eklemeyi söylüyor. Pratik yöntem: ikiyle başlayın, her seferinde bir tane ekleyin ve test girdilerinizde çıktının değişip değişmediğine bakın. Bir örnek daha eklemenin hiçbir şeyi değiştirmediği yer, yanıtınızdır.

Sistem istemi ile aynı cümleyi mesajın başına yazmak arasındaki fark ne?

Kalıcılık. Bir mesaja yazdığınız cümle o mesaja aittir; sistem istemi ise konuşmadaki her mesaja uygulanır ve onu yeniden yazmazsınız. Sohbet ürünlerinde aynı şey özel yönergeler ya da proje yönergeleri adıyla yapılır. Ne var ki ikisi de bir güvenlik sınırı değildir ve sonradan yapıştırdığınız metin tam tersini isteyebilir.

Hâlâ "adım adım düşün" yazmalı mıyım?

Model içeriden akıl yürütüyorsa üreticilerin kendi yönergeleri hayır diyor ve istemi sade tutmanızı söylüyor. Daha küçük ya da eski bir modeldeyseniz hâlâ yardımcı olabilir. Kaliteyle ilgisi olmayan bir istisna var: bir yanıtın nereden geldiğini çözebilmek için adımları görmek istediğinizde, onları istemek hâlâ doğrudur.