Tek olumlu yanıtın içinde farklı sonuçlar olabilir
Ajan beş kayıt için toplu sorgu yaptı. Araç bir HTTP 200 yanıtı döndürdü ve ajan “Beş kayıt da hazır” dedi. Oysa yanıt zarfının içinde iki başarılı sonuç, bir hata, eksik bir kayıt ve çelişen iki yanıt olabilir. Toplu çağrının yanıtlanması ile her girdinin sonucunun doğrulanması aynı tamamlanma koşulu değildir.
Microsoft Graph’ın toplu istek belgesi, tekil yanıtların isteklerden farklı sırada gelebileceğini ve kimlikle eşlenmesi gerektiğini açıklar. Ayrıca dıştaki 200 durumunun içteki bütün isteklerin başarılı olduğu anlamına gelmediğini belirtir. Aşağıdaki örnek bu ayrımı öğretmek için hazırlanmıştır; gerçek Graph çağrısı veya onun bütün uygulama ayrıntılarının bir benzetimi değildir.Kaynak: Microsoft Graph — JSON batching
Bu eğitimde beş bağımsız okuma isteği vardır: B1, B2, B3, B4 ve B5. Kayıt kimlikleri aynı büyük harfli biçimde verilmiştir; birleştirme öncesinde yeni harf dönüşümü yapılmaz. Kaynakta başarılı sonuç için durum 200 ve dolu bir value alanı, hata için durum 404 ve hata kodu beklenir. Gerçek bir araçta geçerli durumlar kendi sözleşmesinden alınmalıdır.
İstek listesi ve dönüş listesini yan yana koyun
| Geliş sırası | İstek kimliği | Tekil durum | Gövde özeti |
|---|---|---|---|
| 1 | B2 | 200 | value=Kart B |
| 2 | B1 | 200 | value=Kart A |
| 3 | B3 | 404 | error=NOT_FOUND |
| 4 | B5 | 200 | value=Kart E |
| 5 | B5 | 404 | error=NOT_FOUND |
| 6 | B6 | 200 | value=Kart F |
Yanıttaki altı satır, altı geçerli iş sonucu demek değildir. B5 iki kez dönmüştür; üstelik durumları çelişir. B6 hiç istenmemiştir. B4 ise yoktur. Gelen satır sayısı istek sayısından büyük olsa bile bir istek hâlâ eksik olabilir. Bu nedenle ilk kontrol, sayıları karşılaştırmanın yanında kimlik kümelerini ve kimlik başına yanıtları incelemelidir.
B2’nin önce gelmesi başlı başına hata değildir. Sıraya göre eşleme yapsaydınız B2 sonucunu ilk istek B1’e yazabilirdiniz. Doğru ilişki yanıt konumundan değil, istek kimliğinden kurulur. Ardından o kimliğe ait kaç yanıt bulunduğunu ve bu yanıtların birbiriyle tutarlı olup olmadığını kontrol edersiniz.
İstenen kimlikler B1–B5. Dış HTTP durumu 200 olan altı satırlık sentetik yanıtı kullan. Önce istenen/dönen kimlik kümelerini karşılaştır; sonra her istek için tekil durum ve gövdeyi denetle. Yanıt sırasıyla istek sırasını eşitleme. B5 için çelişen yanıtları başarıya indirgeme. B4’ü başarısız olmuş varsayma; sonuç eksik. B6’yı hiçbir isteğe atama. Çıktı: beş istek için karar, fazladan kayıt listesi ve açık incelemeler. Yeni araç çağrısı yapma.
Beş isteğin her birine açık durum verin
| İstek | Eşleşen yanıt sayısı | Karar | Dayanak |
|---|---|---|---|
| B1 | 1 | Başarı doğrulandı | 200 ve Kart A |
| B2 | 1 | Başarı doğrulandı | 200 ve Kart B |
| B3 | 1 | Araç hatası doğrulandı | 404 ve NOT_FOUND |
| B4 | 0 | Sonuç eksik | Bu zarf içinde yanıt yok |
| B5 | 2 | Çelişki; inceleme gerekli | 200 ve 404 aynı kimlikte |
İstenen 5 kaydın 2’sinde başarı, 1’inde bildirilen hata doğrulandı. 1 kaydın sonucu eksik, 1 kaydın sonuçları çelişkili. 2 + 1 + 1 + 1 = 5. B6 fazladan kayıttır; beş isteğin paydasına eklenmez. B5’in iki yanıtından ilki veya sonuncusu keyfi seçilmez. Yeni çağrı: 0.
B3’ün hata sonucu açık olduğu halde B4’ün neden bulunmadığını bilmiyoruz. Yanıt aktarımı eksik kalmış, araç sözleşmesi bozulmuş veya başka bir durum yaşanmış olabilir. Bu ihtimallerden birini gerçek neden diye seçmeyin. B4 için durumun belirsiz olduğunu, B3 için ise araç tarafından belirli bir hata bildirildiğini ayrı kaydedin.
Aynı kimliğin iki kez gelmesi her durumda aynı karar gerektirmez. Birebir aynı yanıtın tekrarı, desteklenen bir sözleşmede etkisizleştirilebilir. Fakat B5’teki gibi başarı ve hata birlikte geliyorsa tekrarları kaldırıp tek satıra indirmek belirsizliği gizler. Bu örnekte çelişkili kimlik, kaynak incelemesi tamamlanana kadar kapanmaz.
Kısmi sonucu kullanmanın sınırını yazın
B1 ve B2’nin doğrulanması, bütün görevin tamamlandığını göstermez. Kullanıcı eksiksiz beş kayıt istediyse çıktı kısmi olarak sunulur. Kullanıcıya hangi kimliklerin hazır, hangilerinin açık olduğunu göstermek mümkündür. B6’yı eksik B4 yerine koymak veya benzer adından hareketle eşleştirmek, kaynakta bulunmayan bir ilişki kurar.
- Başarı ve hata sayımını yalnızca istenen kimlikler üzerinden yapın.
- Eksik, fazla ve çelişkili kayıtları ayrı listelerde koruyun.
- Yeniden denemenin hangi tekil isteğe, hangi kimlikle uygulanacağını araç sözleşmesinden belirleyin.
- Yazma yapan toplu araçlarda belirsiz sonucu yeni kimlikle tekrar göndermeden önce mevcut etkiyi doğrulayın.
Burada yeni çağrı üretmememizin nedeni, örneğin bir denetim kaydı olmasıdır. Gerçek bir iş akışında eksik veya geçici hatalı isteği yeniden sorgulamak gerekebilir. Bu karar bütün paketi körlemesine tekrarlamak anlamına gelmez. Aynı zarf içinde bağımsız okuma, yazma ve birbirine bağlı işlemler varsa tekrar kuralları da farklı olabilir; verilmeyen teknik özellikleri varsaymayın.
Son kontrolünüzde hem küme hem çokluk bilgisini koruyun. Yalnızca benzersiz dönen kimlikleri toplarsanız B5’in iki çelişkili sonucu kaybolur. Yalnızca satır sayarsanız B4’ün eksikliği B6 tarafından örtülebilir. Bu iki bakışın birlikte kullanılması, küçük bir veri kümesinde farklı arıza türlerini ayırmanızı sağlar.
Düzeltilmiş ikinci zarfı inceleyin
Kaynak sahibi B5’in 404 satırının yanlış eşleşme olduğunu doğrulayıp kaldırmış olsun. Yeni zarf, önceki diğer kayıtları korusun ve B4 için 200, value=Kart D eklesin. B6 hâlâ fazladan dursun. Beş istek için yeni sonuç sayımını yapın. Bir hata bildirimi kaldığı için bütün paketi başarılı ilan edip edemeyeceğinizi açıklayın.
B1, B2, B4 ve B5: dört doğrulanmış başarı. B3: bir doğrulanmış araç hatası. Eksik ve çelişkili istek kalmadı; 4 + 1 = 5. B6 fazladan kayıt olarak ayrı tutulur. Beş sonucun durumu biliniyor, fakat beş işlem de başarılı değil. Düzeltme, kaynak sahibinin yeni kanıtına bağlanır.
Kendi toplu aracınız için aynı tabloyu gerçek alan adlarıyla hazırlayın. İstek kimliği, tekil durum, gövde koşulu ve tekrar davranışı açık olsun. Böylece ajanın son cümlesi dıştaki olumlu zarf koduna değil, kullanıcı tarafından istenen her kaydın doğrulanmış sonucuna dayanır.
Kaynaklar ve doğrulama
- Microsoft Graph — JSON batching
Yanıtların farklı sırada gelebilmesi, kimlikle eşleme ve toplu 200 yanıtının tekil başarıları garanti etmemesi.
Erişim ve kontrol:
AI Ajanları ve İş Akışı Otomasyonu
AI Ajanları ve İş Akışı Otomasyonu eğitiminde toplu işlem yapan bir aracın istek ve yanıt örneğini birlikte değerlendirebilirsiniz. Talebinizde tekil kayıtların sonucunu hangi kimlikle izlediğinizi belirtin.
- Kuruma özel planlanır