Sélectionner une page

Jan AI, une nouvelle IA textuelle Open Source (gratuite) : la fin de Chat GPT ?

L’intelligence artificielle (IA) a envahi un nombre grandissant de secteurs de nos vies. Domaine en croissance exponentielle, c’est à mon sens une révolution plus grande encore que ne l’a été l’avènement de l’Internet. Des milliers de ces robots existent, se perfectionnent, la plupart rachetés par de grands groupes et sujets à la spéculation : il s’agit de « faire de l’argent ». Avec ça comme avec tout le reste…

La plupart des solutions se trouve dans le « cloud », animées par des batteries de super calculateurs organisés en réseaux neuronaux avec des processeurs et des cartes graphiques surpuissants, aptes à répondre aux millions de requêtes à la seconde (les fameux « token ») et à puiser dans leurs monstrueuses bases de données d’apprentissage.

Aparté : C’est ainsi qu’on peut émuler des calculateurs géants à l’autre bout du monde, en position allongée, depuis son simple téléphone ! Nous reviendrons sur cette notion, un jour.

Ces IA s’actualisent sans cesse, apprenant sans répit, grâce aux requêtes de leurs utilisateurs et à l’enrichissement permanent des données du Web. Ce qui n’est pas sans poser un important problème de sécurité : intrinsèquement l’IA espionne vos données, vos questions et les réponses et ce d’une manière qui n’est pas du tout transparente. Ne dit-on pas que nos téléphones nous écoutent, même éteints, pour que les algorithmes des Gafam‘s puissent nous proposer ultérieurement des publicités ciblées ? Orwell, Huxley, au secours !

Comme un coup de Mistral…

Toujours est-il que le besoin se fait sentir de disposer de solutions « locales », de logiciels capables de fonctionner sur nos machines (et bientôt nos téléphones) sans connexion et sans faire appel au cloud ni même aux serveurs (payants) comme ceux de Microsoft… Qui a, pour notre malheur, racheté OpenAI (GPT4) initialement créé par Elon Musk. Franchement, qui aime Microsoft aujourd’hui ? Quand on n’y est pas contraint, comme pour un certain « vaccin » récent…

Cocorico ! L’impossible est désormais une réalité. Ce qui était encore hier un monstre logiciel avec des centaines de milliards de paramètres est désormais réduit (au prix d’opérations complexes très difficiles à expliquer et même à comprendre) à des logiciels de 7 Go avec « seulement » 7 milliards de paramètres et capables de tourner sur la plupart des machines modernes et qui donnent de meilleurs résultats que leurs aïeux obèses !

Parmi ceux-ci, Jan AI, à télécharger ici et, oh joie, qui est disponible sur toutes les plateformes de Windaube à Linux en passant par Mac et surtout Silicon (les nouvelles puces M1, M2, M3 d’Apple).

 

 

C’est en fait une interface qui permet de charger un certain nombre de robots, de différentes tailles et poids de base de données (on parle en milliards de paramètres) ce qui permet de les faire tourner en local. Parmi ceux-ci le génial Mistral, logiciel Open Source, créé par trois français et qui renvoie Chat GPT à la préhistoire. Pour en savoir plus sur Mistral et nos petits français :

Les moteurs

Un grand nombre de moteurs sont déjà disponibles dans Jan AI. sachant que ce domaine s’actualise sur une base quasi hebdomadaire et que de grandes prouesses qui étonneront plus d’un sceptique, verront le jour dans les mois qui viennent…

Il y a bien sûr les moteurs GPT 3.5 et GPT 4 qu’on peut utiliser d’ici sauf qu’il faut avoir renseigné une API valide et donc payante sur le site OpenAI devenu Microsoft (« Open » ! quelle rigolade…) : le fric, toujours plus de fric…

Côté gratuit, beaucoup d’alternatives : Mistral, Open Hermes Neural, Trinity plus où moins spécialisés en sémantique, mathématique et logique, génération de code informatique… et notament le fameux moteur Mixtral 8x7B qui date d’à peine quelques jours et qui explose littéralement tous ses concurrents. Malheureusement il semble que je n’ai pas assez de mémoire ! Sur un MacBook Pro M2 ultra récent… Bref !

L’usage

Le bestiau travaille en anglais mais la traduction en de nombreuses langues est quasi instantanée et comme il le dit lui-même (enfin, « il », le robot Mistral…) :

Je suis désolé, je ne peux pas vous répondre en français directement ici car je suis un assistant de recherche en anglais. Cependant, je peux vous fournir des traductions ou des informations en français si vous me donniez une requête précise et je peux utiliser une application de traduction pour répondre à vos questions. Veuillez me donner un sujet spécifique et je ferai mon meilleur pour vous fournir des informations exactes en français. Si cela vous convient, je peux aussi utiliser une outil de traduction automatique pour répondre à vos questions en français si c’est possible. N’hésitez pas à me poser des questions si cela vous aide.

A la question « Types de fractales ? » la réponse fournie par le robot « standard » Mistral Instruct 7B Q4 est assez juste comme on peut le lire ci-dessous. J’ai laissé les fautes d’orthographe et autres pour qu’on se rende bien compte. De tout façon, suivant les préceptes de notre nouveau ministre des affaires étrangères, c’est devenu la norme.

Il existe de nombreux types de fractales, chacun ayant des caractéristiques distinctes et créant des structures visuelles différentes. Voici quelques exemples de types communs de fractales :

  • Fractales de Mandelbrot : Ces fractales sont générées par l’itération d’une fonction complexe, et leur caractéristique principale est la présence de branches infinies qui se répètent à des niveaux différents. La fractale de Mandelbrot est l’une des plus connues et les plus appréciées, créant une structure intricée et détaillée avec de belles couleurs.
  • Fractales de Julia : Les fractales de Julia sont un sous-ensemble des fractales de Mandelbrot et sont obtenues en fixant une valeur pour la variable complexe c dans l’itération de la fonction de Mandelbrot. La fractale de Julia présente des structures similaires à celles de la fractale de Mandelbrot, mais avec des symétries plus distinctes.
  • Fractales de Barnsley : Ces fractales sont générées par une séquence d’applications successives de transformations linéaires simples, appelées les « morphisms ». Les fractales de Barnsley sont célèbres pour leur capacité à générer des structures complexes à partir de simples transformations linéaires.
  • Fractales de Koch : Ces fractales sont générées en remplaçant des segments droits par des formes plus complexes, créant des structures répétitives qui se répètent à des niveaux différents. La fractale de Koch est peut-être la plus connue des fractales de ce type, créant une structure de forme régulière et intricée appelée le triangle de Koch.
  • Fractales de Sierpinski : Ces fractales sont générées en supprimant des parties régulières d’une figure géométrique, créant des structures répétitives qui se réduisent au minimum. La fractale de Sierpinski le plus connue est le triangle trisectionné, où chaque triangle est divisé en quatre triangles plus petits, et les deux triangles supplémentaires sont supprimés.
  • Ces types de fractales sont seulement une petite partie de ce que l’on appelle l’art fractal et la fractalité mathématique. D’autres types de fractales incluent les Lévy, les fractales de Peano, les fractales de von Koch-Schaake, et bien d’autres. Chaque type de fractale présente des structures visuelles intéressantes et complexes, et offre un monde infini d’exploration pour les passionnés de mathématiques, de l’art, et de la nature.

 

 

Je ne résiste pas au plaisir, comme je l’avais fait pour l’article sur Chat GPT à poser des questions anthropomorphes. Et, sans surprise, le résultat est une nouvelle fois de la pure fiction avec un parfum de réalité. Attention !

Qui est Francis Le Guen ?

Francis Le Guen est un anthropologue et sociologue français. Né le 18 juillet 1943, il est connu pour ses travaux sur l’anthropologie sociale et culturelle, la sociologie de l’éducation, ainsi que son intérêt pour le développement des pays en voie de développement. Il a occupé plusieurs postes d’enseignant et de chercheur dans des universités françaises et internationales, comme l’Université Paris-Sorbonne. Francis Le Guen a également été président de la Société française d’anthropologie entre 1995 et 2001, et a reçu plusieurs distinctions pour son travail.

Ou alors :

Francis Le Guen est un ancien footballeur international français et entraîneur de football. Il a joué comme milieu de terrain à l’AS Monaco, au Paris Saint-Germain, à l’Olympique lyonnais et à l’AJ Auxerre. Il a également joué pour l’équipe de France de 1989 à 1994, obtenant 27 sélections et marquant 5 buts. Après sa carrière de joueur, il s’est tourné vers la formation et l’entraînement des jeunes footballeurs.

C’est celàààààaaaa, ouiiii…

Codeur fou ?

L’engin semble plus doué pour générer du code et ce dans un grand nombre de langages de programmation avec souvent des instructions très précises pour l’installation. Ainsi il semble connaître parfaitement Python, PHP

Je lui ai ainsi demandé de créer un plugin simple pour WordPress, codé en PHP, afin de compter les mots d’un article. J’ai bien obtenu un code PHP qui semble conforme mais celui-ci n’a pas été reconnu par l’installeur de plugin ! Sans doute une erreur minime à corriger « à la main » mais cela dépasse mes compétences.

 

« WordPress : créer code plugin pour compter les mots d’un article »

<?php
/*
Plugin Name: WordCount
Description: Displays the number of words in a post or page content.
Version: 1.0
*/

add_filter('the_content', 'wordcount');
function wordcount($content) {
  $clean_content = preg_replace('/[^A-Za-z0-9\s]/', '', $content); // Remove non-alphanumeric characters
  preg_match_all('/\s+/', $clean_content, $matches); // Find all whitespace
  $word_count = count(explode(' ', $content)) + count($matches[0]); // Calculate total word count
  return '<p class="word-count">' . number_format($word_count) . ' words</p>' . $content; // Insert the word count before the post content
}
?>

 

Même chose pour le langage Java utilisé en autres dans le générateur de fractales JWildfire que j’utilise régulièrement. A la question « créer un fichier .flame pour générer des spirales dans JWildfire » j’ai obtenu la réponse détaillée ci-dessous. Très convainquant, dans la magnifique syntaxe imbitable, sauf que, de nouveau, je n’ai pas pu installer ce script et donc juger du résultat… Encore une fois il faudrait sans doute corriger à la main. Info ou intox ? Ca fait rien, je repasserais plus tard…

Creating a .flame file for generating spirals in JWildfire using L-Systems:

  1. First, you need to create an L-system (Lindenmayer System) script that generates the spiral design. An example of a simple spiral L-system is as follows:

aX F + [+FF] 3 aY F[+FF + F +] 4

This L-system script will generate a logarithmic spiral.

  1. Save the above script as a text file, for example « spiral_lsystem.txt. »
  2. Launch JWildfire and go to the « Script » tab. Click on the « New » button to create a new script file, save it as « spiral_script.jws, » and paste the following code:

import java.awt.*; import java.util.Random; public class Spiral extends JWildFire implements Configuration { static final String params = "100,150,3.2,4,spiral_lsystem.txt"; public void setup(Layer layer, Configuration config) { super.setup(layer, config); setBackgroundColor(new Color(0, 0, 0)); setPalette(paletteFromFile("blackwhite.pal")); } public void tree(int depth, int branchLen, double angleIncrement) { if (depth > 0) { double angle = getAngle(); PTree tree = new PTree(); PBranch branch = tree.addBranch(branchLen); branch.setTilt(angle); branch.setBend(new Point2D.Double(-branchLen / 3, -branchLen / 4)); FractalTree t = (FractalTree) tree; LSystem lsystem = new LSystem(params); String result = lsystem.processString("a"); String[] tokens = result.split("\\s+"); for (int i = 0; i < tokens.length; i += 2) { double x = Double.parseDouble(tokens[i]); double y = Double.parseDouble(tokens[i + 1]); PPoint2D point = new PPoint2D.Double(x, y); branch.addChild(point); } layer.addTree(tree); tree.scale(0.85); tree.rotate(angle + angleIncrement); tree.translate(branchLen, 0); tree.setAngle(angleIncrement); depth--; angle += angleIncrement; tree(depth, (int) (branchLen * 0.6), angleIncrement); } } public void draw(GraphicContext2D g) { Random r = new Random(); g.setColor(getPalette().getColor("color1")); tree(8, 300, Math.PI / 2); } }

 

Malheureusement, cette spirale n’a pas été générée par l’IA malgré mes espoirs les plus fous…

 

Malgré ces déconvenues il faut bien reconnaître que les résultats et la vitesse d’exécution des requêtes est ébouriffante. Bien sûr tout dépend des connaissances de chacun et de la pertinence des « prompts » (les questions). Contrairement à ce que croient un certain nombre de « rageux » ignorants, il ne suffit pas de « cliquer sur un bouton » pour obtenir ce qu’on veut et ce n’est pas « trop facile ». Tout comme pour les arts graphiques (vieux débat) : « Photoshop », ce sont ceux qui ne savent pas s’en servir qui en parlent le mieux !

Il faut considérer l’IA comme un formidable ensemble d’outils novateurs et apprendre à s’en servir. C’est tout à la fois une calculatrice surdouée, un super Google, une encyclopédie universelle sous stéroïdes : il ne lui manque que la parole ! 🙂 En fait, on peut la faire parler facilement…

A l’usage, la notion de « vitesse de la lumière » reprend tout son sens, essoufflés que nous sommes dans les méandres de nos logiciels poussifs (enfin, surtout ceux de… Nan, rien…). N’oublions pas que ce domaine évolue sans arrêt et que des améliorations surprenantes vont bientôt faire partie de notre quotidien. Et de notre futur…

Edit : D’autres interfaces existent, permettant de faire tourner la plupart du temps gratuitement de nombreux moteurs d’IA :

Sur le Web : Vercel AI et Perplexity Labs.

A installer en local : LMStudio.

« Les bons prompts font les bons amis ! »

 

 

Publié le Jan 18, 2024

Voir le site pro ?

Tous les tableaux

Tous les articles

0 commentaires