पाठ 11 / 25

Side Effects और Idempotency

Write tools को retry के लिए सुरक्षित और बदलाव के बारे में स्पष्ट बनाएँ।

मानें कि call दोहराई जा सकती है

Agents retry करते हैं, loops crash के बाद फिर शुरू होते हैं, और models कभी-कभी call दोहराते हैं। "order बनाने" वाला tool दो बनाएगा। Writes को idempotent बनाएँ: idempotency key स्वीकारें या मौजूदा record जाँचें, ताकि वही अनुरोध दोहराने का वही असर हो जो एक बार करने का है। Tools को read-only या state-बदलने वाला चिह्नित करें ताकि मंज़ूरी नियम उन्हें निशाना बना सकें।

Idempotent create

Key से दोहराया गया call दोहरा order बनाने की जगह मौजूदा order लौटाता है। db आपकी data परत है।

@tool
def create_order(customer_id: int, item: str, request_key: str) -> str:
    """Create an order. Safe to retry with the same request_key. Changes data."""
    existing = db.find_order_by_key(request_key)
    if existing:
        return f"order {existing.id} (already created)"
    order = db.insert_order(customer_id, item, request_key)
    return f"order {order.id} created"

त्वरित जाँच: Idempotency key क्या हासिल करती है?

  • यह अनुरोध को encrypt करती है
  • यह tool को model से छिपाती है
  • यह database तेज़ करती है
  • अनुरोध दोहराने से दोहरा प्रभाव नहीं बनता
Answer

अनुरोध दोहराने से दोहरा प्रभाव नहीं बनता — वही key उसी तार्किक अनुरोध को पहचानती है, इसलिए retries सुरक्षित हैं।