Comment appliquer des LLM dans Pharo ?

LLMPharo

Lorsque j’ai commencé mon doctorat en 2024, je venais d’un parcours professionnel où j’appliquais principalement des LLM dans des outils logiciels et construisais des outils autour d’eux. Au début de mon doctorat, mon superviseur m’a dit que je pouvais fréquenter ESUG’24. Là, j’ai vu le Présentation Feenk sur l’IA. En parallèle, j’ai commencé à regarder ce qui se passait autour des LLM dans l’écosystème Pharo, et j’ai remarqué qu’il n’y avait pas beaucoup de travail dans ce sens. Benoit était l’une des rares personnes que je connaissais à expérimenter déjà les LLM dans Pharo. Je suis devenu vraiment intéressé à comprendre comment nous pourrions appliquer les LLM dans Pharo. C’est pourquoi j’ai lancé Pharo-LLM. Au moment de la rédaction, le Pharo-LLM l’organisation a 21 abonnés, et je vois de plus en plus de personnes s’intéresser aux outils que nous avons développés. Mais Pharo-LLM a également beaucoup changé depuis que je l’ai lancé.

Qu’est-ce que Pharo-LLM ?

Au début, mon objectif était assez simple : je souhaitais disposer des outils nécessaires pour intégrer des LLM dans Pharo. Mais je ne voulais pas Pharo-LLM être juste un autre wrapper autour d’une API externe. L’idée s’est progressivement transformée en la création d’un ensemble d’outils et de bibliothèques qui nous permettent de créer, d’exécuter et d’interagir avec des LLM directement dans Pharo. Plus important encore, je veux que ces outils donnent l’impression natif de Pharo. Cela signifie intégrer les LLM avec les éléments qui rendent Pharo intéressant : les objets, les inspecteurs, les débogueurs et nos workflows de développement.

Aujourd’hui, l’écosystème Pharo-LLM comprend plusieurs projets :

L’objectif n’est pas simplement de connecter Pharo aux LLM. L’objectif est d’explorer ce qu’un Écosystème LLM conçu spécifiquement pour Pharo Cela peut prendre la forme de

De l’utilisation des LLM à leur contrôle

En développant Pharo-LLM, j’ai commencé à penser à un autre problème. Aujourd’hui, lorsque nous utilisons un LLM, nous dépendons souvent d’un fournisseur externe. Nous dépendons de leurs API, de leurs prix, de leurs limites tarifaires, de leur infrastructure et d’une connexion réseau. Lorsque nous travaillons avec du code source ou des projets privés, nous devons également penser à la confidentialité.

Donc ma première question, Comment pouvons-nous appliquer les LLM dans Pharo ?, est lentement devenu une autre question : Comment pouvons-nous construire un écosystème LLM souverain dans Pharo ?. Pour moi, il y a trois parties importantes à cela, i. Avoir les outils à l’intérieur de Pharo pour créer, exécuter et interagir avec les LLM, ii. Avoir la capacité de former et d’affiner nos propres modèles, iii. Avoir la capacité de déployer et de maintenir nos propres modèles. C’est la direction que je veux maintenant explorer avec Pharo-LLM.

Modèles de formation pour Pharo

Un exemple concret est Pharo-Copilot. Pharo-Copilot est un moteur de complétion de code qui utilise des LLM pour prédire les prochains jetons de code Pharo. Au lieu de remplir un seul jeton ou un seul mot, l’idée est de générer complétions de code multi-token. Mais si nous voulons un modèle vraiment utile pour Pharo, nous en avons besoin pour comprendre Pharo. Nous avons donc expérimenté avec les LLM de code poids ouvert. Vous pouvez trouver l’article décrivant ce travail et nos résultats ici.

Exécuter nos propres modèles

Former ou peaufiner un modèle n’est qu’une partie du problème. Après cela, nous devons l’exécuter. Aujourd’hui, Pharo-LLM peut interagir avec des API cloud telles que ChatGPT, Claude et DeepSeek. Nous pouvons également utiliser des API locales fournies par des outils tels que Ollama, LM Studio ou vLLM. Mais je voulais explorer ce qui se passerait si nous allions plus loin. Et si nous pouvions exécuter le modèle à travers une infrastructure qui appartient directement à l’écosystème Pharo ? C’est pourquoi j’ai commencé Pharo-Infer. Un moteur d’inférence charge un modèle de langage formé et le prépare à l’exécution. Il convertit les invites en jetons, génère des jetons en sortie et gère des éléments tels que la mémoire, le contexte, l’échantillonnage et la diffusion en continu pendant la génération. Avec Pharo-Infer, l’idée est de fournir cette couche d’inférence dans le cadre de l’écosystème Pharo, en utilisant des composants open-source tels que llama.cpp pour l’exécution de modèles de bas niveau.

QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS

QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS

Qu’en est-il des équipes ?

QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS

LA vision Pharo-LLM

QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS

Un modèle plus petit spécialisé pour Pharo peut fonctionner beaucoup mieux que sa version de base à usage général sur les tâches spécifiques à Pharo.

Cela me fait penser qu’il y a une réelle opportunité ici. Pour moi

Pharo-LLM n’est pas seulement un projet technique. C’est un investissement stratégique dans l’indépendance.

Les contributions sont les bienvenues !