❌

Vue lecture

ArseneLupin - Le JEV Like d'Ibou qui décide au lieu de bavarder

Jev, je ne l'ai jamais utilisé mais Kev, en revanche, je l'ai branché dans mon outil de sélection de sujets de veille pour qu'il me dise notamment si un sujet correspond à ce qui me plaît ou pas. C'est en cours de test, donc je ne vais pas vous livrer de conclusion hâtive sur si ça fonctionne bien ou pas, mais si je vous en parle, c'est parce que Sylvain Peyronnet, le papa du moteur de recherche français Ibou , publie à son tour 3 modèles de la même famille, baptisés ArseneLupin, conçu également pour faire du décisionnel

Pour ceux qui ne suivent pas l'actualité IA, le nouveau truc à la mode en ce moment, c'est Jev, un modèle maison de TypeSafe qui est le premier de ce qu'ils appellent les modèles System One. Au lieu de générer du texte qu'il faut ensuite parser, ce reçoit un état (un texte, un ticket, un objet JSON) et des questions typées : oui ou non (noul), un choix parmi plusieurs options (choice) ou une note sur une échelle (score). Et il renvoie pour chacun de ces choix, des probabilités que votre code peut ensuite exploiter directement pour trier, faire du routage ou prendre des décisions. Par exemple, avec ça, on peut faire de la qualification de tickets de bug ou de l'anti-spam, ce genre de choses.

Alors forcément, suite à ça, des clones ouverts ont débarqué. Le premier que j'ai découvert, c'est Kev , de Jared Palmer, qui s'appuie sur Qwen3.5 et Qwen3.8, soit 0,8 à 27 milliards de paramètres, et laya qui part d'un encodeur ModernBERT-large pour 421 millions de paramètres au total.

Perso, avec Kev dans mon outil de veille, Pour le moment, j'ai un peu de mal à voir si c'est mieux qu'une décision prise par un Qwen 3.6 classique qui génère une réponse textuelle mais Kev a été entraîné sur des textes de 384 tokens au max, et les articles qui tombent dans ma veille dépassent largement ce gabarit...

ArseneLupin, c'est donc la version d'Ibou, annoncée par Sylvain la semaine dernière. Sa v1.1 repose donc sur Qwen3.5-4B, la mini sur Qwen3.5-0.8B et ArseneLupinstral sur Ministral 8B. Les poids sont sous licence Apache 2.0 et le code pour s'en servir et l'intégrer est fourni, mais pas le code d'entraînement ni les données.

C'est encore jeune, donc il n'y a pas eu de benchmark indépendant, mais Ibou en a fait et voici ce qu'ils obtiennent avec une classification d'intentions de recherche en dix catégories. Avec la 1.1, ils obtiennent 50,7 % de bonnes réponses, contre 39,7 % pour la mini et 43,9 % pour Jev 1.13.

Bref, ce sont leurs mesures, mais si elles sont justes, ça veut dire qu'Arsène Lupin est plus efficace que Jev.

Installer ArseneLupin v1.1

Alors pour ce tuto, j'ai pris la v1.1 qui est la plus "balèze".

À la fin de cette section, vous aurez donc un serveur local qui crache du JSON accessible sur le port 8000. Il vous faut Python 3.11 ou une version plus récente et une 10aine de Go libre puisque le modèle complet pèse 9,3 Go en bfloat16.

J'exclus au téléchargement le dossier gguf, qui contient la version 8 bits de 4,5 Go destinée à llama.cpp. Pour démarrer, il faut donc créer un environnement virtuel, puis récupèrer le modèle, et installe le code de service avec la version de transformers qui va bien, c'est à dire la 5.17.0 :

python3 -m venv lupin && source lupin/bin/activate
pip install -U huggingface_hub
hf download IBOU-SEARCH/ArseneLupin-v1.1 --local-dir arsenelupin-v1.1 --exclude "gguf/*"
cd arsenelupin-v1.1
pip install ./code "transformers==5.17.0"

Par défaut, le fichier serve.yaml envoie le modèle sur une carte NVIDIA (cuda:0). Sur un Mac, il faudra donc le basculer sur le GPU d'Apple (mps), et sur une machine sans GPU, ce sera cpu. Je pense que je ne vous apprends rien, vous avez l'habitude,

Ensuite, on lance le serveur. Notez juste que sous Linux, le sed s'écrit sans les deux apostrophes après le -i. :

sed -i '' 's/cuda:0/mps/' serve.yaml
python -m arsenelupin serve --config serve.yaml --calibration calibration/default.json --port 8000

Le serveur ArseneLupin v1.1 à l'écoute sur le port 8000, poids chargés

Au bout de quelques secondes, le serveur écoutera sur 127.0.0.1:8000. Quant à la version GGUF, vous pouvez, si vous voulez, le faire tourner dans un llama.cpp ou équivalent à condition d'en avoir un assez récent qui connait l'archi de Qwen3.5.

Poser vos premières questions

Pour tester, je me suis inspiré de mon outil de veille. On donne au modèle le titre et le résumé d'un sujet et on lui demande si ça parle d'un outil qu'on peut installer, dans quelle rubrique il faut le ranger et à quel point ça pourrait intéresser des gens comme vous, c'est à dire des lecteurs technophiles / bidouilleurs.

Placez donc ça dans un fichier nommé veille.json, dans le dossier du modèle :

{
 "state": {
 "titre": "ArseneLupin, trois modèles de décision publiés par Ibou",
 "resume": "Le moteur de recherche français Ibou publie sur Hugging Face trois modèles qui répondent par oui ou non, par un choix ou par une note, avec des probabilités. Les poids sont sous licence Apache 2.0 et le code de service est fourni."
 },
 "questions": {
 "installable": {"type": "noul",
 "instructions": "Le texte présente-t-il un outil que le lecteur peut installer lui-même ?"},
 "rubrique": {"type": "choice",
 "instructions": "Dans quelle rubrique ranger ce sujet ?",
 "criteria": {"ia": "Intelligence artificielle et modèles de langage",
 "dev": "Outils pour développeurs et infrastructure",
 "securite": "Sécurité informatique, failles et vie privée",
 "materiel": "Matériel, gadgets et bricolage électronique"}},
 "interet": {"type": "score",
 "instructions": "Ce sujet intéressera-t-il un lecteur technophile qui aime tester des outils ?",
 "criteria": ["Pas du tout", "Un peu", "Beaucoup"]}
 }
}

Puis dans un second terminal ouvert dans le même dossier, tapez la ligne de commande curl suivante pour lancer l'évaluation avec ArseneLupin.

curl -s http://127.0.0.1:8000/v1/systemone -H 'Content-Type: application/json' -d @veille.json | python3 -m json.tool

La réponse à la requête de veille : "ia" à 0,72, un oui/non hésitant à 0,53 et un score de 1,47

Comme vous pouvez le voir, pas une ligne de texte généré, chaque question revient avec ses probabilités. On voit donc que la rubrique "ia" l'emporte à 0,72, loin devant "dev" à 0,19, et le niveau "Beaucoup" ressort à 0,59 pour l'intérêt, ce qui donne un score moyen de 1,47 sur une échelle qui va de 0 à 2. Par contre, pour savoir si c'est un outil installable, le modèle hésite quand même un peu avec un timide 0,53 de probabilité pour le oui.

Il renvoie quand même une indication qui est plutôt importante à savoir là décision : "decision": true, car aucun seuil n'est appliqué côté serveur (c'est ce que dit le "decision_status": "unthresholded"). C'est donc à votre code de décider qu'en dessous de 0,7, par exemple, la décision revient à un humain plutôt que de partir dans la base de données automatiquement. Sur mon Mac Studio M4 Max, la requête a pris entre 2,4 et 2,8 secondes pour ces huit options.

J'ai fait un 2ème essai avec un commentaire de spam bien grossier : "Super article !!! Pour gagner 500 € par jour depuis chez vous, cliquez vite sur mon profil, places limitées." La v1.1 le classe en spam à 0,86 et lui colle un ton positif à 0,78, ce qui est vrai au premier degré. Et la version mini du modèle répond deux fois plus vite, en 0,8 seconde, mais descend à 0,76 sur le spam et hésite sur le ton... À voir donc si ça suffit pour vous d'utiliser le modèle mini ou pas, selon vos besoins.

Comment ArseneLupin prend ses décisions

Le code livré avec le modèle se lit facilement et la mécanique est plutôt simple à capter. En fait chaque option devient une question oui/non posée au Qwen affiné, du genre "ce candidat décrit-il la bonne réponse ?".

Ainsi, 4 catégories pour classer un contenu se résume en 4 questions sur le même texte accompagnée d'une petite tête de lecture (2 561 paramètres sur la v1.1) qui transforme le dernier état caché du modèle en score. Un softmax répartit ensuite ces scores en probabilités, et la confidence n'est rien d'autre que la plus forte d'entre elles...

Pour que ça reste rapide malgré toutes ces passes, le serveur lit une seule fois le texte commun aux options, puis calcule toutes les options simultanément.

En fait avec ArseneLupin, on reproduit le principe de Jev mais avec un LLM ouvert (Qwen) en ne lui faisant produire qu'un seul token, limité aux choix proposés. Ce qu'apporte Ibou, c'est donc un modèle LLM ultra affiné (Autant qu'un bon Saint Nectaire) pour ce type d'exercice de prise de décision.

Reste ensuite la confiance à accorder à ces probabilités. Dans le dossier calibration, vous verrez des températures ajustées selon les trois workflows d'exemple fournis par Ibou, et il y a également, dans le fichier default.json, une calibration par défaut. C'est celle-là qu'on a utilisée dans notre exemple, mais vous pouvez aussi régler vous-même votre propre température ajustée selon vos usages.

Maintenant, avant de lui confier quoi que ce soit, posez-vous un peu et donnez-lui une cinquantaine d'exemples que vous avez déjà classés à la main. Comme ça, vous pourrez comparer ArsèneLupin et le LLM que vous utilisez d'habitude pour savoir qui est le plus fiable. N'hésitez pas à y mettre aussi des textes plus ou moins longs parce que le serveur accepte jusqu'à 32 768 tokens par option. Ça tombe bien parce que ça me gênait un peu dans mon intégration avec Kev sur mon outil de veille. Donc je pense que je vais rapidement basculer sur ArsèneLupin pour ma veille en remplacement de Kev.

Et si vous venez de Jev, attention, la requête a la même forme mais pas la réponse !! Pour une question oui/non, Jev renvoie un champ noul là où ArseneLupin renvoie un p_yes, et pour une note, ArseneLupin range ses probabilités dans une liste quand Jev utilise un dictionnaire.

Cela veut dire qu'un client écrit pour l'API de TypeSafe ne lira pas du tout le résultat de ArseneLupin tel quel, donc prévoyez une petite couche de conversion avant de mettre les deux en concurrence sur vos data.

  •  

Paperasse - Des skills IA pour votre compta et vos impôts

J'adore la France, mais même si la vie y est difficile. Pourquoi ? Simplement à cause de l'administratif et de la paperasse. En tant que phobique administratif, c'est vraiment ce qui me fait regarder de près l'expatriation, loool.

Tenir la compta d'une petite société, remplir sa déclaration d'impôts, estimer les frais de notaire d'un appart... Bref, la fucking paperasse a de quoi déclencher de sévère crises de phobie administrative chez tout le monde. Alors pour nous aider, mon nouveau héro du jour, Romain Simon, a créé " Paperasse ", des skills pour agents IA que Claude Code, Codex, Cursor ou Mistral Vibe peuvent consulter pour endosser le rôle d'expert-comptable, de contrôleur fiscal, de commissaire aux comptes, de fiscaliste, de notaire ou encore de syndic de copro.

Son dépôt contient également des scripts vérifiés pour tout ce qui est calculs importants. En effet, ce sont des choses qu'on ne veut surtout pas confier à un LLM. Je pense au calcul de l'impôt sur les sociétés, aux amortissements, à la TVA, ou encore sortir un fichier des écritures comptables, un bilan ou une facture. Le projet Paperasse contient aussi des connecteurs pour vos transactions Qonto et vos paiements Stripe.

Voilà, donc si, comme moi, vous êtes en détresse émotionnelle dès que vous recevez un courrier de l'administration française, je vous invite à installer ce projet en donnant tout simplement ce prompt à votre agent IA préféré :

Installe tous les skills du repo github https://github.com/romainsimon/paperasse
Lance ensuite le setup pour la gestion de toute ma paperasse

L'agent clonera alors le dépôt et lancera un setup qui vous demandera le nom de votre société, votre régime de TVA et vos comptes bancaires. Pour mes tests, j'ai donc inventé une SASU, Brioche & Octets, avec un relevé bancaire de huit lignes bidon, et j'ai lancé Claude Code dessus avec le skill comptable, dans un environnement vierge.

En 6 minutes, il a immobilisé l'ordinateur portable au lieu de le passer en charge, traité l'abonnement logiciel facturé depuis l'Irlande en deux scénarios faute de facture pour trancher, et rangé le retrait au distributeur en compte d'attente, en rappelant qu'un compte courant débiteur est interdit au président d'une SASU.

Côté factures, le script de validation a refusé ma première tentative, à laquelle il manquait le SIREN du client et le numéro de TVA intracommunautaire de ma boîte. Une fois corrigée, le générateur m'a sorti un PDF qui embarque son fichier XML Factur-X.

La facture de ma fausse SASU, une fois le SIREN du client et mon numéro de TVA ajoutés

L'agent fiscaliste, quant à lui, ce sera plus à même de vous aider si vous êtes un particulier. Je lui ai soumis un couple pacsé imaginaire avec un enfant, 65 000 € de salaires et 2 000 € de dividendes, en lui demandant si l'option pour le barème battait le PFU. Il a lancé son script Python sur les deux cas et conclu que oui, de 124 €, parce qu'avec un taux marginal de 11 %, l'abattement de 40 % et la CSG déductible font descendre l'impôt sur ces dividendes sous les 12,8 % du PFU. J'ai refait le calcul à la main, ça tombe juste.

Le fiscaliste compare PFU et option barème pour un couple pacsé imaginaire

Par contre, tout ça repose sur des barèmes qu'il faut tenir à jour, et c'est là que ça coince. En effet, ces mises à jour reposent sur les issues acceptées ou non sur le projet GitHub. Par exemple, y'en a une qui est ouverte depuis fin août qui montre que le skill "notaire" calcule encore les émoluments de vente avec le tarif de 2016 alors que ça a changé depuis le 1er janvier 2021, et malheureusement, que les évaluations automatiques du projet valident ces calculs faux. Le correctif a bien été proposé, comme d'autres mais aucun n'a été fusionnée depuis le 11 juillet.

Donc voilà, c'est un super projet, mais il faudrait encore que ça suive un petit peu derrière donc utilisez-le mais en prenant soin de bien vérifier quand même les montants / tarifs / règles sont à jour.

Reste maintenant la question de vos données... En effet, vos PDF et tout ce qui concerne vos données vont partir chez le service IA que vous utilisez. Donc ça, il faut en avoir conscience même si je sais que derrière, en général, les comptables mettent tout sur des drives mal sécurisés, et que prochainement la facturation électronique va faire leaker ça dans tous les sens.

Mais bon, quoi qu'il en soit, tout ceci ne remplacera jamais un expert-comptable, donc voilà, amusez-vous, testez-le, dégrossissez vos questions avec ça, faites des simulations...etc mais ne lui faites pas 100 % confiance.

Source : GitHub

  •  

Votre vieux Nokia 6300 sait maintenant parler à Claude

J'sais pas si vous êtes de la team Dumbphone , mais quand Emir Karşıyakalı tape une recherche Google sur son vieux Nokia 6300 de 2007, il se fait gentiment envoyer chier vers une mise à jour de son browser. Alors, parce qu'il en avait marre de vivre 2026 comme s'il était resté bloqué en 2007, il a codé Claude S40 , un client Claude non officiel pour les Nokia Series 40 qui font tourner du Java.

Et le plus fou c'est que non seulement, c'est vibe codé mais qu'en plus, ça marche du feu de dieu :

Vous tapez votre question au clavier et la réponse s'affiche sur ce tout petit écran. Pour la météo ou l'actu, Claude fait sa recherche web côté serveur sans passer par le navigateur du Nokia. Il est même capable d'inscrire un rendez-vous pour vous dans l'agenda du téléphone.

Évidemment, le téléphone ne cause pas directement à l'API d'Anthropic. En fait, tout passe par un petit serveur écrit en Go, qui est proposé sous la forme d'une image Docker que vous devez héberger vous-même. Et c'est ce serveur qui conserve la clé API d'Anthropic, qui va donc découper les réponses que lui renvoie Claude pour les envoyer au téléphone qui ne lit pas plus de 8 Ko à la fois. Et ce serveur conserve les conversations durant 30 jours max.

Et c'est là que ce vieux Nokia rend la tâche difficile car il ne discute qu'en TLS 1.0 (Les boomers appellent ça "le petit cadenas"), n'envoie pas de SNI (le nom du site demandé) et ses certificats racines datent des années 90 et 2000 donc, autant dire que niveau dates de péremptions, c'est comme visiter la cave à conserves d'un survivaliste...

Le serveur est donc capable de discuter en HTTPS avec le web et de faire suivre la data chiffrée en HTTPS entre lui-même et le Nokia, grâce à un certificat auto-signé, dont la racine a été installée sur le téléphone.

Le code de Claude S40 est bien sûr libre, sous licence MIT, et côté hébergement, il suffit de mettre ça sur un petit VPS à quelques euros par mois et vous êtes tranquille. Ensuite, le reste se facture aux messages puisque chaque question, comme chaque recherche web, passe par votre clé API Claude... Donc, n'oubliez pas de mettre une petite limite de dépense dans votre console Anthropic, histoire de ne pas cramer votre compte en banque.

Par contre, l'appli n'a pour le moment été testée que sur le Nokia 6300 (RM-217) et il lui faut une carte SIM avec les données mobiles activées évidemment. Or le 6300 ne fait QUE du GSM, GPRS et EDGE , et Orange coupe progressivement sa 2G . En effet, depuis mars, 44 départements vont la perdre à partir du 6 octobre, et toute la métropole, hors zones blanches, sera sans 2G dès le 20 octobre 2026. Donc si vous êtes chez Orange, faut pas traîner pour tester car après, ça ne fonctionnera plus !! Sniiiif.

Mais rassurez-vous, Emir ne compte pas s'arrêter là puisqu'il est en train de reverser le firmware du téléphone pour contourner la couche Java et ensuite pouvoir lui faire faire ce qu'il veut. Voilà, si vous avez encore un 6300 dans un tiroir, c'est donc le bon moment de le ressortir, avant de passer à un dumbphone compatible 4G .

Source : Emir sur X

  •  
❌