fr ▾
Créez des clés

API Ollama : Dépannage des erreurs courantes

L'API Ollama est l'interface standard pour connecter des modèles locaux ou hébergés à des outils tiers, mais de nombreux développeurs butent lorsqu'ils passent de l'inférence locale aux points de terminaison distants. Ce guide détaille les erreurs de configuration exactes, les limites de tokens et les particularités du streaming qui cassent l'intégration.

Dernière mise à jour

Résumé

  • La plupart des échecs d'intégration proviennent d'URL de base incorrectes ou d'en-têtes d'authentification manquants lors du remplacement d'Ollama local par des points de terminaison distants.
  • La fenêtre de contexte 100k inclut les tokens d'entrée et de sortie, ce qui réduit considérablement l'espace disponible pour les longues conversations.
  • Les réponses en streaming nécessitent d'analyser correctement les fragments SSE, car les métadonnées d'utilisation des jetons n'apparaissent que dans le dernier fragment.
  • L'appel de fonctions et le mode JSON nécessitent une validation stricte du schéma, sinon le modèle renverra du JSON mal formé.

Comprendre la fenêtre de contexte de 100k

La première phrase de chaque section répond à la question figurant dans son titre.

Une fenêtre de contexte de 100 000 tokens semble massive, mais elle se divise également entre les prompts d'entrée et les complétions de sortie. Lorsque vous envoyez un prompt système long accompagné d'un historique de conversation étendu, vous consommez ce budget plus rapidement que prévu. De nombreux développeurs supposent que la limite s'applique uniquement à l'entrée, ce qui entraîne des réponses tronquées ou des échecs silencieux lorsque le modèle atteint sa limite.

Envisagez un scénario où vous transmettez un document de 50 000 jetons comme contexte. Il ne vous reste que 50 000 jetons pour la génération réelle. Si vous ne gérez pas cet équilibre avec soin, le modèle s'arrêtera en plein milieu d'une phrase. Surveillez toujours le nombre total de jetons envoyés dans chaque requête pour éviter une troncature inattendue.

Tokens max vs. Longueur de sortie par défaut

Chaque section doit répondre à la question figurant dans son titre.

À moins que vous ne spécifiiez une limite, la plupart des APIs ont par défaut une longueur de sortie modeste, souvent autour de 2 048 tokens. Cette valeur par défaut est utile pour les requêtes courtes mais désastreuse pour la génération de code ou l'écriture longue. Si vous avez besoin que le modèle produise un script complet ou une analyse détaillée, vous devez définir explicitement le paramètre max_tokens.

Définir cette valeur trop haut peut également affecter la latence et le coût. Vous payez pour chaque jeton généré, qu'il soit utile ou non. Une approche pragmatique consiste à définir une limite supérieure raisonnable qui correspond à votre cas d'utilisation, plutôt que de la laisser par défaut ou à une infinité arbitraire.

Gestion correcte des chunks SSE en streaming

Le streaming nécessite une gestion soignée des Server-Sent Events pour éviter les pertes de données.

Lorsque vous activez le streaming, l'API renvoie une série de petits blocs plutôt qu'une réponse complète unique. Chaque bloc contient un delta de texte, mais des détails cruciaux comme les statistiques d'utilisation des tokens sont souvent présents uniquement dans le dernier bloc. Si vous arrêtez l'analyse trop tôt, vous manquez les données d'utilisation nécessaires à la facturation ou au suivi des limites de débit.

De plus, le streaming introduit une complexité dans la gestion des erreurs. Une interruption réseau peut vous laisser avec du texte partiel. Vous avez besoin d'un analyseur robuste capable de reconstituer le message complet à partir de ces fragments. Cela est particulièrement vrai lors de l'intégration avec des composants d'interface utilisateur qui rendent le texte en temps réel.

Erreurs de définition d'outils d'appel de fonction

L’appel de fonction échoue lorsque les schémas d’outil ne correspondent pas aux attentes du modèle.

Le modèle attend une structure JSON spécifique pour les définitions d'outils. Si vous omettez les champs obligatoires ou utilisez des types incorrects, le modèle peut ignorer l'outil ou renvoyer une réponse mal formée. C'est un point de douleur courant pour les développeurs qui créent des agents capables d'interagir avec des API externes.

Validez toujours le schéma de votre outil par rapport à la documentation API avant d'envoyer des requêtes. Même de petites déviations, comme l'utilisation d'un entier au lieu d'une chaîne pour un paramètre, peuvent casser l'appel de fonction. Le débogage de cela nécessite d'inspecter la réponse JSON brute pour voir si le modèle a tenté d'appeler l'outil ou non.

Problèmes de format de réponse du Mode JSON

Le mode JSON force le modèle à sortir du JSON valide, mais il peut encore halluciner.

Lorsque vous définissez response_format sur json_object, le modèle est contraint de ne produire que du JSON. Cependant, cela ne garantit pas que le contenu est sémantiquement correct. Le modèle peut produire une syntaxe JSON valide mais avec des clés erronées ou des champs manquants. Vous avez toujours besoin d’un analyseur pour valider la structure avant d’utiliser les données.

De plus, le mode JSON peut parfois réduire la créativité ou la flexibilité du modèle. Si votre invite est trop complexe, le modèle pourrait avoir du mal à adapter le récit à une structure JSON rigide. Utilisez ce mode principalement pour l'extraction de données structurées ou les arguments de fonction où la cohérence est plus importante que la nuance.

Limitation du débit et requêtes simultanées

Les limites de débit sont appliquées par clé API, et non par utilisateur ou adresse IP.

La plupart des API imposent une limite sur les requêtes par minute et les connexions concurrentes. Si vous dépassez ces limites, vous recevrez une erreur 429 Too Many Requests. C'est critique pour les applications qui génèrent plusieurs threads ou processus pour gérer les demandes des utilisateurs. Une seule clé ne peut gérer qu'un nombre limité de requêtes parallèles.

Pour gérer cela, implémentez une rétroaction exponentielle dans le code de votre client. Lorsque vous recevez une erreur 429, attendez un court instant avant de réessayer. Cela évite de surcharger le serveur et garantit une expérience utilisateur plus fluide. Vérifiez toujours les en-têtes de réponse pour les valeurs retry-after afin d'optimiser vos temps d'attente.

Comportement de remplacement de clé API

La régénération d'une clé API invalide immédiatement la précédente.

Certaines plateformes n’autorisent qu’une seule clé active par compte. Si vous générez une nouvelle clé, l’ancienne cesse de fonctionner instantanément. Cela peut provoquer des pannes si vous avez plusieurs services ou scripts utilisant l’ancienne clé. Mettez toujours à jour toutes les instances de votre clé avant de la faire tourner.

Ce comportement est conçu pour la sécurité, garantissant qu'une clé divulguée ne peut pas être utilisée indéfiniment. Cependant, il nécessite une gestion rigoureuse dans les systèmes distribués. Utilisez des variables d'environnement ou des gestionnaires de secrets pour stocker votre clé, facilitant ainsi les mises à jour et réduisant les erreurs.

Limites de taille du corps de la requête

Les gros payloads peuvent dépasser la limite de corps de requête de 8 Mo.

Lors de l’envoi de longs documents ou d’images encodées en base64, le corps de la requête peut augmenter rapidement. Si vous dépassez la limite de taille, le serveur rejettera la requête avec une erreur 413 Payload Too Large. Il s’agit d’une limite stricte qui ne peut pas être augmentée en améliorant votre plan dans de nombreux cas.

Pour éviter cela, compressez votre entrée ou divisez les gros documents en chunks plus petits. Vous pouvez également utiliser une méthode d'encodage plus efficace pour les images. Surveillez toujours la taille de vos requêtes, surtout lors du traitement de contenus riches en médias.

Questions fréquemment posées

Le LLM sans filtre prend-il en charge les mêmes paramètres que les modèles standards ?

Oui, le moteur sans censure prend en charge les paramètres standard comme temperature, top_p et les séquences d'arrêt. Il est conçu pour être un remplacement direct des modèles standard, vous pouvez donc utiliser le même code client et les mêmes paramètres que vous connaissez déjà.

La clé API Ollama est-elle sécurisée pour une utilisation en production ?

La clé API est liée à votre crédit prépayé et à vos limites d'utilisation. Elle est sécurisée tant que vous la gardez privée. Nous n'utilisons pas vos invites pour l'entraînement, et la clé peut être remplacée instantanément en cas de compromission. Assurez-vous simplement de la stocker dans des variables d'environnement et non dans votre code source.

Puis-je utiliser ce modèle IA sans censure pour des projets commerciaux ?

Oui, vous pouvez utiliser le texte généré à des fins commerciales. Le modèle est ajusté pour une utilisation sans restriction, y compris le contenu adulte, tant qu'il n'implique pas de mineurs. Il n'y a pas de frais de licence supplémentaires au-delà des frais d'utilisation des jetons.

Comment gérer les erreurs lorsque le modèle ollama sans censure renvoie un JSON invalide ?

Mettez en œuvre un mécanisme de nouvelle tentative avec une limite de tentatives. Si le modèle renvoie un JSON invalide, vous pouvez réessayer la requête avec une valeur de température plus faible pour encourager une sortie plus déterministe. Validez toujours la structure JSON avant d'utiliser les données dans votre application.

Obtenez votre clé API en quelques secondes

Inscrivez-vous, copiez la clé, mettez à jour l'URL du point de terminaison. C'est tout ce qu'il faut faire.

Créez des clés