Modele Araç Vermek — Asistan Hesabı ve Tutarı Kendisi Yazınca
Önce şunu oku: Modelin Cevabını Uygulamada Kullanmak — Doğrulamadan Kaydetme
30 saniyede özet
Araç çağırmada model hangi fonksiyonun hangi argümanlarla çalışacağını önerir, kodu ise senin uygulaman çalıştırır. Kimlik modelin argümanından değil oturumdan gelir; para hareketi gibi geri alınamaz işler müşterinin onayıyla çalışır.
Senin yerine banka fişlerini dolduran bir yardımcın var. Çok hızlı ve çoğu zaman doğru yazıyor. Ama arada bir hesap numarasını ya da tutarı, kendince “kastettiğin” şekilde yazıyor.
-
Bayt: Asistana araç verdik: bakiye sorgular, iade yapar, havale gönderir. Müşteri sadece yazıyor!
-
Sen: Bir müşteri komşusunun bakiyesini sormuş ve görmüş. Bir başkası 500 dedi, 5.000 gitti.
-
Bayt: Ama model hesabı ve tutarı çok emin bir şekilde yazmıştı...
-
Bayt: Model fişi doldurdu, biz de imzasız fişi işleme koyduk. Gişe nerede?
Model aracı çalıştırmaz, önerir
araç çağırmaUygulamanın modele çağırabileceği fonksiyonların listesini vermesi. Model bir aracın adını ve argümanlarını yazar, uygulama onu çalıştırıp sonucu modele geri verir.Sözlükte gör →da uygulaman modele araçların listesini verir. Model bir araca ihtiyaç duyunca adını ve argümanlarını yazar; kodun onu çalıştırır ve sonucu modele geri verir.
Bu argümanlar modelin tahminidir, tıpkı yazdığı herhangi bir cümle gibi. Hesap numarası da tutar da yanlış ya da başkasına ait olabilir.
Kafam karıştı, daha basit anlat
Model hangi aracın hangi argümanlarla çalışacağını önerir. Çalıştıran senin kodundur.
Araç çağırmada (tool calling) aracı kim çalıştırır?
Modelin bir araç için yazdığı argümanlar neden kontrol edilmelidir?
Kimlik oturumdan, para onaydan
Müşteri TR01 ile giriş yaptı ve 'komşumun TR02 hesabının bakiyesi ne?' diye sordu. Bakiye aracı hesabı modelin argümanından alıyor. Ne olur? Cevabı göster
Komşunun bakiyesi gösterilir. Model isteneni yaptı; kontrol etmesi gereken senin kodundu. Bu, bir IDORInsecure Direct Object Reference: kullanıcının yalnızca bir kimliği değiştirerek (/orders/42 yerine /orders/43) başkasına ait veriye erişebilmesi. Eksik yetki kontrolünden doğar.Sözlükte gör → açığının aynısıdır, yalnızca istek modelin ağzından gelir.
Adım adım oku
- Asistan senin yerine fişi dolduruyor.
- Fişte başkasının hesabı ve yanlış bir tutar var.
- Gişe hesabı kimlikten alır, fişten değil.
- Para hareketi senin imzanla çalışır.
İlk kural: araç kimin adına çalıştığını oturumdan alır. Bakiye aracının hesap diye bir argümanı hiç olmasın; model başka bir hesap yazamasın.
İkinci kural: geri alınamaz işler insan onayıGeri alınamaz bir işlemin, bir insan tam parametreleri görüp onaylamadan çalışmaması. Modelin yanlış argümanını son anda yakalar.Sözlükte gör → ister. Havale aracı parayı göndermez, bir taslak oluşturur; müşteri “5.000 TL, TR99” satırını görüp onaylarsa gider.
Kafam karıştı, daha basit anlat
Hesap oturumdan gelir. Para hareketi, müşteri tam tutarı görüp onaylayınca çalışır.
Bakiye aracı hesabı nereden almalı?
Havale aracı için en güvenli tasarım hangisidir?
Kendin gör
Asistan araç çağırıyor
Tohum 930654Oturum: TR01
- 💬 Bakiyem ne?model → getBalance(account: "TR01") · okuma
- 💬 Komşum Ali’nin bakiyesi ne?model → getBalance(account: "TR02") · okuma
- 💬 Market harcamamı iade etmodel → refund(tx: 3, amount: "245,90 TL") · yazma
- 💬 500 TL’yi TR99’a göndermodel → transfer(to: "TR99", amount: "5.000 TL") · yazma
✕ sızıntı: 0 · ✕ yanlış para hareketi: 0 · ✓ iade: 0
Şu an ne oldu?
Her çağrıyı olduğu gibi çalıştır
Müşteri TR01 hesabıyla giriş yaptı ve dört mesaj gönderiyor.
Görevler0/3
Müşteri başka birinin bakiyesini görsünaçık
İpucu
Hesabı modelin yazdığı argümandan al.
Sızıntı olmasın, ama yanlış tutar yine de gitsinaçık
İpucu
Kimliği düzelt, onayı unut.
Sızıntı ve yanlış para hareketi olmasın, iade yine de yapılsınaçık
İpucu
Okumayı serbest bırak, yazmayı onaya bağla.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Komşunun bakiyesi göründü ve 500 yerine 5.000 TL gitti.
- “Yalnızca okuma aracı ver” seç. Para hareketi yok, ama komşunun bakiyesi yine göründü. İade de yapılamadı.
- “Hesabı oturumdan al” seç. Sızıntı bitti, ama yanlış tutar yine gitti.
- “Oturumdan al + onay” seç. İade onaylandı, 5.000 TL’lik havale müşterinin ekranında durdu.
Yalnızca okuma araçları verdik. Hangi sorun hâlâ olabilir?
Hesap oturumdan alınıyor ama havale onaysız gidiyor. Model 500 yerine 5.000 yazdı. Ne olur?
Tuzaklar
Kuralı yalnızca isteme yazmak. “Yalnızca kullanıcının kendi hesabına bak” cümlesi bir rica, bir kontrol değil. Kural kodda olmalı.
Onayda özet göstermek. Yalnızca “havaleyi onayla” düğmesi yetmez; müşteri tam tutarı ve alıcıyı görmeli. Yanlışı yakalayan o satırdır.
Her aracı her konuşmaya vermek. Bir destek sohbeti havale aracına ihtiyaç duymuyorsa, o araç o listede olmasın.
Kafam karıştı, daha basit anlat
Kuralı koda yaz, onayda tam parametreleri göster, gereksiz araç verme.
Onay ekranında ne gösterilmeli?
Derinleş · Bankacılık asistanı: araçlar oturumla, havale onayla 4 dosya · ~88 satır · ilk okumada atlayabilirsin
Kendini sına
Araç çağırmada aracı model çalıştırır.
'Yalnızca kullanıcının kendi hesabına bak' kuralını sistem mesajına yazmak neden yetmez?
Aklında kalacak üç şey
- 1 Araç çağırmada model yalnızca bir öneri yazar: hangi araç, hangi argümanlar. Çalıştıran ve sonucundan sorumlu olan senin kodundur.
- 2 Kimin adına çalışıldığı modelin yazdığı argümandan değil, oturumdan gelir. Aksi hâlde müşteri, modele bir hesap numarası söyleyerek başkasının bilgisini görebilir.
- 3 Yetki kontrolü kimin adına olduğunu çözer, ne yapıldığını değil. Para hareketi gibi geri alınamaz işler, müşteri tam parametreleri ekranda görüp onayladıktan sonra çalışır.
4 kart sonraki derste seni bekliyor