LLM Inference APIGuide
Dépannage des erreurs courantes de l'API de chat IA
Le débogage d'une intégration d'API de chat IA échoue souvent en raison d'en-têtes mal configurés, de limites de tokens mal comprises ou d'une gestion incorrecte du streaming. Ce guide traite des erreurs d'implémentation les plus courantes que les développeurs rencontrent lors de l'intégration d'endpoints compatibles OpenAI, garantissant que votre code fonctionne de manière fiable en production.
Mis à jour :
Points clés
- Calculez toujours l'utilisation des tokens en fonction du tokenizer du modèle spécifique, et non uniquement du comptage de caractères, pour éviter les débordements de la fenêtre de contexte.
- Gérez les erreurs de streaming en vérifiant le code de statut HTTP avant d'analyser le flux JSON, car les coupures réseau peuvent laisser le flux dans un état incohérent.
- Assurez-vous que vos en-têtes de requête correspondent strictement à la spécification de l'API, en particulier les champs Content-Type et Authorization, pour éviter les erreurs silencieuses 400 ou 401.
- Mettez en œuvre immédiatement des stratégies de backoff en cas de limite de débit, car le dépassement de 300 requêtes par minute entraînera des erreurs 429 qui bloqueront votre application.
Compréhension des fenêtres de contexte
L'une des raisons les plus fréquentes d'échec de l'API est le dépassement de la fenêtre de contexte. La fenêtre de contexte définit le nombre total de tokens autorisés dans une seule requête, incluant à la fois le prompt d'entrée et la complétion générée. Lorsque cette limite est atteinte, l'API rejettera la requête avec une erreur, indiquant souvent que la séquence est trop longue.
Les développeurs confondent souvent le nombre de caractères avec le nombre de tokens. Un seul mot peut représenter plusieurs tokens selon le tokenizer. Par exemple, une fenêtre de contexte de 100 000 tokens, telle que celle fournie par notre API d'inférence, permet de conserver un historique de conversation important ou de traiter de grands documents, mais elle n'est pas infinie.
- Surveillez l'utilisation des tokens : Utilisez le tokenizer officiel de votre modèle pour compter précisément les tokens avant d'envoyer une requête.
- Coupez intelligemment : Si vous dépassez la limite, supprimez les messages les plus anciens de l'historique de conversation plutôt que les plus récents.
- Prévoyez une marge : Réservez des tokens pour la réponse du modèle. Si votre prompt utilise 63 000 tokens, il ne vous reste que 1 000 tokens pour la complétion.
Le non-respect de cette limite entraîne des déconnexions ou des réponses incomplètes. Vérifiez toujours vos nombres de tokens par rapport à la documentation du modèle avant de déployer en production.
Gestion des erreurs de streaming
Les réponses en streaming via Server-Sent Events (SSE) sont essentielles pour une bonne expérience utilisateur, mais elles introduisent une complexité dans la gestion des erreurs. Contrairement aux réponses JSON standard, un flux peut se briser en cours de route. Si une erreur réseau se produit, votre client peut recevoir des données partielles, laissant le flux dans un état indéfini.
Lors de l'implémentation d'un consommateur de streaming, vous devez gérer soigneusement le cycle de vie du flux. Vérifiez le code de statut HTTP avant de tenter d'analyser le flux. Si la connexion est interrompue, vous devez inscrire l'erreur et décider si vous devez réessayer ou afficher un message à l'utilisateur.
De plus, assurez-vous que votre client gère correctement le marqueur de fin de flux. Certaines bibliothèques attendent un événement de fermeture spécifique, tandis que d'autres dépendent de la fermeture de la connexion. Une mauvaise compréhension de cela peut entraîner des processus bloqués ou des fuites de mémoire.
Implémentez toujours un délai d'attente pour vos requêtes de streaming. Si l'API n'envoie pas de réponse dans un délai raisonnable, annulez la requête pour libérer les ressources. Ceci est crucial pour maintenir la stabilité dans les environnements à haute concurrence.
Comptage et limites de tokens
Le comptage des tokens ne consiste pas seulement à rester dans la fenêtre de contexte ; il s'agit également de la gestion des coûts. Chaque token a un prix spécifique, et une erreur de calcul de l'utilisation peut entraîner des factures inattendues. Bien que notre tarification soit transparente, avec des tarifs par token pour l'entrée et la sortie, vous devez toujours suivre l'utilisation avec précision.
La plupart des développeurs utilisent une bibliothèque pour compter les tokens, mais il est crucial d'utiliser le bon tokenizer pour le modèle que vous utilisez. Différents modèles utilisent différents tokenizers, et l'utilisation du mauvais peut entraîner des écarts significatifs dans le nombre de tokens comptés. Par exemple, un tokenizer entraîné sur du texte anglais peut gérer la ponctuation différemment de celui entraîné sur du code.
Surveillez vos limites d'utilisation. Notre API autorise 300 requêtes par minute par clé. Si vous dépassez cette limite, vous recevrez une erreur 429 Trop de requêtes. L'implémentation d'un simple compteur dans votre application peut vous aider à respecter ces limites et à éviter les interruptions de service.
Enfin, rappelez-vous que les nombres de tokens peuvent varier légèrement entre les différentes implémentations d'un même tokenizer. Testez toujours votre logique de comptage de tokens avec quelques entrées connues pour garantir la cohérence.
Pièges de configuration des en-têtes
Les en-têtes sont la couche de configuration de vos requêtes API. Une mauvaise configuration est une source fréquente d'erreurs 400 Bad Request ou 401 Unauthorized. Les deux en-têtes les plus critiques sont Content-Type et Authorization.
L'en-tête Content-Type doit être défini sur application/json. S'il est manquant ou incorrect, l'API peut ne pas analyser correctement le corps de votre requête. L'en-tête Authorization doit inclure votre clé API au format Bearer YOUR_API_KEY. Une erreur courante est d'oublier le préfixe Bearer, ce qui entraîne une erreur d'authentification.
- Vérifiez les fautes de frappe : Assurez-vous que votre clé API est copiée correctement, y compris les espaces ou sauts de ligne en fin de chaîne.
- Vérifiez les en-têtes : Utilisez un outil comme
curlou Postman pour inspecter les en-têtes envoyés. - Gérez la sensibilité à la casse : Certaines API sont sensibles à la casse pour les noms d'en-têtes, bien que la plupart des API modernes ne le soient pas.
Vérifiez toujours vos en-têtes avant d'envoyer une requête. Une petite erreur dans un en-tête peut entraîner l'échec de toute la requête, conduisant à de la confusion et à un temps de débogage gaspillé.
Gestion des limites de débit
Les limites de débit sont mises en place pour garantir une utilisation équitable et prévenir les abus. Notre API autorise 300 requêtes par minute par clé. Si vous dépassez cette limite, vous recevrez une erreur 429 Trop de requêtes. Cette erreur inclut un en-tête Retry-After, qui indique combien de temps vous devez attendre avant d'envoyer une autre requête.
Pour gérer efficacement les limites de débit, implémentez une stratégie de backoff. Au lieu de réessérer immédiatement, attendez une période qui augmente de manière exponentielle à chaque réessai. Cela empêche votre application de submerger l'API pendant les périodes de pointe.
Surveillez vos métriques d'utilisation. La plupart des APIs fournissent un tableau de bord ou un endpoint API pour suivre votre volume de requêtes. Utilisez ces données pour optimiser le schéma de requête de votre application. Si vous effectuez trop de petites requêtes, envisagez de les regrouper.
N'oubliez pas que les limites de débit sont par clé, et non par compte. Si vous avez plusieurs clés, chaque clé a sa propre limite. Planifiez la distribution de vos clés en conséquence pour éviter de toucher des limites de manière inattendue.
Interprétation des codes d'erreur
Comprendre les codes d'erreur est crucial pour le débogage. Les erreurs les plus courantes que vous rencontrerez sont 400 Bad Request, 401 Unauthorized, 429 Too Many Requests et 500 Internal Server Error.
- 400 Bad Request : Cela indique généralement un problème avec le corps de la requête, tel que des champs manquants ou du JSON invalide. Consultez le message d'erreur pour plus de détails sur le champ incorrect.
- 401 Unauthorized : Cela indique un problème avec votre clé API. Vérifiez que la clé est correcte et n'a pas été révoquée.
- 429 Too Many Requests : Cela indique que vous avez dépassé la limite de débit. Mettez en œuvre une stratégie de backoff pour gérer cela correctement.
- 500 Internal Server Error : Cela indique un problème côté serveur. Réessayez la requête après un court délai.
Journalisez toujours le corps de la réponse d'erreur. Il contient souvent des informations précieuses sur ce qui s'est mal passé, comme le champ spécifique qui a causé l'erreur. Cela peut vous faire gagner des heures de temps de débogage.
Optimisation des corps de requête
Le corps de la requête est au cœur de votre interaction avec l'API. Son optimisation peut améliorer les performances et réduire les coûts. Une erreur courante consiste à envoyer trop de données dans une seule requête. Si votre prompt est trop volumineux, vous risquez de dépasser la fenêtre de contexte ou d'engendrer des coûts plus élevés.
Structurez soigneusement votre JSON. Assurez-vous que tous les champs obligatoires sont présents et que les champs optionnels ne sont inclus que si nécessaire. Par exemple, si vous n'avez pas besoin du streaming, n'incluez pas le paramètre stream. Cela réduit la taille du payload et simplifie la réponse.
Utilisez des outils comme curl ou Postman pour tester vos corps de requête. Cela vous permet de vérifier que le JSON est valide et que l'API l'interprète correctement. Cela vous aide également à identifier les données inutiles envoyées.
Enfin, envisagez de mettre en cache les réponses pour les requêtes identiques. Si vous envoyez le même prompt plusieurs fois, vous pouvez stocker la réponse localement et éviter d'appeler à nouveau l'API. Cela peut réduire significativement la latence et les coûts pour les tâches répétitives.
Débogage de l'appel de fonctions
L'appel de fonctions permet au modèle d'exécuter des fonctions en fonction de l'entrée de l'utilisateur. Le débogage de l'appel de fonctions peut être difficile car il implique plusieurs étapes : envoyer la requête, recevoir l'appel de fonction, exécuter la fonction et renvoyer le résultat au modèle.
Assurez-vous que vos définitions de fonctions sont précises. Le schéma doit correspondre à la signature réelle de la fonction. Si le schéma est incorrect, le modèle peut générer des arguments invalides, entraînant des erreurs lors de l'exécution de la fonction.
Journalisez les arguments de l'appel de fonction et la sortie de la fonction. Cela vous permet de vérifier que le modèle génère les bons arguments et que votre fonction s'exécute comme prévu. En cas d'erreur, le journal vous aidera à identifier le problème.
Gérez les erreurs avec élégance. Si l'exécution de la fonction échoue, renvoyez un message d'erreur au modèle afin qu'il puisse ajuster sa réponse. Cela améliore l'expérience utilisateur et permet au modèle de se remettre des erreurs.
Questions et réponses
Comment calculer l'utilisation de tokens pour mes requêtes API ?
Utilisez la bibliothèque de tokenisation officielle fournie pour votre modèle spécifique. Le nombre de caractères n'est pas un indicateur fiable du nombre de tokens, car différents caractères peuvent représenter des nombres de tokens différents. La plupart des SDK fournissent une fonction utilitaire pour compter les tokens avec précision.
Que se passe-t-il si je dépasse la limite de débit ?
Vous recevrez une erreur 429 Too Many Requests. La réponse inclura un en-tête <code>Retry-After</code> indiquant combien de temps vous devez attendre avant de réessayer. Il est recommandé de mettre en œuvre une stratégie de backoff exponentiel pour gérer cela correctement.
Puis-je utiliser n'importe quel SDK compatible OpenAI avec cette API ?
Oui, tout SDK qui prend en charge le format de l'API OpenAI peut être utilisé en modifiant simplement les variables d'environnement <code>base_url</code> et <code>API_KEY</code>. Cela inclut Python, Node.js et d'autres langages populaires.
Comment gérer les erreurs de streaming dans mon application ?
Vérifiez le code de statut HTTP avant d'analyser le flux. Si la connexion est interrompue, journalisez l'erreur et décidez si vous devez réessayer ou afficher un message à l'utilisateur. Implémentez un délai d'attente pour éviter les processus bloqués.
Votre clé est à un formulaire de vous
Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.
Obtenir une clé API