votre avatar Abonné

hezirem

est avec nous depuis le 23 novembre 2023 ❤️

17 commentaires

Le 28/04/2025 à 23h 03

C'est le moment de disperser des kiwix un peu partout

Le 27/04/2025 à 18h 32

Excellent tournée, tu m'a régalé

Acide avec juste ce qu'il faut de sel

Le 08/04/2025 à 18h 04

J’avais lu un truc sur la manière dont Firefox vérifie (ou vérifiait ?) les domaines pour voir s’ils sont malveillants. Si je me souviens, le domaine est hashé, le début du hash est envoyé à Mozilla, Mozilla répond avec tous les domaines malveillants commençant par ce bout de hash, et le navigateur vérifie dans cette liste si le domaine est présent.

Ainsi, la seule chose que sait Mozilla, c’est que telle adresse IP veut visiter un site dont le début du hash est pareil à ceux dans la liste. Mozilla ne sait même pas s’il est dans la liste : ce peut être un site légitime, mais ayant le même début de hash.

C'est une solution que nous avions envisagé quand j'ai discuté de la structure de l'extension avec JM et Seb.

Cette stratégie nous aurait en effet évité d'avoir a implémenter un mécanisme d'obfuscation mais la grande contrepartie en termes d'appels réseaux nécessaires et de bande passante dédiée a cela sur les serveurs de Next nous a fait éluder cette option.

Bien que nous l'ayons envisagé, le format actuel semble représenter un bon compromis entre les nécessités d'économies réseaux tout en préservant notre liste d'URL

Le 08/04/2025 à 12h 10

Au moment ou j'ai élaboré le POC pour l'extension j'ai été confronté a ce choix.

En choisissant la table de hash j'aurais dû exposer le nombre d'éléments dans le set, cela aurait grandement augmenté la taille de l'extension, le bloom filter réduit considérablement la taille de la structure de donnée contenant le set d'URLs.

Cela aurait aussi entraîné une complexification importante du process de mise a jour de la liste, le sérialisation du bloom filter est beaucoup plus simple.

Dernièrement, un attaquant expérimenté aurait eu une plus grande surface d'attaque sur une hash table possédant plus d'informations a exploiter

Ces raisons sont les principales qui m'ont poussé a choisir la solution du bloom filter.

Après j'aime bien me dire que l'aspect probabiliste avec la possibilité de faux positifs est une feature plutôt qu'un bug, ça te force a faire marcher ton esprit critique en te demandant si le site est vraiment généré par IA ou pas, plutôt que du suivre aveuglément une figure d'autorité :windu:

Celui qui cesse de douter, cesse de progresser :mrgreen:

PS: D'après les retours de mes collègues j'ai des tendances a overengineer, si vous avez une solution plus simple et élégante je serais ravi d'avoir vos perspectives.

Le 20/03/2025 à 00h 01

Au delà d'être un éditeur de texte très barebones et donc très customisable pour peu qu'on s'y plonge.

Vim c'est une sorte de "méta" language pour modifier du texte
Bien sûr tu pourrais sélectionner une portion de texte avec shift + 15 fois flèche droite ou ta souris et c'est simple de se rappeler de ça

Mais si tu passes littéralement ton temps a éditer du code, ce n'est pas du texte que tu édites, mais des noeuds dans un AST, tu manipules des text objects.

Si on arrête de penser lettres par lettres et qu'on voit chaque élément pour ce qu'il représente réellement dans le flux d'exécution d'un programme et pas juste un assemblage de lettres on commence a voir la chose sous un angle différent.

A partir de ce moment la on comprendra aisément que le combo ciw pour change inner word puisse paraître plus élégant et efficace pour modifier son code

Ainsi l'acte d'édition se transforme en une valse qui appelle et associe des commandes, des text-objects, des répétitions etc

La syntaxe est difficile a assimiler mais une fois que c'est fait on se rend compte qu'en fait c'est juste des raccourcis pour les tâches les plus courantes d'éditions de code, transformé en un langage ou on converse avec son éditeur pour lui dire précisément et succinctement quels changements faire sur le code.

Le 28/02/2025 à 11h 11

Voici un exemple

Le 11/02/2025 à 14h 31

On peut aussi les bannir dans un labyrinthe perpétuel de fausses pages web

Come for the content to steal, stay for the infinite wander

Le 12/12/2024 à 15h 29

Ces dernières semaines j'ai également assisté à l'utilisation des technologies fournies par la Chine au Pakistan pour étouffer les révoltes liées à l'emprisonnement d'Imran Khan et la répression violente de la population venue manifester par l'armée Pakistanaise.

Les justifications qui étaient utilisées au début sont toujours celles de protéger la 'morale' et les habitants du pays de contenu pornographique ou blasphématoire

Etant proche de cette communauté j'ai pu me délecter du fiasco que c'était. J'ai presque l'impression que la communauté IT pakistanaise fait ostensiblement mal son boulot pour laisser une porte ouverte au peuple

Le 25/11/2024 à 22h 46

Sinon, à ce sujet, ça donne quoi l'usage de @Ness_01 dans l'analyse des messages pour la modération, comme vous en parliez au poing Dev 12 ? Un petit retour d'expérience serait très intéressant :)
Ce projet est le mien, donc je vais me charger de te répondre.
Je prévoyais de faire un post plus détaillé, mais je vais essayer de synthétiser mon approche dans ce commentaire.
On fera un post à part si nécessaire.

Premièrement, un disclaimer.
Je n'ai pas de certification en Machine Learning (pour l'instant) et je me suis lancé dans ce projet par pure passion pour ce domaine que je découvre. Le développement est + / - en standby pendant que je me familiarise avec des techniques plus avancées en ML. Parallèlement, je travaille également sur d'autres projets chez moji.

La première étape a été de concevoir un plugin pour WordPress qui émet un event à chaque commentaire posté. Cet event initie une requête HTTP vers un service interne avec un payload contenant le commentaire, ses parents éventuels et le titre de l'article. Puis de coder la logique de gestion du retour du LLM pour réaliser une action (autoriser ou non la publication d'un commentaire)

Ça c'était la partie facile. On a vu cet outil comme un outil de pré modération dans un premier temps, toujours un humain dans la boucle qui valide ou non la décision.

La deuxième étape, setup un serveur d'inférence.
La plupart des gens sont maintenant familiers avec des solutions comme Ollama, setup avec lequel j'ai commencé à explorer les LLMs après que les possibilités offertes par l'API d'OpenAI m'aient révélé leurs limitations.

(Parenthèse : Aucun de vos commentaires n'est passé chez OpenAI. Je parle uniquement de mon utilisation sur d'autres intégrations à mon workflow.)

J'ai très vite été confronté à deux problèmes.

- La limitation des modèles génératifs disponibles à ce moment sur huggingface
- La génération structurée

Bien que des efforts conséquents aient été faits par la communauté open source, la différence de qualité était encore flagrante. J'ai cependant obtenu des résultats qui se défendaient très bien avec les modèles de Nous Research (big up à eux), notamment Hermès 2.

La question est : comment encoder nos valeurs éthiques dans ce modèle ? Chaque modèle est entraîné sur un corpus censé lui fournir l'ajustement des paramètres idéal pour lui faire remplir toutes les tâches basiques type Q/A, synthèse de texte, extraction d'informations, etc.
Qui plus est, les corpus choisis portent tous indirectement des biais

Mais avant de réfléchir à cela, comment traiter l'output généré par les modèles de langage (LLM) avec du code ?
PHP est loin d'être un langage naturel, et notre modèle est entraîné à produire du texte qui l'est

Je me suis fait les dents sur plusieurs solutions plus ou moins optimales.
La première, proposée sur le cookbook Haystack était lente, couteuse en ressources et peu flexible.
Le principe : demander gentiment au LLM de générer un output correspondant à un schéma json validé via Pydantic
Si le validateur retourne des erreurs, on demande à nouveau au LLM de traiter ces erreurs en lui fournissant le schéma et les erreurs détectées.
Ensuite, on espère qu'en moins de 5 à 10 boucles, le LLM arrivera à générer un output valide. Éventuellement, j'ai mis en place des regex qui pourraient extraire uniquement le JSON si un message supplémentaire était inséré.
Vous vous doutez que c'était loin d'être optimal.

Après un certain temps de pérégrination et d'expérimentations, j'ai choisi llama.cpp comme stack pour mon serveur d'inférence. C'est un projet open-source qui mérite d'être bien plus connu.

En plus d'offrir une perspective plus avancée du fonctionnement d'un modèle et du processus d'inférence, llama.cpp m'offre des possibilités de personnalisation bien plus poussées, comme par exemple la grammaire GBNF.

J'ai lu récemment cet article de blog qui explique visuellement le principe de fonctionnement pour la contrainte de l'output en créant une Finite State Machine. Cette machine implémente la regex de validation du JSON que l'on souhaite générer.

En plus de cela, llama.cpp offre un temps d'inférence bien inférieurs à ce que peut faire Ollama.

La rédaction de ce commentaire m'a déjà pris plus de temps que je n'avais prévu, et je dois aller me préparer à dîner.

Si le sujet vous intéresse, je pourrais décrire comment j'utilise ensuite FastAPI pour interagir avec llama.cpp, comment j'injecte du contexte et crée une pipeline d'agents pour décomposer la tâche de modération en étapes distinctes.

Ou bien la façon d'encoder des valeurs éthiques dans une surcouche sur le modèle fondationnel pour intégrer la charte constitutionnelle de sa communautée.

Cette étape est, in fine, la plus intéressante, à mon avis. Comment adapter ? Comment tolérer une certaine limite d'humour noir pour ne pas être contraint par le puritanisme qu'on pourrait trouver dans un modèle trop politiquement correct du fait de son statut de produit ? Comment exprimer ses valeurs en vecteurs ?


Qu'est ce qui constitute du discours toxique, jusqu'ou la liberté d'expression peut aller ?

Taxonomie d'un commentaire toxique
Ingénierie automatique de prompts

Actuellement je bloque sur la création d'un golden dataset destiné à fine tuner une surcouche (QLoRA) sur le modèle de fondation choisi.

Pour cela, j'ai besoin de finaliser une pipeline utilisant argilla pour annoter des commentaires destinés à une phase de reinforcement learning via RLHF ou RLAIF . J'aimerais également ajouter la génération de rationales qui permettront d'expliquer les décisions de modération prises par le modèle et de les ajuster au besoin.

Le 21/09/2024 à 19h 17


Comme c'est moi qui ai fait la remarque, je vais répondre sans polémiquer. Je suis plus vieux que toi et pas du tout dans l'idée de la cancel-culture ni un SJW comme certains le laissent entendre plus bas. Je n'ai jamais trop été Guignols mais je crois que ce qui pouvait passer à l'époque passe moins bien maintenant, 23 ans plus tard, la société a évolué. Je n'aurais peut-être pas fait la même remarque à cette époque, comme quoi, on peut se faire influencer par une ambiance qui a changé, c’est peut-être même les écrits des membres récents de la rédaction qui me font prêter plus d'attention aux autres sur ce genre de sujet (attention, je ne veux pas vous monter les uns contre les autres, j'essaie juste d'analyser ma réaction). C’est peut-être la répétition tout au long qui m'a gêné.
J'ai assimilé cet accent à un accent maghrébin et j'ai pensé que les personnes de cette origine qui vivent chez nous n'ont pas besoin d'être assimilés à un mouvement classé terroriste. Je sais que ce n'était pas l'intention, mais j'ai pensé comme ça sur le moment.

J'ai fait bien attention de ne pas utiliser le mot racisme parce que de ce que je te connais par tes dessins et tes contributions dans les commentaires, je pense sincèrement que ce n'est pas le cas.

Comme tu le dis, c'est fait rapidement et il est tout à fait possible de ne pas voir que ça peut ne plus trop passer maintenant.

Tu as repris les dialogues afin d'éviter la poursuite de la polémique. C'est tout à ton honneur, on est d'accord que ce n'était pas très utile au récit, qui, je le redis était très bon.

Tu n'es pas obligé de me répondre comme tu parlais de polémique et que tu souhaites l'éviter. Je le comprendrai sans soucis.

Ton commentaire comporte un point important que je souhaite clarifier sans m'étendre excessivement sur le sujet.

Concernant l'assimilation à un "accent maghrébin" :

1. Le personnage représenté est (j'imagine) une satire de Hassan Nasrallah, qui n'est pas maghrébin mais libanais.
2. L'expression "accent maghrébin" est une généralisation problématique. La diversité linguistique du Maghreb (darija, tamazight, berbère, etc.) rend cette simplification inexacte et réductrice.
3. Dans la culture pop / médiatique française, la référence la plus proche serait plutôt le personnage d'Oussama ben Laden des Guignols de l'Info, qui n'était pas non plus maghrébin.

Je comprends que tes intentions sont bienveillantes. Il est effectivement crucial de faire un effort conscient pour se libérer des stéréotypes qui entravent l'évolution des mentalités et font perdurer le "racisme ordinaire".
La frontière entre humour et moquerie est ténue, particulièrement à l'écrit, et pourrait induire en erreur ceux qui ne sont pas familiers avec le média comme toi.

Cependant, une application trop rigide du "politiquement correct" peut devenir un frein à la créativité, l'humour et la franchise.
Notre diversité est une richesse.
Plutôt que de l'ignorer ou de la gommer, nous devrions la célébrer, tout en restant vigilants faces aux représentations réductrices qui ne sont pas la pour nous faire rire mais pour nous faire croire que ces détails sont les seuls qui nous définissent.

Le 19/04/2024 à 11h 11

Si c'est aussi bien respecté que les Accords de Paris on est safe \s

Le 29/03/2024 à 13h 54

Très sympa la conférence sur le darknet

Le 21/03/2024 à 12h 19

Mention spéciale à Garuda Linux. J'ai monté un pc gaming il y a deux semaines après une longue traversée du désert vidéo ludique.

J'ai tenu à peu près 38 secondes devant la première boîte de dialogue Windows avant d'arracher la clé USB et y mettre un iso Garuda.

10mn après je télécharge Doom Eternal et j'utilise Proton pour y jouer. Quelques légers bugs graphiques au début. Mais après un bref ajustement ça marche du feu de tueur de démons.

Merci aux mainteners de Garuda d'avoir préservé mon âme.

Le 13/03/2024 à 10h 09

Archetyp gang ftw.

D'ailleurs ça apprendra aux gens à chiffrer eux même leur messages. Ne jamais faire confiance aux intermédiaires 🥸

Le 09/03/2024 à 12h 03

C'est très probablement une référence a l'arène dans les combats de MMA. Qui est devenu une sorte de meme en France depuis que deux rappeur se sont clashés sur Twitter et l'un propose à l'autre de régler cela dans un octogone.

Le 17/02/2024 à 16h 28

On dit que les ingénieurs au sein de la Silicon Valley sont assez friands de psychotropes. Est-ce une coïncidence ? :fume:

Je recommande vivement ce très bon livre

Le 23/11/2023 à 02h 50

Je copie colle mon commentaire sur l'issue que tu a ouvert ici afin de faire participer les gens sur les commentaires à la discussion.
Salut,
Comme indiqué dans cette issue #13
J'ai déjà la navigation clavier dans les tuyaux, je mets le code en prod très bientôt,
Cependant petite spécificité
J'ai fait le choix d'utiliser HJKL pour la navigation sur deux dimensions
J'ai déjà intégré la réponse rapide au commentaire séléctionné via Shift + R et ESC pour sortir du mode ajout de commentaire
On bosse sur le sorting des commentaires par état (lus, non lus)
Je suis moi même féru de navigation clavier, vous pouvez compter sur une navigation reddit like sous peu (reddit avec la reddit enhancement suite hein, on est pas des sauvages)
Dès que j'aurais fini de régler les quelques problème plus urgents :)
Voici les raccourcis que je compte implémenter actuellement

j move down one comment
k move up one comment
g scroll to page top
G scroll to page bottom
R reply to comment in focus

TODO:
h/l move up/down one thread of comments
n/N browse unread comments

EDIT: J'ai activé les raccourcis, si vous utilisez vimium pensez a exclure jkgGR de vos settings sur next.ink