Belangrijkste punten
- Context windows combine prompt and completion, so long histories drain limits faster than expected.
- Streaming vereist zorgvuldig omgaan met SSE-gebeurtenissen om corrupte JSON of verloren tokens te voorkomen.
- JSON mode demands strict schema adherence; malformed responses cause silent parsing failures.
- Prepaid crypto-billing betekent dat fouten gratis zijn, maar het tellen van tokens moet nauwkeurig zijn om verrassingen te voorkomen.
Waarom je API-sleutel mogelijk wordt afgewezen
API-sleutels worden afgewezen wanneer de client ongeldige headers stuurt of de limieten voor de requestbody overschrijdt. De server valideert de authenticatieheader voordat enige logica wordt verwerkt. Als de header ontbreekt of extra spaties bevat, mislukt de request onmiddellijk.
Een andere veelvoorkomende oorzaak is het verzenden van een payload die de limiet van 8 MB voor de bodygrootte overschrijdt. Grote contextvensters met veel berichten kunnen deze drempel gemakkelijk overschrijden. Controleer de lengte van je berichtarray en het tokenaantal voordat je verzendt.
- Zorg ervoor dat de Authorization-header het 'Bearer'-voorvoegsel correct gebruikt.
- Verify the request body size stays under 8 MB.
- Controleer of de API-sleutel actief is en niet verlopen.
Contextvensterlimieten begrijpen
Het contextvenster omvat zowel de invoerprompt als de gegenereerde voltooiing. Onze API ondersteunt een venster van 100,000 tokens, maar je moet rekening houden met beide kanten. Als je 80,000 tokens aan context verstuurt, heb je nog maar 20,000 over voor het antwoord.
De meeste modellen hebben standaard een kleine uitvoergrenzen als je max_tokens niet opgeeft. Dit kan lange antwoorden onverwacht afkappen. Stel max_tokens alleen in op de gewenste lengte als je een limiet wilt stellen. Onthoud dat de limiet geldt voor het totale verzoek, niet alleen voor de prompt.
Verwerken van streamonderbrekingen
Streaming via Server-Sent Events (SSE) vereist robuuste foutafhandeling. Als de verbinding verbroken raakt, kun je het laatste token of de gebruiksmetadata verliezen. Buffer altijd inkomende chunks en reconstrueer de volledige respons aan de clientkant.
Gegevens over tokengebruik worden meestal verzonden in het laatste chunk van de stream. Als je de verbinding eerder sluit, kun je het exacte aantal tokens missen. Dit beïnvloedt de nauwkeurigheid van de facturatie in prepaid-systemen. Implementeer een retry-mechanisme met exponentiële backoff om tijdelijke netwerkproblemen af te handelen.
Gebruik een speciale streamingclient die SSE-parsing automatisch afhandelt. Dit vermindert het risico op parsefouten en zorgt ervoor dat je alle gegevens vastlegt.
Fouten bij het parseren van de JSON-modus
Bij het gebruik van response_format: {"type": "json_object"} moet het model geldige JSON retourneren. Elke afwijking veroorzaakt fouten bij het parseren in je applicatie. Zorg dat de prompt het model expliciet instrueert om alleen JSON uit te voeren.
Soms voegt het model markdown-codeblokken rond de JSON, wat strikte parsers verstoort. Verwijder -omhullingen voordat je de JSON verwerkt. Controleer ook de JSON-structuur aan de clientkant voordat je de gegevens gebruikt.
Gebruik een schema-validatielibrary om fouten vroeg op te sporen. Dit voorkomt crashes wanneer het model onverwachte sleutels of typen retourneert.
Token telling en facturatie verrassingen
Vooraf betaalde facturatie rekent alleen voor daadwerkelijk token-gebruik. Fouten en weigeringen zijn gratis, wat een aanzienlijk voordeel is ten opzichte van abonnementsmodellen. Token-telling kan echter lastig zijn als je niet rekening houdt met de volledige context.
Elk bericht in de gespreksgeschiedenis telt mee voor de limiet van invoertokens. Lange gesprekken verbruiken je voorbetaalde tegoed sneller dan je misschien verwacht. Houd je verbruik regelmatig in de gaten om te voorkomen dat je tegoed opraakt tijdens een sessie.
Stel meldingen in voor een laag kredietbalans. Zo kun je bijbetalen voordat je verzoeken mislukken. Onthoud dat kredieten nooit verlopen, dus je kunt bijbetalen wanneer het jou schikt.
Zachte afwijzingen bij NSFW-prompts voorkomen
Zachte weigeringen treden op wanneer het model aarzelt of een gedeeltelijk antwoord geeft in plaats van een direct antwoord. Dit gebeurt vaak bij controversiële of volwassen onderwerpen. Zelfs in een ongecensureerd model kunnen bepaalde triggers tot aarzeling leiden.
Pas de temperature-parameter aan om willekeurigheid te verminderen. Een lagere temperatuur maakt het model deterministischer en minder geneigd tot aarzelen. Zorg er ook voor dat je prompt duidelijk en direct is. Vermijd dubbelzinnige taal die het model kan verwarren.
Als je vaak te maken krijgt met zachte weigeringen, probeer de prompt dan iets anders te formuleren. Kleine wijzigingen in de formulering kunnen vaak de aarzeling omzeilen en een direct antwoord opleveren.
Scherpe pieken in de limiet voor het aantal verzoeken en backoff-strategieën
De API staat 300 verzoeken per minuut en 8 gelijktijdige verzoeken per sleutel toe. Verkeerspieken kunnen deze limieten snel bereiken. Implementeer exponentiële backoff om rate limit-fouten soepel af te handelen.
Wanneer je een 429-statuscode ontvangt, wacht dan voordat je het opnieuw probeert. Begin met een korte vertraging en verhoog deze bij elke poging. Dit voorkomt dat de server overbelast raakt tijdens piekmomenten.
Monitor uw aanvraagttempo en pas uw concurrency-niveaus dienovereenkomstig aan. Als u veel gelijktijdige aanvragen uitvoert, overweeg dan deze over de tijd te spreiden. Dit zorgt voor een constante doorvoer zonder dat u tegen limieten aanloopt.
Payloadstructurens voor functaanroepen
Voor function calling is een specifieke payload-structuur vereist. Definieer je functies in de tools-parameter en geef de tool_choice op. Het model retourneert een functieaanroep als het oordeelt dat dit de juiste reactie is.
Zorg ervoor dat uw functie-definities accuraat en compleet zijn. Ontbrekende parameters of verkeerde typen kunnen ervoor zorgen dat het model ongeldige aanroepen genereert. Valideer altijd de argumenten van de functieaanroep voordat u ze uitvoert.
Gebruik de parameter tool_choice om te bepalen wanneer het model functies aanroept. Je kunt een functaanroep afdwingen, het model de keuze laten of functaanroepen volledig uitschakelen. Dit geeft je fijne controle over het gedrag van het model.
Foutopsporing: 400 vs 500-fouten
400-fouten duiden op client-side problemen, zoals ongeldige JSON of ontbrekende parameters. 500-fouten wijzen op server-side problemen, zoals interne fouten of time-outs. Het onderscheid tussen de twee helpt je sneller te debuggen.
Controleer bij 400-fouten het foutbericht dat in de respons wordt weergegeven. Dit wijst meestal direct naar het probleem. Bij 500-fouten kun je de aanvraag na een korte vertraging opnieuw proberen. Als de fout aanhoudt, neem dan contact op met de ondersteuning en vermeld de aanvraag-ID.
Log zowel de aanvraag- als responsgegevens voor elke fout. Dit helpt bij het identificeren van patronen en terugkerende problemen. Gebruik een logservice om fouten in de tijd bij te houden en je API-integratie te verbeteren.