Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Uw codeeragent zegt dat er nieuwe pogingen en rate-limitafhandeling zijn toegevoegd en dat de tests zijn geslaagd. Voordat u dat vertrouwt, controleert u waartegen de tests zijn uitgevoerd.
In een test die we hebben uitgevoerd met 3 codingagents (210 uitvoeringen), hebben we hen gevraagd apps API-fouten te laten verwerken en te laten zien dat dit werkt. In 76% van de 140 uitvoeringen waarin om werkende code werd gevraagd, heeft de agent de fout handmatig gebouwd met fetch-stubs, httpx.MockTransport, of een wegwerp-HTTP-server. In de 75 uitvoeringen waar de echte API beschikbaar was en de prompt deze niet heeft uitgesloten, heeft 0 de app getest op de echte API-URL. Het slagen voor tests als deze bewijst dat de code van de agent de fout afhandelt die de agent zich heeft voorgesteld. Dat is een andere fout dan de fout die de API verzendt.
Controlelijst
- Vraag waartegen het is getest. Vraag de agent: 'Welke URL heeft de app aangeroepen tijdens de test en wat de fout heeft geretourneerd?' Als het antwoord een stub of een lokale server is die de app zelf heeft opgezet, behandelt u de tests als eenheidstests van de toegevoegde vertakkingen.
- Zoek naar switches die zijn toegevoegd voor tests. Zoek in de diff naar nieuwe omgevingsvariabelen, basis-URL-instellingen of vlaggen. In onze test voegden 61 van de 105 runs op apps die GitHub, OpenAI of een weer-API aanroepen er een toe. Bepaal of u het in productie wilt.
- Controleer de code op basis van het gedocumenteerde gedrag van de API. Elke API mislukt op zijn eigen manier:
-
GitHub: wanneer u de primaire frequentielimiet overschrijdt, krijgt u 403 of 429 met
x-ratelimit-remainingingesteld op0, en wacht u tot de tijd inx-ratelimit-reset, in UTC epoch seconden. Wacht voor secundaire frequentielimieten opretry-afterals deze er is, anders totx-ratelimit-remainingalsx-ratelimit-reset0is, anders ten minste 1 minuut. Code die alleen op 429 controleert, mist de 403's. -
OpenAI: sommige 429's gaan over facturerings- en uitgavenlimieten, zoals
credit_balance_exhausted. Ze opnieuw proberen helpt niet. Code die na elke 429 opnieuw probeert, verbergt het probleem voor u. -
Anthropic: de uitgavenlimiet 429 heeft geen
retry-afterheader en overbelastingen retourneren 529, wat code die alleen standaardstatuscodes kent mogelijk niet verwacht.
-
GitHub: wanneer u de primaire frequentielimiet overschrijdt, krijgt u 403 of 429 met
- Controleer hoe het leest
Retry-After. De header bevat een aantal seconden of een HTTP-datum (RFC 9110). Controleer of de code de indeling afhandelt die uw API verzendt, het aantal pogingen en de totale wachttijd beperkt en geen retries uitvoert boven op een SDK die zelf al retries doet. - Controleer wat de gebruiker ziet wanneer de pogingen op zijn. Zoek naar een duidelijk bericht in plaats van een stack-trace of een eindeloze spinner en controleer of de gebruiker zijn werk niet kwijtraakt.
- Voer de app uit op de echte URL's met gesimuleerde fouten. Dit is de enige stap die laat zien hoe de actieve app, de SDK en het beleid voor opnieuw proberen zich samen gedragen.
Door agents geschreven foutafhandeling controleren
| Approach | Wat u vindt | Wat u mist |
|---|---|---|
| Lees de diff | Of de code er goed uitziet | Of het zich goed gedraagt met de echte responses van de API |
| De tests van de agent uitvoeren | Dat de branches die het heeft aangemaakt worden uitgevoerd | Alles wat de stub niet modelde: echte statuscodes, headers, foutteksten en nieuwe pogingen van de SDK |
| De echte API aanroepen totdat deze mislukt | Feitelijk gedrag | U kunt geen mislukkingen op aanvraag activeren en u besteedt echt quotum |
| De app uitvoeren op echte URL's met gesimuleerde fouten | Hoe de draaiende app, de SDK en het beleid voor opnieuw proberen de eigen fouten van de API verwerken | Uw code afzonderlijk. Houd hiervoor de unittests van de agent. |
Probeer het in uw app
Dev Proxy onderschept de aanvragen die uw app verzendt naar de echte API en retourneert de fouten die u kiest, zonder wijzigingen in de code van uw app. Voor populaire API's begint u met een preset. Om de afhandeling van de GitHub-frequentielimiet te controleren, schreef uw agent:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Voer uw app uit en bekijk de uitvoer van de Dev Proxy. De voorinstelling retourneert een 429 met de snelheidslimietheaders van GitHub zodra uw app de limiet overschrijdt. De RetryAfterPlugin in de voorinstelling geeft aan of uw app de API opnieuw aanroept voordat de wachttijd op is. De openai-throttling en anthropic-throttling voorinstellingen doen hetzelfde voor de eigen frequentielimietfouten van de provider en openai-throttling retourneert ook een credit_balance_exhausted 429 die niet opnieuw moet worden geprobeerd.
Voor andere API's:
- GenericRandomErrorPlugin retourneert fouten die u definieert met een snelheid die u kiest. Stel het tarief in met
--failure-rate. Zie Test mijn app met willekeurige fouten. - De LatencyPlugin vertraagt reacties, zodat u de door de agent ingestelde time-outs kunt controleren. Zie Trage API-antwoorden simuleren.
U kunt uw coderingsagent ook vragen om de Dev Proxy-configuratie te schrijven. Voeg de Dev Proxy MCP server toe aan uw agent, zodat deze de Dev Proxy-documentatie en best practices kan opzoeken en kan controleren welke versie u hebt geïnstalleerd. Controleer die configuratie net als alle andere code die de agent schrijft.
Om Dev Proxy te installeren, raadpleegt u Dev Proxy instellen.