La lib Firebase Genkit de Google pour LLM est très bien pensée.
Contrairement à Langchain, le design est simple et le nombre de features limité à des abstraction de bas niveau.
- Abstraction autour des modèles (LLM et aussi image)
- Génération de données structurées avec schéma de validation Zod en entrée et en sortie (on fait la même chose chez Didask)
- Utilisation d'outils par les LLMs (la aussi définis avec Zod!)
Je ne suis pas super fan de leur manière de gérer les templates de prompt par contre, je préfère utiliser du pur Javascript.
Le gros bémol c'est que l'on a pas accès aux modèles d'OpenAI.
Une surcouche sur esbuild qui gère tout le bundle d'un projet Node, même dans un monorepo, sans rien avoir à configurer.
Enfin il faut juste créer tsup.config.ts
et mettre ça dedans:
import { defineConfig, type Options } from 'tsup'
export default defineConfig((options: Options) => ({
entryPoints: ['start.ts'],
clean: true,
format: ['cjs'],
target: 'node18',
sourcemap: true,
...options,
}))
Puis npx tsup
et finalement lancer avec node --enable-source-maps dist/start.js
Une lib en Typescript qui permet de contrôler le desktop.
On peut envoyer des inputs clavier, sélectionner des fenêtres, mettre quelque chose en valeur, etc
Une technique pour wrapper les handler API dégueulasses forcés par l'utilisation de Express en quelque chose d'un peu plus moderne.
Next.js encore sur Express en 2023 :(
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)
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
Utilisation de High Order Function (HOF) pour faire de l'injection de dépendances en Typescript.
Les HOF sont des fonctions qui prennent les dépendances en paramètre et renvoient la fonction métier.
Des techniques pour réduire la taille d'un bundle en optimisant le treeshaking.
Notamment l'utilisation de fonctions indépendantes plutôt que des classes car une classe est exportées en entier même si on n'utilise pas toutes ses méthodes.
Les "barrel file" composés uniquement d'exports d'autres modules sont une fausse bonne idée car ils forcent à charger un nombre plus important de fichiers.
A éviter donc
Une solution pour utiliser Nest.js devant Supabase tout en conservant le système d'authentification de Supabase.
Un schéma builder pour GraphQL
6 techniques avancées d'utilisation de Typescript:
- types mappés: itération sur les clés ou types conditionnels
- décorateurs
- namespaces
- mixins (ça me rappelle Ruby :D)
- type guards
- utility types
Un jeux d'aventure en Typescript :D
Typescript est carrément Turing complete!
L'auteur a implémenté un sous langage type brainfuck et Typescript est capable de l'interpréter.
const test1 = interpreter('*>*>*', '000000'); // '111000'
Un article sur l'écriture de module Ecmascript (.mjs
) pour une utilisation par Node.js et le browser avec l'utilisation de TypeScript.
Un article intéressant sur les avantages de Deno.
Il y a de nombreux avantages en DX, notamment le support Typescript directement par Deno mais surtout je découvre un avantage non négligeable en terme de sécurité de la supply chain.
Les scripts (comme les entrées de scripts
dans le package.json
en Node.js) de Deno sont lancés dans un shell isolé spécial (deno_task_shell) et n'ont accès qu'a leur input, ce qui les empêche d'aller farfouiller sur le système (ce genre de truc https://arstechnica.com/information-technology/2022/03/sabotage-code-added-to-popular-npm-package-wiped-files-in-russia-and-belarus/)
L'approche des dépendances via URL est aussi intéressante, on est capable de charger du code depuis une URL tout en respectant des versions, des checksum, etc.
Une explication de l'architecture hexagonale avec un exemple simple de catalogue de produit en Typescript.
Excellent article pour aller plus loin avec TypeScript !
Je ne connaissais l'astuce pour retourner des types predicate et aider TypeScript a mieux comprendre le code:
function isCircle(shape: Shape): shape is Circle {
return shape.kind === 'circle';
}
if (isCircle(shape)) {
// Typescript know it's a "Circle"
}
Bref, pleins de bon conseils et d'astuces pour aller plus loin avec le typage.
Attention quand même à ne pas trop complexifier les types, il ne faut pas hésiter à prendre des raccourcis si vous commencez à passer trop de temps à les écrire.
Un excellent article qui explique le fonctionnement de la Composition API de Vue 3 et les raisons de ce changement de paradigme.
On passe d'une déclaration de composants avec des classes à un paradigme fonctionnel.
Cela permet entre autre:
- un meilleur partage de la logique
- des types plus précis
- une meilleure structure de code
Rome est un outil pour Javascript/Typescript qui sert de linter, formatter, bundler et test runner.
En gros ça remplace Eslint, Prettier, Webpack, Babel et Jest.
C'est écrit en Rust et beaucoup plus performant que les outils JS.
L'autre avantage est de n'avoir qu'un outil binaire plutôt que des centaines de dépendances et des centaines de méga-octets dans le dossier node_modules.
(Via Ludo)