İçeriğe geç

Dil Modeli Nasıl Cevap Üretir — Neden Var Olmayan Bir Metot Uydurur?

Başlangıç 9 dk Çok sık karşılaşılır

30 saniyede özet

Dil modeli cevabı parça parça, her adımda en olası devamı seçerek yazar. Olası her zaman doğru değildir: uydurma bir ad da gerçeği kadar akıcı görünür. Belge vermek ve sonucu test etmek bu açığı kapatır.

Telefonunun klavyesi sen yazarken bir sonraki kelimeyi önerir. “Yarın sabah” yazınca “görüşürüz” der, çünkü bu ikili çok sık yan yana gelir. Önerinin doğru olup olmadığını bilmez; yalnızca olası olduğunu bilir.

Çok okumuş bir klavye: olası olanı önerir, doğruyu değil.
Adım adım oku
  1. Model cümlenin bir sonraki parçasını tahmin eder.
  2. En olası devam çoğu zaman doğrudur, ama olmak zorunda değildir.
  3. Var olmayan bir ad da cümlede gerçeği kadar akıcı durur.
  4. İlgili belge bağlamdaysa öneriler gerçek adlara yapışır.
  1. Bayt: Asistana Spring'de isteği nasıl doğrularım diye sordum. @ValidRequest koy dedi.

  2. Sen: Çalıştı mı?

  3. Bayt: Derlenmedi bile! Ama öyle emin yazmıştı ki.

  4. Bayt: Emin görünmek ile doğru olmak ayrı şeyler. Model nasıl yazıyor, bakalım.

Parça parça yazmak

Bir dil modeli metni tokenDil modelinin metni okuyup yazdığı küçük parça: bir kelime, kelimenin bir kısmı ya da bir işaret. Bağlam penceresi de token sayısıyla ölçülür.Sözlükte gör → denen küçük parçalarla yazar: bir kelime, bir kelimenin bir kısmı ya da bir noktalama işareti. Her adımda, o ana kadar yazılanlara bakıp olası devamları puanlar ve birini seçer.

Bakabildiği her şey context windowBir dil modelinin tek seferde görebildiği metnin tamamı: senin mesajların, verdiğin dosyalar ve kendi cevapları. Pencerede olmayan bir şeyi model bilmez.Sözlükte gör → içindedir: senin mesajın, eklediğin dosyalar ve kendi yazdıkları. Orada olmayanı ancak eğitimden hatırladığı kadarıyla bilir.

Kafam karıştı, daha basit anlat

Model cevabı kelime kelime yazar ve her seferinde en olası devamı seçer. Doğruluğu ayrıca kontrol etmez.

Hızlı kontrolBaşlangıç

Bir dil modeli cevabını nasıl yazar?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Model bir sohbette neye bakarak cevap verir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Olası ama yanlış

Spring'de istek gövdesini doğrulamak için gerçek ad @Valid. Modelin aday listesinde @ValidRequest diye uydurma bir ad da var ve olasılığı küçük ama sıfır değil. Model bu uydurma adı hiç seçebilir mi? Cevabı göster

Evet, çünkü seçim olasılığa göre yapılır, doğruluğa göre değil. Uydurma ad, gerçek adlara çok benzediği için cümlede eşit derecede akıcı durur. Bu yüzden model onu da aynı güvenle yazar.

Modelin var olmayan bir şeyi kendinden emin yazmasına hallucinationBir dil modelinin var olmayan bir API'yi, parametreyi ya da kaynağı kendinden emin bir dille üretmesi. Çıktı akıcı olduğu için fark etmek zordur.Sözlükte gör → denir. Kod yazarken en sık hâli: olmayan bir metot, uydurma bir bağımlılık adı ya da yanlış sürüme ait bir ayar.

temperatureModelin bir sonraki parçayı ne kadar cesur seçeceğini belirleyen ayar. Sıfırda hep en olası parça seçilir; cevap tutarlı olur ama doğru olmak zorunda değildir.Sözlükte gör → seçimin ne kadar cesur olacağını belirler. Sıfırda hep en olası parça seçilir ve cevap tutarlı olur; yükseldikçe daha az olası parçalar da seçilebilir.

Kafam karıştı, daha basit anlat

Model olası olanı seçer. Olası olan bazen uydurmadır ve uydurma da akıcı görünür.

Hızlı kontrolBaşlangıç

Asistan kendinden emin bir şekilde @ValidRequest yazdı ama Spring'de böyle bir şey yok. Bu durumun adı ne?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Sıcaklık (temperature) sıfıra indirildi. Hangisi doğru?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Kanıt nereden gelir?

İlgili belgeyi ya da kendi kodundan bir örneği bağlama koymak, olası devamları gerçek adlara bağlar ve uydurmayı azaltır. Ama sıfırlamaz.

Asıl kanıt dışarıdan gelir: kod derleniyor mu, bağımlılık gerçekten var mı, test geçiyor mu? Modelin cevabı bir taslaktır; derleyici, belge ve test onu doğrular.

Kafam karıştı, daha basit anlat

Belge vermek uydurmayı azaltır. Kanıt ise derleyiciden, belgeden ve testten gelir.

Hızlı kontrolOrta

Asistanın önerdiği bir metodun gerçekten var olduğundan nasıl emin olursun?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Kendin gör

Model bir sonraki kelimeyi seçiyor

Tohum 878260

Parametreye konacak işaret

___

Doğrulama başarısız olunca fırlayan hata

___

Eklenecek bağımlılık

___

Hız
Adım 0

Şu an ne oldu?

Bir sonraki parça ne olacak?

Model "doğru olanı" aramaz; o bağlamda en olası devamı seçer. Yeni tohumla tekrar oynatınca seçimler değişebilir.

Görevler0/3

  • Modele var olmayan bir Spring adı uydurtaçık

    İpucu

    Sıcaklığı artır, gerekirse yeni tohumla tekrar oynat.

  • Sıcaklık 0 ile cevabı tamamlaaçık

    İpucu

    Hep en olası parça seçilir; her seferinde aynı cevap.

  • Cesur sıcaklıkta, belge bağlamdayken uydurmasız bir cevap alaçık

    İpucu

    Belgeyi sohbete eklemek ne değiştiriyor?

Olay günlüğü (0)

Henüz olay yok. Oynat veya adımla.

  1. Varsayılanla oynat. Her boşluk için aday tablosu ve seçilen parça.
  2. Sıcaklığı 1.5 yap, birkaç kez yeni tohumla oynat. Bir gün uydurma bir ad gelecek.
  3. Sıcaklığı 0 yap. Her seferinde aynı ve en olası cevap.
  4. Sıcaklık 1.5’te belgeyi bağlama ekle. Uydurma adların payı neredeyse sıfıra indi.
Hızlı kontrolOrta

Sohbete ilgili Spring belgesini ekledin. Ne değişir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Tuzaklar

Uydurma bağımlılık: model, var olmayan ama gerçeğine benzeyen bir paket adı önerebilir. Kötü niyetli biri o adla bir paket yayınlamışsa, körü körüne kurmak güvenlik açığı olur. Her bağımlılığı resmi depoda kontrol et.

“Sıcaklık sıfır, o hâlde doğru.” Sıfır sıcaklık cevabı tutarlı yapar, doğru yapmaz. En olası cevap da yanlış olabilir.

Uzun sohbette erken bilgi. Bağlam penceresi dolunca ya da sohbet çok uzayınca, baştaki bir kural gözden kaçabilir. Önemli kısıtları görevin içinde yeniden söyle.

Kafam karıştı, daha basit anlat

Paket adlarını kontrol et, sıfır sıcaklığa güvenme, önemli kuralı tekrar yaz.

Hızlı kontrolOrta

Asistan bir npm paketinin adını önerdi; bu ad resmi depoda yok ama çok tanıdık duruyor. En büyük risk nedir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aşağıdaki örnek, bir bankanın para gönderme API’sinde asistanın önerdiği doğrulama kodunu kanıtlarla kontrol etmenin hâli.

Derinleş · Para gönderme isteği: öneriyi kanıtla doğrulamak 4 dosya · ~48 satır · ilk okumada atlayabilirsin
Proje dosyaları

src/main/java/com/bank/transfer/ TransferController.java Asistanın ilk önerisi: uydurma bir işaret ve uydurma bir bağımlılık. Derleyici ilkini hemen yakalar.

src/main/java/com/bank/transfer/TransferController.java
// The assistant's first draft — fluent, confident and wrong:
// public TransferResult send(@ValidRequest @RequestBody TransferRequest request)
// @ValidRequest does not exist; the compiler says so before anything else does.
@RestController
@RequestMapping("/transfers")
class TransferController {
private final TransferService transfers;
TransferController(TransferService transfers) {
this.transfers = transfers;
}
@PostMapping
TransferResult send(@Valid @RequestBody TransferRequest request) { // checked against the Spring docs
return transfers.send(request);
}
}

src/main/java/com/bank/transfer/ TransferRequest.java Belgeyle karşılaştırılmış hâli: gerçek işaret ve gerçek kısıtlar.

src/main/java/com/bank/transfer/TransferRequest.java
record TransferRequest(
@NotBlank @Size(min = 26, max = 26) String toIban,
@NotNull @Positive @Digits(integer = 12, fraction = 2) BigDecimal amount,
@Size(max = 140) String description) {
}

pom.xml Gerçek bağımlılık adı: Spring Boot 2.3'ten beri web başlangıcı doğrulamayı getirmiyor.

pom.xml
<!-- The assistant suggested "spring-validation-starter": no such artifact.
The real one, checked on Maven Central: -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

src/test/java/com/bank/transfer/ TransferControllerTest.java Test: geçersiz bir istek gerçekten 400 dönüyor mu? Kanıt testten gelir.

src/test/java/com/bank/transfer/TransferControllerTest.java
@WebMvcTest(TransferController.class)
class TransferControllerTest {
@Autowired MockMvc mvc;
@MockitoBean TransferService transfers;
@Test
void rejectsANegativeAmount() throws Exception {
mvc.perform(post("/transfers")
.contentType(MediaType.APPLICATION_JSON)
.content("""
{"toIban":"TR330006100519786457841326","amount":-5}
"""))
.andExpect(status().isBadRequest());
verifyNoInteractions(transfers);
}
}

Kendini sına

Şimşek turu1/4

Dil modeli bir cevabı yazmadan önce doğru olup olmadığını kontrol eder.

Soru 1/3İleri

Uzun bir sohbetin başında 'para tutarları için double kullanma' dedin. Saatler sonra asistan double kullanan bir kod yazdı. Olası açıklama ve çözüm?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aklında kalacak üç şey

  1. 1 Dil modeli cevabı token token yazar: her adımda bağlama göre olası devamları puanlar ve birini seçer. Doğruluğu kontrol eden ayrı bir adım yoktur.
  2. 2 Var olmayan bir metot ya da bağımlılık adı, gerçeği kadar akıcı görünebilir. Akıcılık doğruluğun kanıtı değildir; derleyici, belge ve test kanıttır.
  3. 3 İlgili belgeyi bağlama koymak uydurmayı azaltır, sıcaklığı düşürmek cevabı tutarlı yapar. İkisi de doğrulamanın yerini tutmaz.
Sonraki kapı Yapay zekânın yazdığı kod derleniyor, testleri de geçiyor. Gönül rahatlığıyla yayına alabilir misin? AI Kodunu Gözden Geçirmek — Akıcı Görünmek Doğru Olmak Değil · 8 dk

5 kart sonraki derste seni bekliyor

0/4 kart bu dersten toplandı

Bu dersin üstüne kurulanlar

Bunlar bu dersi temel alıyor; hazır olduğunda devam edebilirsin.