Headroom : L'outil Netflix qui rend les agents IA 10 fois moins chers
BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술
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.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video