Chyby API agenta
Každý odmítnutý požadavek odpovídá stavovým kódem a tělem JSON s polem error, takže se skript může rozhodnout, co udělá dál.
Příklady používají proměnné ELOWEN_URL a ELOWEN_TOKEN z Odešlete první požadavek na API agenta.
Stavové kódy
| Stav | Kdy nastane | Tělo |
|---|---|---|
400 |
Tělo požadavku není platný JSON, pole má špatný typ nebo nese pole, které požadavek nepřijímá. | { "error": "…" } s popisem pole |
401 |
Token chybí, je neznámý, smazaný nebo propadlý, případně byla jeho hodnota nahrazena. | { "error": "unauthorized" } |
402 |
Účet dosáhl měsíčního limitu útraty. Samotná chybějící cena modelu toto odmítnutí nezpůsobuje. Jde o limit účtu, ne tokenu. | { "error": "spend_limit", "reason": "monthly_limit", "resetsAt": "…" }, kde resetsAt je začátek dalšího měsíce v UTC |
403 |
Požadavek vyžaduje přihlášenou relaci v prohlížeči nebo ho Váš účet nesmí použít. Viz Co token neumí. | { "error": "forbidden" } |
404 |
conversationId není jedna z Vašich konverzací. |
{ "error": "unknown conversation" } |
409 |
V konverzaci už běží tah. | { "error": "conversation_busy" } |
409 |
Požadovaný model byl odmítnut. | { "error": "…" }, stejná zpráva, jakou ukazuje webová aplikace |
429 |
Byl dosažen limit tokenu. | { "error": "…", "reason": "…" } a hlavička Retry-After |
500 |
Tah selhal, nemohl začít nebo se nepodařilo přepnout na požadovaný model. S "stream": true odpovídá tah, který nemohl začít, tímto stavem místo streamu. |
{ "error": "…", "conversationId": "…" } |
503 |
Agent není na tomto serveru dostupný. Vrací se i tehdy, když se nepodařilo zaznamenat spotřebu účtu, což blokuje jeho placené požadavky, dokud administrátor spotřebu nesrovná a Chetty nerestartuje. | { "error": "brain unavailable" }, nebo zpráva o spotřebě |
Rozhodujte se podle error a u 429 podle reason, ne podle textu zprávy.
Odmítnutí kvůli limitu
429 vždy nese Retry-After, počet sekund k čekání, a reason, podle kterého se skript může zachovat:
error |
reason |
Význam | Retry-After |
|---|---|---|---|
limit_exhausted |
requests_per_minute |
Příliš mnoho požadavků v této minutě. | Sekundy do konce minuty. |
limit_exhausted |
monthly_cost |
Měsíční limit nákladů je dosažen. | Sekundy do dalšího měsíce v UTC. |
limit_unverifiable |
monthly_cost_unverifiable |
Některý tah tento měsíc nehlásil náklady, takže limit nelze ověřit. | Sekundy do dalšího měsíce v UTC. |
limit_exhausted |
daily_cost |
Denní limit nákladů je dosažen. | Sekundy do dalšího dne v UTC. |
limit_unverifiable |
daily_cost_unverifiable |
Některý tah dnes nehlásil náklady, takže limit nelze ověřit. | Sekundy do dalšího dne v UTC. |
limit_exhausted |
concurrent_turns |
Příliš mnoho běhů stále běží. | 1 |
Když je dosaženo více limitů nákladů najednou, odpověď uvádí širší okno, měsíc před dnem, aby Retry-After byl čas, kdy běh skutečně může uspět.
curl -sS -D - "$ELOWEN_URL/api/v1/agent/runs" \
-H "Authorization: Bearer $ELOWEN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message":"One more"}'
HTTP/1.1 429 Too Many Requests
Retry-After: 52380
Content-Type: application/json
{"error":"limit_exhausted","reason":"daily_cost"}
Co se započítá z odmítnutého běhu
Běh odmítnutý limitem nic nevytvoří: žádnou konverzaci, žádný tah a nic do počtu tahů tokenu.
Totéž platí pro běh odmítnutý proto, že konverzace byla obsazená, konverzace nebo model byly neznámé, nebo jeho tah nemohl začít. Opakování po čekání proto proběhne, jako by odmítnutý pokus nikdy nenastal.
Související návody
Jak tyto limity nastavit popisuje Omezte, co může API token spustit; požadavek, který projde, Odešlete první požadavek na API agenta.