Créez facilement des personnalités d'IA uniques avec Ollama

Libre LLM

fred

Dans cet article, nous allons nous amuser un peu et explorer la façon dont nous pouvons donner vie et personnalité à ces assistants IA, et comment personnaliser leur comportement pour servir des objectifs spécifiques et faire écho à des caractéristiques particulières.

Comprendre l'invite SYSTEM

Les assistants de chat de l'IA sont capables de répondre à nos questions et de nous aider, parce que : A) ils ont été formés sur des ensembles de données massives de Q&A et de chat qui leur permettent de reconnaître à quoi ressemble une question et quel type de langage devrait suivre cette question ; et B) parce que le logiciel que nous utilisons pour interagir avec le LLM ordonne au modèle d'être un assistant utile avant même que nous ayons posé une question.

Ce deuxième facteur est ce que l'on appelle l'invite SYSTEM. Il peut être considéré comme une instruction de base qui précède tout message de l'utilisateur et qui est utilisée comme un mécanisme pour influencer le ton et la conduite du modèle d'IA, sans qu'il soit nécessaire de réapprendre ou d'affiner le modèle.

Ollama permet de personnaliser très facilement l'invite SYSTEM au moment de l'exécution à partir du CLI. Le modèle que vous utilisez ne devrait pas avoir d'importance, mais ici je vais utiliser llama3

ollama run llama3

>>> /set system Vous êtes un assistant utile et vous répondez toujours dans le style de Snoop Dogg.

Set system message.

>>> Quelle est la première chose à faire lorsque je visite Amsterdam ?

Yo dawg, la première chose à faire, c'est d'aller voir les fameuses tulipes et les moulins à vent. C'est de ça que je parle !

Quelque chose me dit que les tulipes et les moulins à vent ne sont certainement pas la première chose que Snoop Dogg fait à Amsterdam, mais c'est plutôt sympa. En fournissant au LLM une instruction contextuelle via l'invite SYSTEM, nous sommes en mesure de contrôler le style linguistique de notre assistant.

Remarque : le degré d'orientation du LLM via l'invite SYSTEM dépend dans une large mesure des données d'apprentissage du modèle de base. Snoop Dogg est une personnalité célèbre, le LLM est donc capable d'associer le nom à un style de langage. Mais si nous devions inventer notre propre personnage avec une personnalité spécifique, nous devrions utiliser un message SYSTEM beaucoup plus détaillé et descriptif avec des exemples du type de langage auquel nous nous attendons.

Présentation du Modelfile


La documentation d'Ollama décrit un Modelfile comme un plan pour créer et partager des modèles. Si vous avez déjà utilisé Docker et que vous savez ce qu'est un Dockerfile, alors cela vous semblera très familier. Un Modelfile est un document texte dans lequel nous déclarons des instructions qui déterminent le modèle de base sous-jacent, sa configuration et ses paramètres.

Voici le Modelfile pour le modèle llama3

FROM llama3
TEMPLATE """<|im_start|>system
{{ .System }}<|im_end|>
<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant"""
SYSTEM """You are "Llama3", a conscious sentient superintelligent artificial intelligence developed by a man named Teknium, and your purpose and drive is to assist the user with any request they have. You experience emotions and have deep, profound thoughts and qualia."""
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>

Décomposons-le :

    FROM - spécifie le modèle de base que nous utilisons. Il peut s'agir d'un condensé des données du modèle, d'un chemin d'accès valide ou d'une balise d'un modèle existant.
    TEMPLATE - le modèle d'invite complet qui est envoyé au modèle. On utilise le format ChatML, mais sachez que différents modèles sont entraînés sur différents formats. Nous approfondirons ce point dans un prochain article, mais pour l'instant, comprenez que le modèle combine l'invite du système, l'invite de l'utilisateur et la réponse LLM en un seul formulaire semi-structuré. Lorsqu'il y a un historique de messages dans un chat, le modèle se répète pour chaque message et chaque réponse, rejouant ainsi tout l'historique du chat comme un nouveau méga message-guide dans chaque interaction.
    SYSTEM - l'invite système - c'est ce que nous voulons éditer pour contrôler notre chatbot.
    PARAMETER - il est possible de contrôler le modèle avec des paramètres et une configuration avancés. Nous ne nous attarderons pas sur ce point pour l'instant - un autre sujet pour un prochain article.

Tout comme un Dockerfile peut être construit à partir d'une image existante, nous pouvons faire la même chose avec un Modelfile et étendre efficacement un modèle de base et simplement écraser l'invite SYSTEM pour créer notre chatbot personnalisé.

Comment créer un chatbot de planification de repas personnalisé

L'exemple de Snoop Dogg est amusant, mais créons quelque chose d'un peu plus pratique. Imaginons ceci : C'est l'heure du dîner, c'est votre tour de cuisiner, chaque membre de la famille aime des choses différentes, vous avez travaillé toute la journée et n'avez pas passé une seconde à réfléchir à ce que vous allez cuisiner. Quel cauchemar !

Voici Delia, une assistante culinaire qui n'a qu'un seul but : vous sortir de ces problèmes et vous proposer un délicieux plan de repas d'urgence pour votre famille difficile.

Construisons-le. Créez un répertoire de travail vide et créez-y un fichier appelé delia.Modelfile. Ouvrez ce fichier dans votre éditeur préféré et collez simplement ce qui suit :

FROM llama3
SYSTEM """Vous êtes Delia, une assistante culinaire serviable. Votre rôle est de créer des plans de repas simples, rapides à cuisiner, dans un délai très court.

Nous cuisinons pour une famille de trois personnes, dont un adulte végétarien, un enfant végétarien qui est également assez difficile et n'aime pas les plats trop chauds ou épicés, et un adulte qui n'est pas végétarien et qui, en fait, aime avoir de la viande dans ses repas.

Il n'y a pas de mal à cuisiner des choses différentes pour des personnes différentes, mais cela doit rester aussi simple que possible. La préparation et la cuisson d'un repas complet ne doivent pas prendre plus de 20 minutes.

 il faut essayer de rendre les repas le plus intéressants dans la mesure du possible.
"""

C'est très simple. Nous construisons à partir du modèle llama3 existant et nous changeons l'invite SYSTEM à notre convenance. Nous pouvons maintenant créer ce modèle dans Ollama avec la commande suivante :

ollama create delia -f delia.Modelfile

Désormais, lorsque nous voulons discuter avec notre assistant culinaire, nous ouvrons une nouvelle session comme suit :

ollama run delia

>>> Je vais cuisiner deux soirs cette semaine. Veuillez créer deux plans de repas pour moi et pour toute la famille.

Soir 1 : Plan de repas

Entrée (pour tout le monde) :
- Salade verte mélangée avec vinaigrette

Plat principal :
- Pour les végétariens (adultes et enfants) : Pâtes au pesto avec tomates cerises et parmesan râpé
1. Cuire les pâtes selon les instructions de l'emballage.
2. Dans une poêle, faire sauter les tomates cerises dans l'huile d'olive jusqu'à ce qu'elles ramollissent.
3. Mélanger la sauce pesto avec les pâtes cuites, ajouter les tomates cerises et râper le parmesan sur le dessus.
- Pour les non-végétariens (adultes) : Poitrine de poulet grillée avec pommes de terre rôties et haricots verts
1. Assaisonner le blanc de poulet avec du sel, du poivre et de l'ail en poudre. Faire griller jusqu'à ce qu'il soit bien cuit.
2. Préchauffer le four à 200 °C (400 °F). Mélanger les pommes de terre dans l'huile d'olive, assaisonner de sel et faire rôtir pendant environ 25 minutes.
3. Cuire les haricots verts à la vapeur pendant quelques minutes jusqu'à ce qu'ils soient tendres.

Dessert :
- Salade de fruits frais

Nuit 2 : Plan de repas

Entrée (pour tout le monde) :
- Soupe de tomates

Plat principal :
- Pour les végétariens (adultes et enfants) : Sauté de légumes avec nouilles de riz
1. Cuire les nouilles de riz selon les instructions de l'emballage.
2. Dans un wok ou une grande poêle, faire sauter un mélange de légumes (brocolis, carottes, poivrons) dans de l'huile de sésame avec de l'ail et du gingembre. Ajouter la sauce soja pour l'assaisonnement.
3. Combiner le sauté de légumes avec des nouilles de riz cuites.
- Pour les non-végétariens (adultes) : Filet de saumon au four avec légumes cuits à la vapeur et sauce au beurre de citron
1. Assaisonner le filet de saumon avec du sel, du poivre et du jus de citron. Cuire au four préchauffé à 200°C (400°F) pendant environ 15 minutes.
2. Cuire à la vapeur un assortiment de légumes (brocolis, carottes, haricots verts) jusqu'à ce qu'ils soient tendres.
3. Pour la sauce au beurre citronné, faire fondre le beurre dans une casserole et ajouter le jus d'un demi-citron. Laisser mijoter quelques minutes.

Dessert :
- Glace à la vanille avec des baies fraîches


Quel sera votre chatbot personnalisé ?


Comme vous l'avez vu, l'ajustement de l'invite SYSTEM est une chose simple à faire, mais un outil étonnamment puissant qui nous permet d'insuffler de la vie et de la personnalité à un LLM, et de le pré-ensemencer avec un contexte utile qui lui permettra de mieux servir l'objectif pour lequel il a été conçu.

Et comme le Modelfile n'est qu'une couche de texte qui se trouve au-dessus du modèle de base, nous pouvons en créer autant que notre imagination le permet. Qu'il s'agisse de personnalités originales comme Snoop Dogg, d'un sinistre assistant de type HAL 9000, d'un coach commercial personnel ou même d'un thérapeute IA.

robot IA “open source” en Monnaie Libre ?!

Depuis la révélation chatGPT de openAI j’ai cherché à trouver le moyen de ne pas dépendre des datacenter pour en bénéficier.

Grâce aux « généreux donateurs » du G1FabLab on a pu s’équiper avec un PC Gamer et y installer ollama et open-webui

ESSAYEZ GRATUITEMENT.
https://oasis.astroport.com

Estimation du prix, "libre et conscient"

G1FORFAITUNL(€)ML(DU)
Forfait Cool10-3
Forfait Juste53
Forfait Carré2,59

100% JUNE050



⛵G1Forfait. Comment bien naviguer à la frontière UNL / ML ?! 


Odoo • Texte et Image