𝗬𝗼𝘂𝗿 𝗔𝗜 𝗔𝗴𝗲𝗻𝘁 𝗪𝗶𝗹𝗹 𝗗𝗼𝘂𝗯𝗹𝗲-𝗖𝗵𝗮𝗿𝗴𝗲 𝗼𝗻 𝗮 𝗟𝗼𝘀𝘁 𝗥𝗲𝘀𝗽𝗼𝗻𝘀𝗲
Eğer AI ajanınız bir karttan ücret almak için bir araç çağırırsa ve ağ yanıtı düşürürse, ajanınız başarısız bir şekilde hata verir. Farkında olmadan müşteriden çift tahsilat yapar.
Para çoktan hareket etmiştir. Ajan hiçbir zaman "tamam" yanıtını almamıştır. Her yeniden deneme döngüsünün yaptığı şeyi yapar: tekrar dener. Aynı istemi (prompt) ve aynı argümanları kullanır. Bu da ikinci bir tahsilata neden olur.
Yeniden deneme bir ağ olayı değildir. Zaten gerçekleşmiş olabilecek bir yan etki hakkında verilen bir karardır.
Backoff ve jitter gibi standart yeniden deneme araçları, yeniden denemeleri "nazik" hale getirir. Çift tahsilatları durdurmak için hiçbir şey yapmazlar.
Bir idempotency (eşgüçlü) kayıt defterine ihtiyacınız var. Bu, bir işlemin en fazla bir kez gerçekleşmesini sağlamak için benzersiz bir anahtar kullanır.
Bir araç çağrısının başarısız olmasının iki yolu vardır:
- İstek kayboldu. İşlem hiç gerçekleşmedi. Yeniden denemek güvenlidir.
- Yanıt kayboldu. İşlem zaten gerçekleşti. Yeniden denemek mükerrer işleme neden olur.
Bir ajan için bunlar özdeş görünür. Her ikisi de bir zaman aşımı veya kopan bir bağlantı gibi görünür.
Eğer bir aracın ödeme, e-posta veya iade gibi bir yan etkisi varsa, basit yeniden denemelere güvenemezsiniz. Bir idempotency anahtarı kullanmalısınız.
Bu nasıl düzeltilir:
- Araçlarınızı etiketleyin. Hangi araçların geri döndürülemez yan etkileri olduğunu belirleyin.
- Deterministik anahtarlar kullanın. İş akışı kimliği (workflow ID), adım ve argümanlara dayalı kararlı bir anahtar oluşturun. Bunu, LLM argümanları değiştirmeden önce yapın.
- Sağlayıcı anahtarlarını kullanın. Stripe kullanıyorsanız, onların idempotency anahtarını iletin. Sağlayıcının, tahsilatı durdurmak için tekrarı tanıması gerekir.
- Kendi araçlarınız için bir kayıt defteri oluşturun. Sahibi olduğunuz yan etkiler için, benzersiz bir kısıtlama (unique constraint) içeren bir veritabanı tablosu kullanın. Bu, sisteminizin tekrar denemeden önce sonucu kaydetmesini sağlar.
"En az bir kez" (at-least-once) ile "tam olarak bir kez" (exactly-once) kavramlarını birbirine karıştırmayın. Dağıtık sistemlerde "tam olarak bir kez" (exactly-once) sonucuna; en fazla bir kez teslimat (at-most-once delivery), en az bir kez yeniden deneme (at-least-once retries) ve bir tekilleştirme defteri (deduplication ledger) kombinasyonuyla ulaşırsınız.
Yazma işlemlerine okuma işlemleri gibi davranmayı bırakın. Bir okumayı yeniden denemek ücretsizdir. Bir yazmayı yeniden denemek ise maliyetlidir.
Kaynak: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi