Présentation
L’API Agent-First de LemonData enrichit les réponses d’erreur avec des indices structurés que les agents IA peuvent analyser et exploiter immédiatement — sans recherche web, sans consultation de documentation, sans approximation. Chaque réponse d’erreur inclut des champs optionnels tels quedid_you_mean, suggestions, hint, retryable et retry_after à l’intérieur de l’objet error standard. Ces champs sont rétrocompatibles — les clients qui ne les utilisent pas ne voient aucune différence.
Champs d’indices d’erreur
Tous les champs d’indices sont des extensions optionnelles à l’intérieur de l’objeterror :
| Champ | Type | Description |
|---|---|---|
did_you_mean | string | Nom du modèle correspondant le plus proche |
suggestions | array | Modèles recommandés avec métadonnées |
alternatives | array | Modèles alternatifs actuellement disponibles |
hint | string | Conseils sur l’étape suivante lisibles par l’humain ou l’agent |
retryable | boolean | Indique si une nouvelle tentative de la même requête peut réussir |
retry_after | number | Secondes à attendre avant de réessayer |
balance_usd | number | Solde actuel du compte en USD |
estimated_cost_usd | number | Coût estimé de la requête ayant échoué |
Exemples de codes d’erreur
model_not_found (400)
Lorsqu’un nom de modèle ne correspond à aucun modèle actif :did_you_mean utilise :
- Un mappage d’alias statique (à partir des données d’erreur de production)
- Une correspondance de chaînes normalisées (supprime les traits d’union, insensible à la casse)
- Une correspondance par distance d’édition (seuil ≤ 3)
insufficient_balance (402)
Lorsque le solde du compte est trop bas pour le coût estimé :suggestions contient des modèles moins chers que le coût estimé vers lesquels l’agent peut basculer.
all_channels_failed (503)
Lorsque tous les canaux amont pour un modèle sont indisponibles :retryable est false lorsque la raison est no_channels (aucun canal configuré pour ce modèle). Il est true uniquement pour les échecs transitoires comme les déclenchements de disjoncteur ou l’épuisement des quotas.rate_limit_exceeded (429)
retry_after est calculée à partir du temps de réinitialisation réel de la fenêtre de limite de débit.
context_length_exceeded (400)
Lorsque l’entrée dépasse la fenêtre de contexte du modèle (erreur en amont, enrichie d’indices) :En-têtes d’endpoint natif
Lorsque vous appelez/v1/chat/completions avec un modèle disposant d’un endpoint natif (Anthropic ou Gemini), la réponse de succès inclut des en-têtes d’optimisation :
| Fournisseur du modèle | Endpoint suggéré | Avantage |
|---|---|---|
| Anthropic (Claude) | /v1/messages | Pas de conversion de format, réflexion étendue, mise en cache des prompts |
| Google (Gemini) | /v1beta/gemini | Pas de conversion de format, ancrage (grounding), paramètres de sécurité |
| OpenAI | — | Chat completions est déjà le format natif |
Améliorations de /v1/models
Trois nouveaux champs dans l’extensionlemondata de chaque objet modèle :
| Champ | Valeurs | Description |
|---|---|---|
category | chat, image, video, audio, tts, stt, 3d, embedding, rerank | Type de modèle |
pricing_unit | per_token, per_image, per_second, per_request | Comment le modèle est facturé |
cache_pricing | objet ou null | Prix du cache de prompt en amont + remise sur le cache sémantique de la plateforme |
Filtrage par catégorie
llms.txt
Un aperçu de l’API lisible par machine est disponible à l’adresse :- Un modèle de premier appel avec un exemple fonctionnel
- Les noms de modèles courants (générés dynamiquement à partir des données d’utilisation)
- Les 12 endpoints API
- Des paramètres de filtrage pour la découverte de modèles
- Des conseils sur la gestion des erreurs
llms.txt avant leur premier appel API peuvent généralement réussir dès la première tentative.
Utilisation dans le code de l’agent
Python (SDK OpenAI)
JavaScript (SDK OpenAI)
Principes de conception
Échouer rapidement, échouer de manière informative
Les erreurs sont renvoyées immédiatement avec toutes les données dont un agent a besoin pour s’auto-corriger.
Pas de routage automatique
L’API ne substitue jamais silencieusement un modèle différent. C’est l’agent qui décide.
Suggestions basées sur les données
Toutes les recommandations proviennent de données de production, et non de listes codées en dur.
Rétrocompatible
Tous les champs d’indices sont optionnels. Les clients existants ne voient aucune différence.