Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Váš agent pro psaní kódu říká, že přidal opakované pokusy a zpracování omezení rychlosti a jeho testy prošly. Než tomu budete důvěřovat, zkontrolujte, proti čemu byly testy spuštěny.
V testu jsme spustili 3 kódovací agenty (210 spuštění), požádali jsme je, aby upravili aplikace tak, aby zpracovávaly selhání API, a ukázali, že to funguje. V 76 % ze 140 spuštění, která požadovala funkční kód, agent sestavil selhání ručně pomocí stubů pro fetch, httpx.MockTransport nebo dočasného HTTP serveru. V 75 spuštěních, kde bylo skutečné rozhraní API k dispozici a výzva ho nevyloučila, 0 jich otestovalo aplikaci na jeho skutečné adrese URL rozhraní API. Úspěšné testy, jako jsou tyto, ukazují, že kód agenta zpracovává selhání, které si agent představoval. To je jiné selhání než to, které rozhraní API odesílá.
Kontrolní seznam
- Zeptejte se, vůči čemu se testovalo. Zeptejte se agenta: „Na kterou adresu URL aplikace během vašeho testu volala a co vrátilo tuto chybu?“ Pokud je odpovědí stub nebo místní server, který napsal, zacházejte s testy jako s jednotkovými testy větví, které přidal.
- Vyhledejte přepínače přidané pro testy. V rozdílu vyhledejte nové proměnné prostředí, nastavení základní adresy URL nebo příznaky. V našem testu 61 ze 105 spuštění aplikací, které volají GitHub, OpenAI nebo rozhraní API pro počasí, přidalo jedno. Rozhodněte se, jestli ho chcete použít v produkčním prostředí.
- Zkontrolujte kód se zdokumentovaným chováním rozhraní API. Každé rozhraní API selže vlastním způsobem:
-
GitHub: Když překročíte primární limit počtu požadavků, získáte hodnotu 403 nebo 429 s nastaveným
0parametremx-ratelimit-remaininga počkáte do času uvedeného vx-ratelimit-reset, v sekundách UTC epochy. V případě sekundárních limitů požadavků počkejte naretry-after, pokud je k dispozici, jinak dox-ratelimit-reset, pokud jex-ratelimit-remaining0, jinak alespoň 1 minutu. Kód, který kontroluje pouze kód 429, nezachytí odpovědi 403. -
OpenAI: některé chyby 429 souvisejí s fakturací a limity výdajů, například
credit_balance_exhausted. Opakovat je nepomůže. Kód, který opakuje pokus při každé chybě 429, před vámi skryje problém. -
Anthropic: spend cap 429 nemá žádné
retry-afterzáhlaví a přetížení vrací 529, což kód, který zná pouze standardní stavové kódy, nemusí očekávat.
-
GitHub: Když překročíte primární limit počtu požadavků, získáte hodnotu 403 nebo 429 s nastaveným
- Zkontrolujte, jak to zní
Retry-After. Záhlaví obsahuje počet sekund nebo datum HTTP (RFC 9110). Zkontrolujte, jestli kód zpracovává formát, který rozhraní API odesílá, limituje počet pokusů a celkovou dobu čekání a neprovádí opakované pokusy nad rámec sady SDK, která už opakování provádí. - Zkontrolujte, co uživatel uvidí, když se vyčerpají opakované pokusy. Hledejte jasnou zprávu místo trasování zásobníku nebo nekonečného indikátoru načítání a zkontrolujte, jestli uživatel nepřijde o svou práci.
- Spusťte aplikaci na jejích skutečných URL adresách se simulovanými chybami. Toto je jediný krok, který ukazuje, jak se spuštěná aplikace, její sada SDK a zásady opakování pokusů chovají společně.
Jak ověřit zpracování chyb napsaných agentem
| Approach | Co najdete | Co vám chybí |
|---|---|---|
| Přečíst diff | Zda kód vypadá správně | Jestli se chová správně vůči skutečným odpovědím rozhraní API |
| Spusťte testy agenta | Že větve, které vytvořilo, běží. | Všechno, co stub implementace nemodelovala: skutečné stavové kódy, hlavičky, tělo chyb a opakované pokusy v SDK |
| Volejte skutečné rozhraní API, dokud se nezdaří | Skutečné chování | Nemůžete vyvolat selhání na požádání a utratíte skutečnou kvótu. |
| Spusťte aplikaci na skutečných adresách URL se simulovanými chybami | Jak spuštěná aplikace, její sada SDK a její zásady opakování zpracovávají vlastní chyby rozhraní API | Váš kód v izolaci. Pro to zachovejte jednotkové testy agenta. |
Vyzkoušejte si ji v aplikaci
Dev Proxy zachytí požadavky, které aplikace odešle do skutečného rozhraní API, a vrátí vámi zvolené chyby beze změn kódu vaší aplikace. U oblíbených rozhraní API začněte s předvolbou. Pro kontrolu obsluhy limitu rychlosti GitHubu váš agent napsal:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Spusťte aplikaci a sledujte výstup dev proxy serveru. Předvolba vrátí hodnotu 429 s hlavičkami limitu požadavků GitHubu, jakmile vaše aplikace překročí limit.
RetryAfterPlugin v předvolbě vám řekne, jestli vaše aplikace znovu volá rozhraní API, než uplyne čekací doba. Předvolby openai-throttling a anthropic-throttling dělají totéž pro vlastní chyby omezení rychlosti poskytovatele a openai-throttling také vrací credit_balance_exhausted 429, která by se neměla opakovat.
Pro jiná rozhraní API:
- GenericRandomErrorPlugin vrátí chyby, které definujete, s četností, kterou zvolíte. Nastavte sazbu pomocí
--failure-rate. Podívejte se na Otestovat moji aplikaci s náhodnými chybami. - LatencyPlugin zpožďuje odpovědi, abyste mohli zkontrolovat časové limity, které agent nastavil. Viz Simulace pomalých odpovědí rozhraní API.
Můžete také požádat svého programovacího agenta, aby napsal konfiguraci Dev Proxy. Přidejte do agenta server MCP pro Dev Proxy, aby mohl vyhledat dokumentaci k Dev Proxy a osvědčené postupy a zkontrolovat, jakou verzi máte nainstalovanou. Zkontrolujte konfiguraci stejně jako jakýkoli jiný kód, který agent píše.
Pokud chcete nainstalovat Dev Proxy, přečtěte si téma Nastavení Dev Proxy.
Další kroky
Viz také
- Mocky, stuby, falešné implementace a emulátory: testování volání rozhraní API pomocí agentů kódování
- 429 Příliš mnoho požadavků: co to znamená a jak ho zpracovat
- Testování, jak vaše aplikace zpracovává limity počtu požadavků rozhraní API GitHub
- RetryAfterPlugin
- Simulace pomalých odpovědí rozhraní API