Introduction aux DSL et LLM

Les LLM (Large Language Models) génèrent du code de manière incroyablement rapide, mais pour garantir qu'ils génèrent exactement ce qui est attendu, ils ont besoin de limites claires. Les abstractions et les Langages Spécifiques à un Domaine (DSL) fournissent un solide harnais qui guide les LLM dès le départ.

Limites de la spécification initiale

La construction de grands systèmes implique de nombreuses petites décisions de conception, qui ne peuvent pas toutes être connues à l'avance ou dérivées entièrement d'une spécification de haut niveau. Une spécification est au mieux une hypothèse de départ : les véritables contraintes, compromis et cas limites sont découverts de manière itérative, au fur et à mesure de la mise en œuvre.

Domaines abstraits et DSL

Un DSL est un langage conçu pour exprimer des concepts et des opérations spécifiques à un domaine. Les DSL sont souvent utilisés pour la modélisation visuelle, la requête de bases de données ou la description d'infrastructures cloud. Les LLM sont remarquablement bons pour générer des diagrammes Mermaid, des requêtes SQL ou des manifests Kubernetes à partir d'une description en anglais.

Exemple concret : Tickloom

Tickloom est un modèle de domaine et un DSL pour illustrer le comportement des systèmes distribués. Il montre comment utiliser un LLM comme partenaire pour construire de manière itérative un DSL et comme interface en langage naturel pour l'utiliser. Le DSL peut agir comme source de vérité principale pour les systèmes logiciels dans le monde des LLM.

DSL = Domain Specific Language

Les DSL offrent une forte garantie pour les LLM, car ils répondent bien à quelques exemples contextuels. Un langage généraliste comme Java offre de nombreuses façons valides d'exprimer la même intention. Un DSL élimine les variations. Fournir au modèle quelques exemples suffit pour générer de manière fiable la syntaxe correcte.