Weekly Shaarli
Week 43 (October 23, 2023)
Une méthode de résolution de tâche qui s'apparente à un Graph Of Though (GOT) et qui permet d'améliorer la qualité d'une réponse à une question.
Ce qu'ils appellent module pourrait se traduire par Agent LLM.
La question est d'abord analysée par un Agent "Branch" qui va générer des angles d'évaluation de la pertinence d'une future réponse.
Ensuite dans l'Agent "Solve", on fait répondre à la question par le LLM (on génère plusieurs réponses: A, B, C, etc) et on va ensuite faire générer un feedback sur les réponses en fonction des critères de chaque branche.
Finalement c'est l'Agent "Merge" qui va s'occuper de récupérer les feedback sur les réponses puis il va décider quelle réponse était la mieux entre A, B et C.
Retour d'expérience sur l'organisation Data chez Blablacar.
Ils ont créé une équipe Data transverse avec uniquement des Data Enginers.
Quelques take aways:
-
investir dans des solutions génériques et réutilisables paye sur le moyen/long term
-
il y a un intérêt à ce que l'équipe Data devienne le point central entre tous les stackholders
-
rechercher l'adoption plutôt que l'obligation
-
toujours considérer le "build vs buy"
Okta s'est fait hacker et les données des clients ont été compromises.
Okta fourni des systèmes d'authentification centralisé par exemple.
Des entreprises se sont fait hacker aussi suite au premier hack de Okta: https://krebsonsecurity.com/2023/10/hackers-stole-access-tokens-from-oktas-support-unit/
Un proxy HTTP qui se fait passer pour du trafic légitime HTTP/3 et donc résistant à la censure.
Excellente introduction sur RAG.
Les connaissances des LLMs sont "bloquées" dans le temps alors il est nécessaire des leur fournir des documents en provenance de source externes pour répondre à des questions.
Souvent on va stocker ces documents sous la forme d'embeddings dans des bases de données vectorielles. Cela permet de faire des recherches sémantiques et d'incorporer les documents à propos du sujet de la question posée au LLM.
De belles animations sensées représenter le fonctionnement de modèles d'IA.
C'est beau mais je n'y comprends pas grand chose :-)
Une lib Javascript qui propose de multiple actions avec des modèles de GenAI:
- LLM: OpenAI, Anthropic, Cohere, Llama.cpp, Hugging Face
- text to image: OpenAI (Dall·E), Stability AI, Automatic1111
- text to speech: Eleven Labs, LMNT
- speech to text: OpenAI (Whisper)
- embeddings: OpenAI, Cohere, Llama.cpp, Hugging Face
Article qui explique pas à pas les principes de l'architecture hexagonale avec des exemples.
C'est le plus clair que j'ai trouvé en français, je le conseille vivement à ceux qui veulent se lancer en clean archi.
Pleins d'exemples d'utilisation de GPT-4V
Excellent article sur l'évolution des rôles dans une scaleup.
ça revient sur les définitions des rôles CTO vs VP Engineering et aussi sur le rôle de Fellow Engineer.
Dans une scaleup, le CTO historique doit parfois laisser la place pour se concentrer sur des missions de contributeur individuel à fort impact.
Comment mesurer la répartition des connaissances au sein d'une équipe à l'aide de Skills Matrices.
Très utile pour identifier les bus factors sur lesquels une ou très peu de personnes seraient capable d'intervenir.
L'article donne une méthode pour créer cette liste de connaissances.
Un article qui remet en cause la pertinence des User Stories dans un process produit.
Les résultats d'un programme de recherche basé sur les DORA métriques pour évaluer les méthodes de travail ayant le plus d'impact.
-
les équipes qui se concentrent sur l'utilisateur ont de meilleures performances organisationnelles
-
une documentation de qualité amplifie l'impact des autres méthodes (~x2 en moyenne!)
Pour les pratique de développement pures:
- intégration continue
- vitesse des revues de code
- architecture découplée
- trunk based development
Une démo impressionnante avec un dessin à main levé qui se transforme en scène 3D dans le style d'un prompt
Un article sur l'écriture de tests frontend end to end et notamment le choix des sélecteurs.
Les sélecteurs doivent être le plus proche possible de l'interaction réel de l'utilisateur.
Par exemple, si je veux me connecter alors je clique sur un bouton qui contient le texte "Login" donc le sélecteur doit reproduire ce comportement au lieu d'utiliser des attributes HTML comme les classes ou le fameux data-test-id.
C'est d'ailleurs la base des sélecteurs que propose Playwright:
await page.getByRole('button', { name: /login/i }).click();Un résumé de l'état de l'art sur les application à la génération de code des LLMs.
Sous le coude
Présentation d'un sujet de recherche autour des RAG afin d'améliorer leurs performances dans des cas ou certains documents insérés dans le prompt contiennent des informations sémantiquement proches mais non pertinentes.
Dans le cadre d'un LLM, la reflection consiste à le faire réfléchir sur la pertinence des informations qu'il a extraites.
Une lib qui permet de générer une version très dégradée d'une image mais aussi très légère (20 octets!)
ça permet d'afficher un placeholder en attendant que la véritable image charge
Un développeur en a eu marre que son jeu HTML soit inclus sur d'autres sites dans des iframes.
Il a décidé de remplacer le jeu par l'image "Goatse" (ne pas googler!) quand il détecte une inclusion via iframe.
Il est également possible de faire la même chose aux sites qui link directement une image de votre site.
Moralité, héberger votre contenu chez vous et soyez respectueux des auteurs.
Réflexion autour du changement de paradigme de notre métier de développeurs.
On passe plus de temps à réfléchir au design des systèmes que les coder.
Un musée de l'histoire d'internet :D
- premier mail de spam
- premier smiley
- premier MP3
- et bien d'autres!
Le mouvement no-estimate prend de plus en plus d'ampleur dans le monde du Produit.
D'un côté les équipes de développements fonctionnement mal avec des estimations:
- imprévisibilité inhérente au développement
- stress de ne pas avoir respecter une estimation
- pas ou peu de temps consacrer aux tâches annexes d'amélioration continue
De l'autre côté, les équipes Sales, Marketing et Customer Success ont besoin de fournir des dates à leurs clients.
L'estimation peut éventuellement se faire mais à un niveau plus haut comme l'Epic si tout le monde accepte que cette estimation pourra quand même changer en cours de route.
Au fur et à mesure du développement, l'estimation devient de plus en plus précise jusqu'à la livraison de la feature.
Je garde ces deux citations:
Les estimations sont le “doudou” des managers avec leur côté rassurant. Elles donnent une sensation de contrôle.
Je ne compte pas le nombre d’heures passées dans ma carrière à discuter d’estimations
Un virus dans la nature depuis plus de 5 ans avec un mécanisme d'infection assez perfectionné et à priori un 0-day.
Il y avait un mineur Monero dans le virus, ce qui le classait dans la catégorie cryptominer alors que sa mission principale serait plutôt le vol de credentials
La sortie de Next.js 4 c'est surtout l'arrivée des Server Actions.
Ils ont presque terminé leur chantier de support de Turbopack plutôt que Webpack donc on peut s'attendre à une prochaine release avec des performances accrues! (Turbopack est en Rust et beaucoup plus performant que Webpack)
La fameuse expérience ou des LLMs communiquent entre eux dans un jeux vidéo type animal crossing.
Ils ont poussé le concept de mémoire assez loin ce qui a permis aux Agents d'organiser des évènements entre eux car ils avaient la possibilité de se rappeler et de propager l'information.
Ils introduisent une fonction pour trier les informations en mémoire selon la date de l'évènement, son importance et sa pertinence face à la situation actuelle.
La mémoire est également retravaillé avec le concept de reflection qui synthétise la mémoire en des informations de plus haut niveau.
Si vous cherchez à installer un package Javascript qui vous avez publié en privé sur Github (Github Package), voila la solution.
Par exemple, si vous souhaitez installer le package @aschen/memorus, commencez par générer un Personnal Access Token et ajoutez le dans les secrets de votre repo puis utilisez ce job.
jobs:
whooa-awesome-job-mate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 20
registry-url: 'https://npm.pkg.github.com'
scope: '@aschen'
- name: Install dependencies
run: npm install -g @aschen/memorus
env:
NODE_AUTH_TOKEN: ${{ secrets.PAT }}Une reproduction d'un fonctionnement d'un OS avec récupération et stockage d'informations en mémoire.
Uniquement pour du tchat par contre, pas de notion d'Agent LLM
Un retour d'expérience sur la réalisation d'un chatbot de type helpdesk qui va chercher ses info dans une base de données vectorielle.
Des techniques d'évaluation du modèle sont proposées à la fin de l'article