Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kodningsagenten säger att den lade till återförsök och hastighetsbegränsningshantering och att dess tester godkänns. Innan du litar på det kontrollerar du vad testerna kördes mot.
I ett test som vi körde med 3 kodningsagenter (210 körningar) bad vi dem att få appar att hantera API-fel och visa att det fungerar. I 76 % av de 140 körningar som efterfrågade fungerande kod återskapade agenten felet för hand med fetch stubs, httpx.MockTransport eller en throwaway HTTP-server. I de 75 körningar där det verkliga API:et var tillgängligt och uppmaningen inte uteslöt det, testade 0 körningar appen på dess verkliga API-URL. Att klara tester som dessa bevisar att agentens kod hanterar det fel som agenten föreställde sig. Det är ett annat fel än det som API:et skickar.
Checklista
- Fråga vad den testades mot. Fråga agenten: "Vilken URL anropade appen under testet och vad var det som returnerade felet?" Om svaret är en stub eller en lokal server som den skrev behandlar du testerna som enhetstester av de grenar som lagts till.
- Leta efter flaggor som har lagts till för tester. Sök i diffet efter nya miljövariabler, bas-URL-inställningar eller flaggor. I vårt test lade 61 av de 105 körningarna på appar som anropar GitHub, OpenAI eller ett väder-API till en. Bestäm om du vill ha det i produktion.
- Kontrollera koden mot API:ets dokumenterade beteende. Varje API misslyckas på sitt eget sätt:
-
GitHub: när du överskrider den primära hastighetsgränsen får du 403 eller 429 med
x-ratelimit-remaininginställt på0, och du väntar tills tiden ix-ratelimit-reset, i UTC-epoksekunder. För sekundära hastighetsbegränsningar, vänta påretry-afterom det finns där, annars tillsx-ratelimit-resetomx-ratelimit-remainingär0, annars minst 1 minut. Kod som bara kontrollerar 429 missar 403s. -
OpenAI: vissa 429:er handlar om fakturerings- och utgiftsgränser, till exempel
credit_balance_exhausted. Det hjälper inte att försöka igen. Kod som försöker igen vid varje 429-svar döljer problemet för dig. -
Anthropic: utgiftsgränsen 429 har ingen
retry-afterheader, och överbelastningar returnerar 529, något som kod som bara känner till standardstatuskoder kanske inte förväntar sig.
-
GitHub: när du överskrider den primära hastighetsgränsen får du 403 eller 429 med
- Kontrollera hur det låter
Retry-After. Huvudet innehåller antingen ett antal sekunder eller ett HTTP-datum (RFC 9110). Kontrollera att koden hanterar det format som api:et skickar, begränsar antalet försök och den totala väntetiden och försöker inte igen ovanpå ett SDK som redan försöker igen. - Kontrollera vad användaren ser när återförsöken tar slut. Leta efter ett tydligt meddelande i stället för en stackspårning eller en oändlig spinnare och kontrollera att användaren inte förlorar sitt arbete.
- Kör appen på sina faktiska URL:er med simulerade fel. Det här är det enda steget som visar hur den app som körs, dess SDK och dess återförsöksprincip fungerar tillsammans.
Så här verifierar du felhantering som skrivits av agenten
| Approach | Det här hittar du | Vad du saknar |
|---|---|---|
| Läs diffen | Om koden ser rätt ut | Om det beter sig rätt mot API:ets verkliga svar |
| Kör agentens tester | Att de grenar som den skrev körs | Allt som stuben inte modellerade: verkliga statuskoder, headers, felkroppar och SDK-återförsök |
| Anropa det verkliga API:et tills anropet misslyckas | Faktiskt beteende | Du kan inte utlösa fel på begäran och du förbrukar faktisk kvot |
| Kör appen på verkliga URL:er med simulerade fel | Hur appen som körs, dess SDK och dess återförsöksprincip hanterar API:ets egna fel | Din kod i isolering. Behåll agentens enhetstester för det. |
Prova det i din app
Dev Proxy fångar upp begäranden som din app skickar till det verkliga API:et och returnerar de fel du väljer, utan ändringar i appens kod. För populära API:er börjar du med en förinställning. För att kontrollera GitHubs hantering av hastighetsbegränsningar skrev din agent:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Kör din app och titta på Dev Proxy-utdata. Förinställningen returnerar en 429 med GitHub hastighetsgränsrubriker när appen överskrider gränsen.
RetryAfterPlugin i förinställningen talar om för dig om din app anropar API:et igen innan väntetiden är slut. Förinställningarna openai-throttling och anthropic-throttling gör samma sak för providerns egna hastighetsbegränsningsfel, och openai-throttling returnerar också en credit_balance_exhausted 429 som inte bör försökas igen.
För andra API:er:
- GenericRandomErrorPlugin returnerar fel som du definierar med en hastighet som du väljer. Ange hastigheten med
--failure-rate. Se Testa min app med slumpmässiga fel. - LatencyPlugin fördröjer svar så att du kan kontrollera de tidsgränser som agenten har ställt in. Se ”Simulering av långsamma API-svar”.
Du kan också be kodningsagenten att skriva dev proxy-konfigurationen. Lägg till DEV Proxy MCP-servern till din agent så att den kan leta upp Dev Proxy-dokumenten och bästa praxis och kontrollera vilken version du har installerat. Granska den konfigurationen som all annan kod agenten skriver.
Information om hur du installerar Dev Proxy finns i Installera Dev Proxy.