Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A kódolóügynök azt mondja, hogy újrapróbálkozást és kérésszámkorlát-kezelést adott hozzá, és a tesztek sikeresek. Mielőtt megbízik benne, ellenőrizze, hogy a teszteket min futtatták.
Egy 3 kódolási ügynökkel végzett tesztben (210 futtatás) arra kértük őket, hogy készítsenek olyan alkalmazásokat, amelyek kezelik az API-hibákat, és mutassák be, hogy ez működik. A működő kódot kérő 140 futtatás 76%-ában az ügynök kézzel, fetch stubokkal, httpx.MockTransport vagy egy eldobható HTTP-kiszolgálóval létrehozta a hibát. A 75 futás közül, ahol a valódi API elérhető volt, és a parancssor nem zárta ki, 0 tesztelte az alkalmazást a valódi API URL-címén. Az ilyen tesztek azt bizonyítják, hogy az ügynök kódja kezeli az ügynök által elképzelt hibát. Ez más hiba, mint amit az API küld.
Checklist
- Kérdezze meg, hogy mivel szemben tesztelték. Kérdezze meg az agentet: "Melyik URL-címet hívta az alkalmazás a teszt során, és mi adta vissza a hibát?" Ha a válasz egy stub vagy egy helyi kiszolgáló, amelyet írt, a teszteket a hozzáadott ágak egységtesztjeként kezelje.
- Keresse meg a tesztekhez hozzáadott kapcsolókat. Keressen új környezeti változókat, alap URL-beállításokat vagy jelzőket a diffben. Tesztünkben a 105 futtatásból 61 olyan alkalmazásokon, amelyek meghívják a GitHubot, az OpenAI-t vagy egy időjárási API-t, egy ilyet adott hozzá. Döntse el, hogy éles környezetben szeretné-e használni.
- Ellenőrizze a kódot az API dokumentált viselkedésével. Minden API a saját módján meghibásodik:
-
GitHub: ha túllépi az elsődleges lekérési korlátot, 403-at vagy 429-et kap, úgy, hogy a(z)
x-ratelimit-remainingértéke0, és várjon a(z)x-ratelimit-resetmezőben megadott időpontig, UTC epoch másodpercben. Másodlagos sebességkorlátok esetén várjonretry-after, ha ott van, ellenkező esetbenx-ratelimit-reset-ig, hax-ratelimit-remainingértéke0, ellenkező esetben legalább 1 percet. A csak 429-et ellenőrző kód nem veszi észre a 403-at. -
OpenAI: néhány 429s a számlázásról és a költségkorlátokról szól, például
credit_balance_exhausted. Az újbóli próbálkozás ezekkel nem segít. A minden 429-re újrapróbálkozó kód elrejti a problémát. -
Anthropic: a 429-hez tartozó költségkorlátnak nincs
retry-afterfejléce, a túlterhelések pedig 529-et adnak vissza, amire a csak a standard állapotkódokat ismerő kód esetleg nem számít.
-
GitHub: ha túllépi az elsődleges lekérési korlátot, 403-at vagy 429-et kap, úgy, hogy a(z)
- Ellenőrizze, hogyan olvasható.
Retry-AfterA fejléc másodpercek számát vagy EGY HTTP-dátumot (RFC 9110) tartalmaz. Ellenőrizze, hogy a kód kezeli-e az API által küldött formátumot, korlátozza-e a kísérletek számát és a teljes várakozást, és nem próbálkozik újra egy már újrapróbálkozó SDK-val. - Ellenőrizze, hogy a felhasználó mit lát, amikor az újrapróbálkozások elfogynak. Keressen egyértelmű üzenetet a veremnyomkövetés vagy a végtelenül pörgő betöltésjelző helyett, és ellenőrizze, hogy a felhasználó nem veszíti-e el a munkáját.
- Futtassa az alkalmazást a valós URL-címein szimulált hibákkal. Ez az egyetlen lépés, amely bemutatja, hogyan működik együtt a futó alkalmazás, az SDK és az újrapróbálkozási szabályzat.
Ügynök által generált hibakezelés ellenőrzése
| Approach | Mit talál? | Amit elmulasztott |
|---|---|---|
| Különbség megtekintése | A kód helyesnek tűnik-e | Helyesen viselkedik-e az API valódi válaszai alapján |
| Az ügynök tesztjeinek futtatása | Hogy az általa írt elágazások működnek | Minden, amit a stub nem modellezett: valós állapotkódok, fejlécek, hibatörzsek és SDK-újrapróbálkozások |
| Hívja meg a valódi API-t, amíg hibát nem ad | Valós viselkedés | Nem tud igény szerint hibákat előidézni, és a valós kvótát használja |
| Futtassa az alkalmazást valós URL-címeken szimulált hibákkal | Hogyan kezeli a futó alkalmazás, az SDK és az újrapróbálkozási szabályzat az API saját hibáit | A te kódod elkülönítve. Arra használja az ügynök egységtesztjeit. |
Próbálja ki az alkalmazásán
Dev Proxy elfogja az alkalmazás által a valódi API-nak küldött kéréseket, és visszaadja a választott hibákat, anélkül, hogy módosítanod kellene az alkalmazás kódját. Népszerű API-k esetén kezdje egy előbeállítással. A GitHub sebességkorlát-kezelésének ellenőrzéséhez az ügynöke ezt írta:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Futtassa az alkalmazást, és figyelje meg a Dev Proxy kimenetét. Az előbeállítás egy 429-et ad vissza a GitHub sebességkorlátozási fejléceivel, amint az alkalmazás túllépi a korlátot. Az előre beállított RetryAfterPlugin jelzi, hogy az alkalmazás a várakozási idő letelte előtt ismét meghívja-e az API-t. Az anthropic-throttling és openai-throttling presetek ugyanezt teszik a szolgáltató saját sebességkorlátozási hibái esetében, és a openai-throttling egy credit_balance_exhausted 429-et is visszaad, amelyet nem szabad újrapróbálni.
Egyéb API-k esetén:
- A GenericRandomErrorPlugin az Ön által megadott arányban adja vissza a megadott hibákat. Állítsa be a rátát ezzel:
--failure-rate. Lásd: Teszteld az alkalmazásomat véletlenszerű hibákkal. - A LatencyPlugin késlelteti a válaszokat, így ellenőrizheti az ügynök által beállított időtúllépéseket. Lásd: Lassú API-válaszok szimulálása.
Megkérheti a kódolóügynököt is, hogy írja meg a Dev Proxy konfigurációját. Adja hozzá a Dev Proxy MCP-kiszolgálót az ügynökhöz, hogy megkeresse a Dev Proxy dokumentációját és ajánlott eljárásait, és ellenőrizze, hogy melyik verziót telepítette. Ezt a konfigurációt ugyanúgy vizsgálja felül, mint az ügynök által írt bármely más kódot.
A Dev Proxy telepítéséhez lásd: Dev Proxy beállítása.