Jean-Philippe Monette

Son ChatGPT en local, c'est possible?

mercredi 21 février 2024

·

8 minutes de lecture

·

Londres, UK 📍

Un llama qui travaille sur un ordinateur

L'univers de l'intelligence artificielle (IA) a été en très grande effervescence durant la dernière année - impossible à manquer! Que ce soit par l'apparition d'outils comme ChatGPT, Gemini, DALL·E ou Midjourney, il semble que tout aille bougé à vitesse grand V. Pour plusieurs, c'est devenu un incontournable de converser avec un IA pour résoudre des problèmes, automatiser des tâches et autres.

L'IA en ligne - c'est bien. Cependant, si vous voulez avoir ces échanges en toute confidentialité (pour des fins professionnelles par exemple) et gratuitement, c'est loupé, car la vaste majorité de l'offre existante conserve votre historique de conversations et les utilisent pour raffiner leurs modèles.

C'est ici que Ollama 🦙 rentre en jeu.

Préambule

Avant Ollama, c'était plutôt ardu pour un particulier d'exécuter son IA en local (spécialement pour un non tech-savvy). Il fallait généralement se perdre dans différents répertoires Github, installer des modèles de HuggingFace, installer mille & une dépendances, avoir une machine assez performante supportée et finalement espérer que le tout colle.

Maintenant, l'équipe derrière Ollama a transformé la processus en partie de plaisir.

Ollama 🦙

Ollama est un outil qui simplifie l'exécution de grand modèles de langage (LLM) libres en local. Parmi ces LLMs disponibles librement sur le Web, on peut compter sur Mistral, LLaMA-2 (de Meta), Falcon et une panoplie d'autres. Ils ont chacuns leur avantages et inconvénients, sont généralement moins puissant que ceux payants & disponibles en ligne considérant la recherche ainsi que les performances disponibles, mais sont très surprenant quand vient le temps de les mettres à l'épreuve.

La recette 👨🏻‍🍳

La recette en question (je fais sous macOS, donc ajustez en conséquence):

  • Téléchargez Ollama:
  • Lancez le binaire:
    • Il devrait faire les étapes requises pour s'installer dans /Applications & s'exposer dans votre ligne de commande.
  • Ouvrez votre ligne de commande & lancez l'exécutable ollama:
➜ ~ ollama Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model pull Pull a model from a registry push Push a model to a registry list List models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command.
  • Téléchargez Mistral avec ollama run mistral (4 Go):
    • Mistral est un modèle très performant sous license Apache développé par l'équipe parisienne Mistral AI

Suite au téléchargement, le modèle sera lancé et vous serez présentez à une conversation à-la-ChatGPT (en mode ligne de commande 😬):

➜ ~ ollama run mistral >>> Send a message (/? for help)

Utilisation ⚙️

Usages suggérés

>>> What kind of question can I ask you? You can ask me a wide range of questions on various topics such as math problems, definitions of words, explanations of concepts, trivia, or even hypothetical questions. Just keep in mind that I don't have the ability to perform physical actions or access personal data, so my responses will be limited to text-based information and general knowledge.

Langues supportées

>>> Which languages do you support? I can understand, generate text, and translate between several languages including English, Spanish, French, German, Italian, Dutch, Russian, Chinese (Simplified), Japanese, and Korean. However, my proficiency may vary between languages, and I might not be able to handle complex colloquialisms or idioms as effectively as in my primary language (English). Let me know if you have any specific question related to a particular language or translation request. >>>

Le modèle supporte donc diverses langues, que ce soit l'anglais (langue principale), l'espagnol, français, allemand, italien et autres.

Culture générale

Pouvons-nous obtenir 5 pays européens?

>>> Donne-moi 5 pays en Europe continentale Here are five countries located on the European continent: 1. Allemagne (Germany) 2. Espagne (Spain) 3. France 4. Italie (Italy) 5. Pologne (Poland) In French: Voici cinq pays d'Europe continentale : 1. Allemagne (Allemagne) 2. Espagne (Espagne) 3. France 4. Italie (Italie) 5. Pologne (Pologne) These countries represent a diverse range of cultures, histories, and geographies within Europe.

Garder le contexte + formattage JSON

Est-ce possible de garder le contexte de la question précédente et de formatter en JSON, en incluant l'anglais et le français?

>>> Formatte la suite de pays dans un Array JSON, en y incluant deux clés: en et fr Here is the array of five European countries in JSON format with both English and French keys: [ { "en": "Germany", "fr": "Allemagne" }, { "en": "Spain", "fr": "Espagne" }, { "en": "France", "fr": "France" }, { "en": "Italy", "fr": "Italie" }, { "en": "Poland", "fr": "Pologne" } ] This JSON format allows easy access to the country names in both English and French.

Résumer une page Web

Allons-y avec un exemple un peu plus complexe:

  • résumons un article à une URL distante, en 5 points;
  • ajoutons un tl:dr; en introduction;
  • formattong le tout en Markdown
  • ajoutons des emojis (pourquoi pas! 😛)
➜ ~ ollama run mistral "$(curl https://mistral.ai/news/announcing-mistral-7b/)" summarise this article in 5 key takeaways, with a short tldr as an intro, styled using markdown and add emojis where it makes sense % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17892 0 17892 0 0 167k 0 --:--:-- --:--:-- --:--:-- 174k **🔑 TL;DR:** In this article, we explore how to use Mistral AI's text generation models for content creation and summarization. Here are the key takeaways: 1. **Mistral AI offers a variety of text generation models:** The platform provides different types of text generation models like AutoRewrite, TextSummarizer, and TextExpander to cater to diverse content creation needs. 💻 2. **TextSummarizer is useful for generating summaries:** This model can create condensed versions of long texts while preserving their core information. It's a valuable asset for producing succinct summaries quickly. 📝 3. **Customizing models enhances performance:** Fine-tuning models on specific domains or topics can significantly improve their accuracy and effectiveness in generating text relevant to your use case. 🔧 4. **Text generation models have real-world applications:** From creating marketing copy, writing engaging social media posts, to generating code comments, these models can save time and effort in various industries and scenarios. 🚀 5. **Ethical considerations must be addressed:** As with any AI technology, ensuring that text generation models are used responsibly and ethically is crucial. This includes respecting copyright laws, maintaining the integrity of information, and avoiding potential biases. 💡

Évidemment, vous pourriez appeller l'exécutable via vos propres applications

Utilisation via API

Ollama expose également les modèles via une API qui, par défaut, est exposée localement sur le port :11434.

➜ ~ curl -X POST http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt": "Write me a function that outputs the fibonacci sequence" }' {"model":"mistral","created_at":"2024-02-21T23:08:18.429416Z","response":" Here","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.458994Z","response":"'","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.489749Z","response":"s","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.51962Z","response":" a","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.549193Z","response":" simple","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.580269Z","response":" recurs","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.610059Z","response":"ive","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.639778Z","response":" function","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.669567Z","response":" in","done":false} {"model":"mistral","created_at":"2024-02-21T23:08:18.699114Z","response":" Python","done":false} ...

Illisible? Vous allez probablement comprendre maintenant pourquoi les IA en ligne retournes un mot à la fois. L'API retourne automatiquement chaque mot / token dès qu'il est généré - il ne suffit qu'à mettre les différents mots ensembles pour avoir la phrase comme on l'aurait dans le mode conversation standard.

En conclusion

Impressionant? En résumé:

  • Tout ce fait en hors-ligne (sauf pour le curl de la page Web)
  • 100% privé
  • Gratuit (Apache License)
  • Roule sur un Macbook Pro M2 de 16Go (dans mon cas) rapidement & sans problème

Libre à vous maintenant de l'utiliser pour vos projets, applications, pour automatiser des tâches et plus.

© jpmonette.net

TwitterGithubTelegram