Headroom : L'outil Netflix qui rend les agents IA 10 fois moins chers

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Voici Headroom, un outil open source qui compresse tout ce que lit votre agent IA,
00:00:04c'est-à-dire les appels d'outils, les fichiers de code et le RAG, avant qu'ils n'atteignent le LLM, ce qui vous permet de réduire les jetons
00:00:09de 60, voire 95 %, pour obtenir exactement la même réponse. Et l'aspect ingénieux, c'est que c'est réversible, donc le
00:00:14modèle peut demander à récupérer l'intégralité des informations dès qu'il en a vraiment besoin. Mais la compression
00:00:18signifie généralement que l'on perd quelque chose, alors comment supprimer la majeure partie du contexte tout en obtenant la bonne
00:00:23réponse ? C'est une question vraiment intéressante, alors abonnez-vous et découvrons-le.
00:00:31Si vous avez déjà utilisé une structure comme ClaudeCode, vous savez qu'elle utilise beaucoup de jetons. Chaque appel d'outil
00:00:35peut déverser d'énormes journaux JSON qui ne sont que du bruit, détournant l'attention des informations importantes,
00:00:40et tout cela est fourré dans la fenêtre de contexte, ce pour quoi vous payez.
00:00:45Surtout si vous utilisez quelque chose comme Opus en mode UltraCode, qui exécute des flux de travail dynamiques,
00:00:50lançant des sous-agents parallèles sans limite de jetons. C'est pourquoi Tejas Chopra, développeur senior chez Netflix,
00:00:57a créé Headroom, qui fonctionne en détectant le type de contenu et en conservant les informations importantes.
00:01:01Pour les tableaux JSON, il conserve les anomalies et les cas limites ; il possède un compresseur de code qui lit
00:01:06l'arbre de syntaxe réel, et lorsqu'il lit des journaux de build, il garde les échecs et rejette les tests réussis.
00:01:11Mais voici la partie intéressante. Pour le texte brut, Headroom utilise son propre modèle appelé CompressBase,
00:01:17que Tejas a entraîné lui-même spécifiquement pour la compression, et ce modèle s'exécute localement sur votre machine.
00:01:22Headroom affirme avoir déjà permis aux utilisateurs d'économiser environ 700 000 dollars en jetons,
00:01:26et ce qui est vraiment ingénieux, c'est qu'il laisse une trace dans le texte compressé,
00:01:30contenant un hachage que le modèle peut utiliser pour récupérer les données non compressées s'il en a besoin.
00:01:35Maintenant, si vous avez regardé la vidéo de James sur Caveman, cela réduit aussi le contexte,
00:01:39mais dans la direction opposée, et j'expliquerai cela plus en détail plus tard dans la vidéo.
00:01:43Mais pour l'instant, voyons un exemple basique de Headroom pour comprendre comment il fonctionne.
00:01:46Headroom fonctionne à l'aide d'un serveur Python qui se place entre votre application,
00:01:50cela pourrait être du code exploré, et par exemple, les serveurs d'Anthropic.
00:01:54Ainsi, lorsqu'un résultat d'appel d'outil revient, le proxy le compresse en utilisant Rust sous le capot,
00:01:59et envoie simplement la version compressée à l'API.
00:02:01Vous pouvez installer le serveur avec pip, mais je vais utiliser uv et m'assurer que la version de Python
00:02:06est la 3.12, car cela ne fonctionnera pas sur des versions plus récentes.
00:02:09Ensuite, exécutez la commande headroom proxy depuis cette bibliothèque, ce qui déclenche le proxy sur ce port.
00:02:14Headroom dispose également d'un SDK TypeScript ou Python,
00:02:17et pour la démonstration, nous allons utiliser celui en Python pour créer une application utilisant le SDK Claude.
00:02:22Nous pouvons donc installer les deux comme ceci, et ensuite nous sommes prêts à parcourir l'application.
00:02:25Le plan est de vous montrer comment utiliser Headroom avec ClaudeCode plus tard,
00:02:29mais je voulais d'abord vous montrer comment cela fonctionne en coulisses.
00:02:32Donc pour cette application, nous avons une invite utilisateur pour lire tous les fichiers journaux et trouver l'erreur,
00:02:36ainsi que la cause première. Et à partir de là, nous allons simuler l'appel d'outil.
00:02:40Nous allons demander à Claude de faire un appel d'outil bash pour lire le fichier journal du serveur,
00:02:44qui contient un tas de faux journaux et qui est importé ici.
00:02:47Et ensuite, nous allons retourner les résultats de l'appel d'outil.
00:02:49La raison pour laquelle nous ne donnons pas simplement le fichier texte directement à Headroom
00:02:52est qu'il ne compresse que la sortie des appels d'outils.
00:02:54Nous spécifions donc le modèle ici et, en dessous, nous utilisons la fonction de compression de Headroom
00:02:59pour prendre le message avec le modèle afin d'obtenir un comptage précis des jetons.
00:03:02Headroom n'utilise pas réellement Haiku.
00:03:04Ensuite, nous lui donnons l'URL de base du proxy.
00:03:06Nous avons également un certain nombre de journaux de contrôle pour les tests,
00:03:08vous montrant le message avant et après Headroom,
00:03:11ainsi que d'autres journaux de contrôle montrant le pourcentage d'économie.
00:03:13Et après cela, nous passons le message compressé de Headroom dans ClaudeCode,
00:03:17qui contient également l'invite utilisateur.
00:03:18Donc maintenant, si nous exécutons ce fichier, nous pouvons voir que Headroom a économisé 98 % des jetons.
00:03:23Voici donc les jetons avant et voici les jetons après.
00:03:26Cela permet d'économiser plus de 17 000 jetons.
00:03:28Et c'est évident à voir quand on regarde l'avant et l'après.
00:03:31Si nous faisons défiler vers le haut, voici l'avant, c'est ce qui est normalement envoyé à ClaudeCode.
00:03:35Nous obtenons l'invite utilisateur, l'appel d'outil et la réponse à l'outil, qui est l'intégralité du fichier journal.
00:03:39Et si nous regardons ici ce que Headroom envoie, nous pouvons voir que nous obtenons le même message utilisateur et le même appel d'outil,
00:03:43mais la réponse de l'outil est bien moins importante.
00:03:45Et ce qu'il a fait ici, c'est utiliser une compression statistique pour supprimer les jetons redondants.
00:03:50Il a donc supprimé 419 journaux d'informations similaires et les a compressés en un résumé.
00:03:54Maintenant, nous pouvons voir ci-dessous que Headroom indique à Claude qu'il s'agit de la sortie compressée.
00:03:58Il peut le récupérer en utilisant ce hachage.
00:04:00Ici, nous voyons l'un des inconvénients immédiats de Headroom : Claude pense qu'il n'a pas
00:04:05suffisamment d'informations pour terminer la tâche, mais c'est certainement le cas.
00:04:08Nous allons donc exécuter notre fichier à nouveau.
00:04:10Et nous pouvons constater que cette fois, nous avons toujours les 98 % d'économie, mais nous avons beaucoup plus d'informations de la part de Claude.
00:04:16Essayons une autre démonstration.
00:04:17Comme d'habitude, nous devons exécuter le proxy Headroom, mais cette fois-ci, je lui donne plus de paramètres.
00:04:21Ici, nous pouvons voir que j'ajoute la valeur ML, qui utilise le modèle compressé localement pour compresser le texte brut.
00:04:26Et j'ai ajouté du code pour rendre disponible le compresseur conscient du code.
00:04:30Et ensuite, j'ai ajouté le drapeau “code aware” pour l'activer.
00:04:32On peut donc voir qu'il est activé ici.
00:04:34Ensuite, je vais exécuter ClaudeCode, mais d'abord, je vais définir l'URL de base sur le proxy.
00:04:39Et avec cela en place, je vais donner à Claude une invite pour lire chaque fichier TS de ce projet
00:04:44et me donner un aperçu détaillé de ce que fait ce projet avec des citations vers le code pertinent.
00:04:49Et après un moment, il me donne une réponse m'indiquant qu'il a lu tous les fichiers TypeScript
00:04:53à travers les cinq paquets et il m'a donné un aperçu par défaut.
00:04:56Mais si nous exécutons la commande slash context, ce que j'ai fait plus tôt, nous pouvons voir qu'il a utilisé 89,1 k jetons.
00:05:02Maintenant, j'ai en fait exécuté une invite similaire dans Claude sans utiliser Headroom.
00:05:06Et si nous faisons défiler vers le bas pour voir où nous avons provoqué la sous-commande context,
00:05:10cela a utilisé un peu plus de jetons.
00:05:11Maintenant, je ne sais pas pourquoi il a choisi d'utiliser la fenêtre de contexte de 1 million d'Opus ici.
00:05:16n a choisi la fenêtre de contexte de 200 k ici, mais nous pouvons interroger ce point de terminaison avec jq
00:05:21pour voir exactement d'où venait la compression du proxy.
00:05:23Cela contient beaucoup d'informations, donc il m'a fallu un certain temps pour le trouver.
00:05:26Mais si nous faisons défiler vers le haut, nous pouvons voir combien de jetons ont été économisés par la compression de Headroom
00:05:30et même voir combien d'argent la compression nous a fait économiser.
00:05:32Bien sûr, tout cela ne provient que d'une seule invite.
00:05:35Mais imaginez si j'avais plusieurs sessions ClaudeCode en cours d'exécution et que Headroom compressait tous les appels
00:05:39d'outils. Imaginez combien de jetons supplémentaires j'économiserais.
00:05:42Je veux aussi souligner que lorsque j'ai exécuté l'invite exacte avec peu d'efforts sur Opus,
00:05:46Headroom n'a en fait réalisé aucune économie de jetons.
00:05:49Ce n'est que lorsque je suis passé de faible à moyen que les économies de jetons ont été visibles.
00:05:53Alors peut-être que si j'étais sur élevé, très élevé ou même maximum, cela économiserait encore plus de jetons.
00:05:57Mais bref, c'était un aperçu rapide de Headroom.
00:06:00Et bien sûr, il y a tellement d'autres fonctionnalités que j'aurais pu aborder,
00:06:03comme la mémoire inter-agents, qui permet à Claude, Codex et d'autres structures
00:06:07de partager exactement le même contexte compressé.
00:06:09Headroom Learn, qui exploite vos sessions échouées pour déterminer ce qu'il a compressé
00:06:12trop fortement et apprend afin de ne pas refaire la même erreur à l'avenir,
00:06:15ainsi que des intégrations avec des SDK populaires.
00:06:18Mais il y a une chose assez importante à considérer à propos de Headroom.
00:06:21Chaque fois que le modèle n'obtient pas les informations dont il a besoin
00:06:24et demande à Headroom de fournir les données complètes, cela entraîne un second aller-retour,
00:06:28ce qui signifie que vous finissez par utiliser plus de jetons avec Headroom dans certains cas que sans.
00:06:33Mais je suppose que c'est l'avantage d'utiliser la fonctionnalité Headroom Learn,
00:06:36qui tente d'éviter que cela ne se produise de plus en plus à l'avenir.
00:06:39Mais vous souvenez-vous quand j'ai parlé de Caveman plus tôt dans la vidéo ?
00:06:42Eh bien, Caveman réduit les jetons en demandant au modèle de répondre par de courts fragments,
00:06:46en supprimant les mots de remplissage, etc.
00:06:48Mais comme vous venez de le voir dans la démonstration, Headroom réduit ce que le modèle lit
00:06:51avant même qu'il n'arrive au modèle.
00:06:52Donc l'un coupe la sortie tandis que l'autre coupe l'entrée,
00:06:56ce qui signifie techniquement que vous pouvez les utiliser ensemble pour une économie de jetons maximale,
00:07:00si vous vous souciez vraiment autant d'économiser des jetons.

Key Takeaway

Headroom réduit radicalement les coûts d'utilisation des agents IA en compressant intelligemment les entrées contextuelles via un proxy local, permettant des économies allant jusqu'à 95 % des jetons.

Highlights

  • Headroom réduit la consommation de jetons de 60 à 95 % en compressant les appels d'outils, le code et les données RAG avant leur envoi au modèle.

  • L'outil a permis aux utilisateurs d'économiser environ 700 000 dollars en coûts de jetons cumulés.

  • Le compresseur de code analyse l'arbre de syntaxe réel pour conserver uniquement les informations structurelles essentielles.

  • Headroom est réversible : il insère un hachage dans le texte compressé permettant au modèle de récupérer les données complètes si nécessaire.

  • La compression statistique des journaux de build supprime les tests réussis pour ne conserver que les échecs et les anomalies.

  • Le modèle de compression local CompressBase fonctionne spécifiquement pour réduire la taille du texte brut sans intervention de l'API cloud.

Timeline

Principe et fonctionnement de la compression

  • Headroom agit comme un proxy entre l'application et les serveurs LLM.
  • La compression cible spécifiquement les données d'appels d'outils, les fichiers de code et le RAG.
  • Le système conserve les anomalies, les échecs de tests et les structures syntaxiques critiques.

L'outil résout le problème du bruit généré par les journaux JSON massifs dans la fenêtre de contexte des agents IA. En plaçant un serveur Python entre l'application et l'API, il filtre les informations superflues avant qu'elles ne soient facturées par le modèle.

Implémentation et cas d'usage

  • L'installation s'effectue via pip ou uv avec une contrainte de version Python 3.12.
  • Le SDK Python permet d'intégrer la compression directement dans les flux de travail ClaudeCode.
  • Les tests démontrent une économie de 17 000 jetons sur une seule opération de lecture de fichiers journaux.

Le processus utilise le modèle local CompressBase pour traiter le texte brut. L'utilisation du drapeau “code aware” permet une analyse plus fine des projets TypeScript, assurant que le modèle dispose des éléments nécessaires tout en supprimant le superflu.

Limites et stratégies avancées

  • Le manque d'informations dû à une compression trop agressive peut nécessiter des appels de récupération supplémentaires.
  • Headroom Learn mémorise les sessions échouées pour ajuster les futurs taux de compression.
  • Une approche combinée avec Caveman, qui réduit la sortie du modèle, permet une optimisation maximale des jetons.

Malgré les économies, une compression excessive peut entraîner des allers-retours coûteux si le modèle manque de contexte. L'utilisation conjointe de méthodes de réduction en entrée (Headroom) et en sortie (Caveman) permet d'optimiser l'intégralité du cycle de communication avec l'IA.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video