Aller au contenu
Thèmes

Développement IA et programmation : créez des apps

Développez mieux avec l'IA. Guides de génération de code, création d'apps, débogage et automatisation.

124 articles

Triez les articles pour trouver ce que vous cherchez

Articles dans Développement IA

API Error: The response stopped arriving : sens et solutions — quand les données de réponse de Claude Code s'arrêtent en cours de route

API Error: The response stopped arriving : sens et solutions — quand les données de réponse de Claude Code s'arrêtent en cours de route

Si Claude Code affiche « API Error: The response stopped arriving. The response above may be incomplete. » au milieu d'une réponse, c'est que la connexion est restée ouverte mais que les données ont cessé d'arriver, et que le minuteur de surveillance de Claude Code a coupé. La sortie déjà terminée est conservée : vérifiez l'état de votre travail, puis répondez continue pour reprendre là où tout s'est arrêté. Ce message est la version renommée de ce qui s'affichait sous la forme « Response stalled mid-stream » avant la v2.1.227. En nous appuyant sur la référence officielle des erreurs et sur la documentation de configuration réseau, nous expliquons ce qui le distingue de Connection lost mid-response, de The response stalled before a response was produced et de Streaming response ended before any complete data was received, pourquoi la requête n'est pas renvoyée, comment -p et les sous-agents le traitent, comment vérifier la version, le trajet réseau et les minuteurs de surveillance, et quelles informations garder pour un signalement. Les cinq signalements GitHub que nous avons ouverts sont traités à part de l'explication officielle, comme des cas non confirmés.

Login expired · Please run /login : ce que signifie ce message et comment le résoudre quand Claude Code ne peut plus renouveler votre connexion enregistrée

Login expired · Please run /login : ce que signifie ce message et comment le résoudre quand Claude Code ne peut plus renouveler votre connexion enregistrée

Si Claude Code affiche « Login expired · Please run /login », le renouvellement automatique de votre connexion enregistrée a été refusé et Claude Code a effacé les identifiants. Les instructions suivantes n'atteignent pas l'API et s'arrêtent sur votre machine : au lieu de réessayer, reconnectez-vous avec /login. En nous appuyant sur la référence officielle des erreurs, nous expliquons la différence avec Not logged in, OAuth token has expired et Your account is on hold, le changement d'affichage intervenu en v2.1.206, les étapes de la vérification avec /status à la reconnexion, que faire avec -p et en CI, et ce qu'il faut vérifier quand le message revient : la version, le trousseau, l'horloge et CLAUDE_CONFIG_DIR. Six signalements GitHub sont présentés à part, comme des cas dont la cause n'est pas établie.

Codex « thread not found » : solutions et reprise sans effacer l'historique

Codex « thread not found » : solutions et reprise sans effacer l'historique

Dans Codex, l'historique peut rester lisible alors que « thread not found » bloque l'envoi : la conversation n'est pas forcément perdue. Cet article distingue la lecture de l'envoi, présente un cas où l'envoi a repris après rechargement, et détaille l'ordre des essais. Il explique aussi comment poursuivre la tâche d'origine si le problème persiste, et quelles informations transmettre.

Qu'est-ce que Jev ? Usages, tarifs et limites d'une IA de décision qui ne génère pas de texte

Qu'est-ce que Jev ? Usages, tarifs et limites d'une IA de décision qui ne génère pas de texte

Jev est un modèle d'IA de TypeSafe qui renvoie, au lieu de texte, un choix, une valeur d'évaluation ou une probabilité Oui/Non. Vous y découvrez comment distinguer Choice, Score et Noul, lire la valeur confidence et écrire un appel d'API pour orienter des demandes. Un format correct ne garantit pas un bon jugement : l'article présente donc les faiblesses officielles, le tarif, les limites d'entrée et les vérifications à faire avant de l'utiliser en français.

Qu'est-ce qu'opusplan dans Claude Code ? Opus pour planifier, Sonnet pour implémenter : réglage et points de vigilance

Qu'est-ce qu'opusplan dans Claude Code ? Opus pour planifier, Sonnet pour implémenter : réglage et points de vigilance

Vous voulez confier uniquement la planification à un modèle intelligent, et l'implémentation à un modèle plus rapide et moins cher. Le réglage opusplan de Claude Code fait cela automatiquement. Il tourne sur Opus pendant le mode planification et sur Sonnet le reste du temps, et s'utilise avec /model opusplan ou avec le champ model de settings.json. En revanche, il n'apparaît pas dans la liste de /model, et comme le modèle change chaque fois que vous entrez en mode planification ou en sortez, chaque bascule relit toute la conversation sans le cache. En s'appuyant sur la documentation officielle, le CHANGELOG et les issues GitHub au 15 septembre 2026, cet article présente la configuration (y compris le choix des versions et le contexte de 1M), le passage du mode planification à l'implémentation après approbation, son retrait de l'écran de sélection dans la v2.0.0 et l'explication d'un membre de l'équipe d'Anthropic, une estimation du coût de cache qu'entraîne une bascule et les moyens de le limiter, les différences avec l'outil advisor et les sous-agents, ainsi que les usages qui s'y prêtent et ceux qui ne s'y prêtent pas.

Claude Code : exécuter les sous-agents sur un autre modèle, les confier à Sonnet ou Haiku (réglages et mesures)

Claude Code : exécuter les sous-agents sur un autre modèle, les confier à Sonnet ou Haiku (réglages et mesures)

Peut-on garder la session principale de Claude Code sur Opus 5 et ne confier que des tâches comme la traduction ou les vérifications en grand nombre à des sous-agents Sonnet ou Haiku ? Oui. Le modèle d'un sous-agent est choisi dans cet ordre : le modèle indiqué à l'appel, le champ model du fichier de définition, la variable d'environnement CLAUDE_CODE_SUBAGENT_MODEL, puis le modèle de la session principale, et l'effort peut lui aussi être réglé pour chaque sous-agent. En s'appuyant sur la documentation officielle au 15 septembre 2026, cet article fait le point sur les différences de cet ordre selon la version, sur CLAUDE_CODE_SUBAGENT_MODEL_FORCE pour aligner tous les sous-agents sur un seul modèle, sur la cible des alias qui change selon le fournisseur, et sur le fait que, depuis la v2.1.198, l'Explore intégré reprend le modèle de la session principale. Il présente ensuite ce que j'ai constaté en lançant réellement des sous-agents sur d'autres modèles et en vérifiant les journaux de conversation : ils ont tourné sur les modèles indiqués, chacun a lu des dizaines de milliers de tokens rien que pour démarrer, le cache des sous-agents expire au bout de 5 minutes même avec un abonnement, et la même traduction confiée deux fois à Opus 5, Sonnet 5 et Haiku 4.5 a donné des différences de temps, de coût et de qualité. Enfin, il résume l'effet sur le coût et sur les limites d'utilisation, et les éléments pour décider quelles tâches confier à un modèle moins cher.

Claude Code : mesurer la consommation par session pour savoir laquelle dévore votre forfait

Claude Code : mesurer la consommation par session pour savoir laquelle dévore votre forfait

Lancez plusieurs sessions en parallèle et vous finissez par vous demander laquelle dévore votre limite hebdomadaire. Pourtant, le /usage de Claude Code n'affiche que les chiffres de la session en cours et la consommation de l'ensemble du forfait répartie par Skill, sous-agent, plugin et serveur MCP, et la part consommée par chaque session n'apparaît ni dans l'anneau de consommation de l'application desktop ni sur la page des paramètres de claude.ai (en septembre 2026). La réponse se trouve dans les journaux de conversation stockés sur votre machine (les fichiers JSONL de ~/.claude/projects), mais les additionner tels quels donne un résultat faux, car une même réponse s'écrit sur plusieurs lignes, une par bloc de contenu, et les enregistrements des sous-agents se trouvent dans des fichiers séparés. Mesuré sur ma propre machine, le total naïf atteignait environ deux fois la valeur correcte, et comme l'ampleur de l'erreur variait d'une session à l'autre, même le classement changeait. Cet article couvre ce que les écrans officiels montrent et ne montrent pas, la bonne façon de compter les journaux avec un script d'agrégation d'une cinquantaine de lignes, le résultat mesuré où une seule session a pris près d'un tiers de toute la consommation, les limites de ce que les chiffres peuvent vous dire, et la mise en place d'OpenTelemetry si vous voulez surveiller dans la durée.

Claude Code : qu'est-ce qui dévore vraiment votre contexte ? Comment le mesurer, et par quoi couper en premier

Claude Code : qu'est-ce qui dévore vraiment votre contexte ? Comment le mesurer, et par quoi couper en premier

« Trop de Skills installés et le contexte est saturé » : c'est à moitié vrai et à moitié faux. D'après la documentation officielle de Claude Code, la liste des Skills puise dans un budget fixe de 1 % de la fenêtre de contexte du modèle, et vous aurez beau ajouter des Skills, elle s'arrête là. Au lieu de gonfler, la liste se met à supprimer des descriptions, en commençant par les Skills les moins souvent invoqués, et ne garde que leur nom. Un Skill privé de sa description ne se raccroche plus à ce que vous demandez, et pourtant aucune erreur n'apparaît et rien ne ralentit. Cet article passe en revue les rôles distincts des trois outils de mesure (/context, /usage et /skill-doctor), la définition d'un défaut de cache à 5 % et 2 000 tokens, la façon dont la durée de vie du cache tombe d'une heure à cinq minutes selon la formule souscrite, la raison pour laquelle un CLI reste plus léger que MCP maintenant que les définitions d'outils sont chargées à la demande par défaut, le raisonnement derrière l'objectif de 200 lignes pour CLAUDE.md, et enfin par quoi couper en premier une fois la mesure faite — le tout limité à ce qui a pu être confirmé dans la documentation officielle.

The model returned no content : causes et solutions — un message d'erreur de Claude change de sens selon qui l'a écrit

The model returned no content : causes et solutions — un message d'erreur de Claude change de sens selon qui l'a écrit

Vous butez sur un mur en utilisant Claude, vous cherchez le message exact qui s'est affiché, et il ne revient presque rien. Cinq chaînes se comportent ainsi : The model returned no content because the response was blocked by content filtering, The response was blocked by the provider's content filter, Streaming response ended before any complete data was received, Could not locate the Claude CLI on PATH et Connection to Claude's response was lost. Claude may still be working. Ce qu'elles ont en commun, c'est qu'elles sont apparues pendant que vous utilisiez Claude et que chercher dans la documentation de Claude semble pourtant ne rien donner ; la raison est simple : le programme qui a écrit le message à l'écran n'est pas forcément celui que vous croyez. Cet article n'explique pas chaque cause depuis le début. C'est un hall d'entrée qui identifie qui a écrit le message et vous renvoie vers le bon article. Il commence par répartir les auteurs possibles en quatre couches : le backend qui sert le modèle, Claude Code lui-même, l'extension d'IDE ou le wrapper qui le lance, et les clients tiers ; puis il confronte les chaînes au catalogue. Deux des cinq se révèlent être des entrées de la référence des erreurs officielle de Claude Code. La définition officielle du message de streaming est que les en-têtes sont revenus mais que le corps ne portait aucun message de l'API Claude, ce qui n'est pas du tout une coupure à mi-chemin, et le lire comme une connexion perdue vous envoie sur la mauvaise piste. Could not locate the Claude CLI on PATH se trouve dans un chapitre distinct, Wrapper and IDE errors, décrit comme imprimé par le programme lanceur plutôt que par Claude Code, et l'affichage réel peut faire quatre phrases là où l'intitulé officiel n'en fait qu'une, d'où l'absence de résultats en recherche. Les deux messages de filtre de contenu, eux, relèvent du vocabulaire tiers, et le ticket #35736 d'OpenCode rapporte que trois échecs complètement distincts — un 404 Vertex, une coupure de socket et un vrai refus — remontent tous sous la même phrase blocked by content filter. La formulation n'est juste que pour un seul des trois : la croire et adoucir votre demande ne corrigera jamais un identifiant de modèle mal configuré. La documentation officielle de GitHub indique par ailleurs que les invites d'entrée et les complétions de sortie passent par les filtres de contenu de GitHub Copilot quand Claude est utilisé, si bien qu'utiliser Claude ne signifie pas que c'est un filtrage d'Anthropic qui vous a arrêté. La chaîne restante ne figure ni dans la référence des erreurs officielle ni dans la documentation de Remote Control : son origine n'a pas pu être identifiée, aucun outil n'est nommé pour elle, et quatre gestes pour la retrouver dans votre propre environnement sont donnés à la place. Ce qui est établi et ce qui ne l'est pas est signalé tout du long.

API Error: Connection lost mid-response : causes et solutions — l'erreur « connexion perdue » renommée en v2.1.227

API Error: Connection lost mid-response : causes et solutions — l'erreur « connexion perdue » renommée en v2.1.227

Dans Claude Code, la réponse s'arrête au milieu sur « API Error: Connection lost mid-response. The response above may be incomplete. » — et chercher ce libellé tel quel ne donne presque rien, parce que c'est un nom récent. La référence des erreurs officielle écrit noir sur blanc qu'avant la v2.1.227, Connection lost mid-response s'affichait sous la forme Connection closed mid-response ; au même moment, Response stalled mid-stream est devenu The response stopped arriving, et Connection closed while thinking, before producing a response est devenu Connection lost before a response was produced. Le phénomène existait donc déjà, seuls les mots ont changé. Cet article part de ce renommage et s'appuie uniquement sur la documentation officielle et sur des tickets publics. D'abord la définition officielle des six messages de coupure en cours de réponse (Server error, Connection lost, computer went to sleep, The response stopped arriving, Part of the response never arrived, The response stream was malformed), puis la raison pour laquelle la sortie déjà transmise est conservée à dessein — un renvoi risquerait d'exécuter deux fois le même appel d'outil — et le fait que la procédure de reprise consiste à répondre continue. Ensuite, pourquoi il n'y a pas de nouvelle tentative automatique, expliqué par l'arbre des Automatic retries officiels : une rupture avant tout achèvement est renvoyée jusqu'à dix fois avec recul exponentiel ; après la réflexion mais avant la sortie, deux renvois au maximum puis Connection lost before a response was produced ; après l'achèvement d'un bloc, aucun renvoi, seulement la mention. Viennent ensuite les trois couches où la connexion peut se rompre (le poste et sa liaison, le trajet avec proxy et passerelle, le côté serveur et la réutilisation des connexions), la relecture des fichiers lors d'une rotation de certificats mTLS (depuis la v2.1.232), une check-list de diagnostic en neuf gestes, les valeurs par défaut des quatre minuteurs de surveillance du flux (first-byte 180 s, event 300 s, byte 180 s, body idle 5 minutes) et les variables CLAUDE_CODE_MAX_RETRIES, CLAUDE_CODE_RETRY_WATCHDOG et API_TIMEOUT_MS, un tableau de correspondance avec huit messages voisins, et enfin deux signalements réels où le HTTPS brut est sain et où seule la CLI tombe sur ECONNRESET (#86473 et #85979). La conclusion sépare les niveaux de fiabilité : le symptôme, le sens et la procédure de reprise sont documentés officiellement, l'explication de la cause ne l'est pas, et le CHANGELOG ne porte aucune trace du renommage.

Les 3 changements cassants de Claude Fable 5.1 : quoi corriger avant de migrer et ce que vaut la lecture de cache divisée par quatre

Les 3 changements cassants de Claude Fable 5.1 : quoi corriger avant de migrer et ce que vaut la lecture de cache divisée par quatre

Migrer vers Claude Fable 5.1 ne s'arrête pas au remplacement de l'ID du modèle. La documentation officielle écrit noir sur blanc que trois des changements sont cassants et, pour deux d'entre eux, l'endroit où l'erreur surgit est loin de sa cause. 1) L'appel d'outil forcé renvoie 400 : les valeurs any et tool de tool_choice répondent par invalid_request_error. Sur un modèle qui réfléchit en permanence, forcer l'appel fait sauter cette réflexion et la qualité des arguments baisse. 2) Le bloc de réflexion est lié au modèle : une conversation qui passe d'une génération précédente à Fable 5.1 conserve son raisonnement, mais dans l'autre sens il est perdu. Et par défaut, les blocs illisibles sont jetés avant d'atteindre le modèle, ils ne sont pas comptés dans input_tokens et n'apparaissent pas non plus sur la facture. Dans les montages qui changent de modèle par routeur ou par bascule de secours, tout a l'air de fonctionner et seul le raisonnement disparaît. Pour s'en apercevoir, il faut l'en-tête bêta thinking-binding-controls-2026-08-01. 3) Modifier un tour passé invalide tous les blocs de réflexion qui suivent : cela vaut pour la reconstruction du prompt system ou du tableau tools, et pour l'habitude d'insérer un rappel puis de l'effacer. Ce contrôle est imposé sur les comptes créés à partir du 31 août 2026, d'où la contradiction possible entre un environnement de test tout juste monté qui échoue et une production qui passe. Il faut aussi éviter le malentendu sur le positionnement : Fable 5.1 n'est pas une relève du modèle phare, et, au moment de sa publication, la documentation officielle écrivait noir sur blanc que pour la plupart des usages il fallait commencer par Opus 5. Aucune hausse de prix ; la seule chose qui a changé, c'est la lecture de cache, qui passe de 0.1 à 0.025 fois l'entrée de base. L'effet dépend du nombre de relectures du même préambule, et la documentation officielle parle d'environ 25% de moins sur les charges typiques et jusqu'à environ 45% de moins sur le travail nettement agentique. Sept comportements changent en outre sans qu'on touche au code (moins d'appels d'outils en parallèle, moins de commentaires sur l'avancement, tendance à répondre de mémoire à effort low, prose plus dense, moins de mise en forme, citations non signalées dans les résumés, réécriture de tout le texte pour la moindre correction). Les cinq fonctionnalités ajoutées (dont la baisse du prix de la lecture de cache, traitée à part au chapitre 5) et les cinq étapes de migration sont également reprises, le tout à partir de la documentation officielle d'Anthropic.

Coder avec un LLM en local : Ollama, Cline et le piège du contexte

Coder avec un LLM en local : Ollama, Cline et le piège du contexte

Faire écrire du code par un modèle qui tourne sur votre propre PC était déjà possible il y a quelques années, mais cela se limitait à la complétion, et l'usage agentique où l'on lit le dépôt, corrige plusieurs fichiers et lance les tests restait trop lourd pour une machine locale. Cela a changé entre la fin 2025 et 2026 : Qwen cite nommément CLINE dans ses fiches de modèle officielles, et Mistral AI a publié Devstral Small 2 (24B) sous licence Apache 2.0 en revendiquant explicitement le codage agentique. Cet article fait le point uniquement à partir de sources primaires, en écartant les articles de synthèse dont plusieurs attribuaient à un modèle le score d'un modèle d'une autre taille. Le passage obligé est la longueur de contexte par défaut d'Ollama, qui n'est pas une valeur fixe mais dépend de la VRAM : moins de 24 GiB donne 4k, ce qui suffit à faire dérailler un agent sans qu'aucune erreur ne s'affiche, puisque le dépassement est traité comme une troncature et non comme une erreur. La recommandation officielle est d'au moins 64000 jetons pour les outils de codage, mais augmenter la valeur augmente aussi la mémoire nécessaire, d'où la vérification par ollama ps pour confirmer que tout tient sur le GPU. Sont également couverts la différence de fond entre Continue, qui assigne un modèle par rôle, et Cline, agent autonome bien plus exigeant, le choix du modèle par tranche de VRAM avec les scores publiés par les éditeurs (Qwen3.6-35B-A3B à 73.4, Devstral Small 2 à 68.0%), et le fait que la comparaison avec le cloud est devenue difficile à établir puisque les modèles de frontière s'éloignent peu à peu de SWE-bench Verified. Enfin, le local n'est pas gratuit : le coût change simplement de forme, et la réponse s'inverse selon que le matériel est déjà là ou non.