Wakala wako wa AI atakutoza mara mbili pindi jibu linapopotea
Ikiwa wakala wako wa AI anaita kifaa (tool) ili kutoza kadi na mtandao ukapoteza jibu, wakala wako atafeli vibaya. Atamtoza mteja mara mbili bila kujua.
Pesa tayari imeshasogezwa. Wakala hajawahi kusikia "ok." Anafanya kile ambacho kila mzunguko wa kujaribu tena (retry loop) hufanya: anajaribu tena. Anatumia prompt ile ile na hoja (arguments) zile zile. Hii inasababisha malipo ya pili.
Kujaribu tena (retry) si tukio la mtandao. Ni uamuzi kuhusu athari ya pembeni (side effect) ambayo inaweza kuwa tayari imetokea.
Zana za kawaida za kujaribu tena kama backoff na jitter hufanya majaribio yawe ya staha. Hazifanyi lolote kuzuia malipo mara mbili.
Unahitaji daftari la idempotency (idempotency ledger). Hili hutumia funguo ya kipekee (unique key) kuhakikisha kitendo hutokea mara moja tu kwa wakati mmoja.
Kuna njia mbili ambazo mwito wa kifaa (tool call) hufeli:
- Ombi lilipotea. Kitendo hakikufanyika kamwe. Kujaribu tena ni salama.
- Jibu lilipotea. Kitendo tayari limeshafanyika. Kujaribu tena kunasababisha marudio.
Kwa wakala, haya yanaonekana kuwa sawa. Yote yanaonekana kama timeout au muunganisho uliokatika.
Ikiwa kifaa kina athari ya pembeni kama malipo, barua pepe, au marejesho (refund), huwezi kutegemea majaribio rahisi ya kujaribu tena. Lazima utumie funguo ya idempotency (idempotency key).
Jinsi ya kurekebisha hili:
- Weka lebo kwenye zana zako. Tambua ni zana zipi zenye athari za pembeni zisizoweza kurekebishwa.
- Tumia funguo za deterministic. Tengeneza funguo thabiti kulingana na workflow ID, hatua, na hoja (arguments). Fanya hivi kabla ya LLM kubadilisha hoja.
- Tumia funguo za mtoa huduma. Ikiwa unatumia Stripe, pitisha funguo yao ya idempotency. Mtoa huduma lazima atambue marudio ili kusitisha malipo.
- Jenga daftari kwa ajili ya zana zako mwenyewe. Kwa athari za pembeni unazomiliki, tumia jedwali la hifadhidata (database table) lenye kizuizi cha kipekee (unique constraint). Hii inahakikisha mfumo wako unarekodi matokeo kabla ya kujaribu tena.
Usichanganye "angalau mara moja" (at-least-once) na "mara moja tu" (exactly-once). Katika mifumo iliyosambazwa (distributed systems), unapata "mara moja tu" kwa kuchanganya uwasilishaji wa "zisizozidi mara moja" (at-most-once) na majaribio ya "angalau mara moja" pamoja na daftari la kuondoa marudio (deduplication ledger).
Acha kutendea maandishi (writes) kama usomaji (reads). Kujaribu tena usomaji ni bure. Kujaribu tena maandishi kuna gharama.
Chanzo: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed
Jumuia ya hiari ya kujifunza: https://t.me/GyaanSetuAi