Przejdź do treści

Idempotencja

Definicja

Idempotencja oznacza, że wykonanie tej samej operacji wiele razy daje ten sam efekt (np. „utwórz X” nie tworzy duplikatów).

Co to w zasadzie jest?

W AI z narzędziami łatwo o powtórzenia: agent może kliknąć „wyślij” dwa razy, bo nie był pewien wyniku. Idempotencja to zabezpieczenie: nawet jeśli to się zdarzy, system nie zrobi dubla (albo bezpiecznie go wykryje).

Praktyczne zastosowania (konkretne scenariusze)

Scenariusz 1: Agent tworzy zadanie w systemie — idempotency key zapobiega duplikatom

  • Cel: agent tworzy zadanie w systemie — idempotency key zapobiega duplikatom.
  • Wejście: akcja możliwa do ponowienia.
  • Kroki: nadaj identyfikator -> sprawdź duplikat -> wykonaj raz.
  • Rezultat: brak podwójnych operacji.
  • Zabezpieczenie: klucze idempotencji i logi.

Scenariusz 2: Integracja z API — ponowienie żądania po timeout nie robi szkody

  • Cel: integracja z API — ponowienie żądania po timeout nie robi szkody.
  • Wejście: akcja możliwa do ponowienia.
  • Kroki: nadaj identyfikator -> sprawdź duplikat -> wykonaj raz.
  • Rezultat: brak podwójnych operacji.
  • Zabezpieczenie: klucze idempotencji i logi.

Scenariusz 3: Publikacja wpisu — „update” zamiast „create”, jeśli już istnieje

  • Cel: publikacja wpisu — „update” zamiast „create”, jeśli już istnieje.
  • Wejście: akcja możliwa do ponowienia.
  • Kroki: nadaj identyfikator -> sprawdź duplikat -> wykonaj raz.
  • Rezultat: brak podwójnych operacji.
  • Zabezpieczenie: klucze idempotencji i logi.

Ryzyka i jak je ograniczać

Ryzyko 1: Brak idempotencji = duble, chaos, koszty

  • Ryzyko: brak idempotencji = duble, chaos, koszty.
  • Jak ograniczać: klucze idempotencji, wykrywanie duplikatów, transakcje.

Ryzyko 2: Trudna diagnoza „czemu są dwa wpisy”

  • Ryzyko: trudna diagnoza „czemu są dwa wpisy”.
  • Jak ograniczać: audit trail i identyfikatory żądań.

Ryzyko 3: Agent zapętla się

  • Ryzyko: agent zapętla się.
  • Jak ograniczać: limity kroków, rate limiting, checkpointy.

Mapa powiązań

  • API → idempotencja jest częsta w dobrych API.
  • Tool calling → narzędzia powinny być bezpieczne na powtórzenia.
  • Audit trail → ślad wykonań.
  • Agentic workflow → pętle i ponowienia.
  • Mini-przepływ: Wywołanie → (czy już było?) → wykonaj / pomiń

Diagram

flowchart LR
    A[To samo żądanie]
    B[Wykonanie operacji]
    C[Zapis wyniku]
    D[Powtórzenie żądania]
    E[Ten sam rezultat]
    A --> B --> C --> D --> E

Diagram pokazuje, że ponowienie tej samej operacji nie powinno wywołać nowego skutku.