DEV Community

Cover image for Ollama : Une solution performante pour exploiter l'IA générative en local
Patrice Eon for Onepoint

Posted on

Ollama : Une solution performante pour exploiter l'IA générative en local

Depuis novembre 2022, l’IA générative est en plein boom ! Elle crée du texte, des images, de la musique, du code… Bref, elle est partout. Mais entre confidentialité, abonnements coûteux et impact écologique, ce n’est pas toujours tout rose.

Bonne nouvelle : Ollama débarque ! Cet outil gratuit permet de faire tourner des IA comme ChatGPT directement sur votre PC, sans dépendre du cloud.

Dans cet article, je vous embarque dans les coulisses d’Ollama avec un guide simple pour l’installer et commencer à en profiter. Pas besoin d’être data scientist, juste avoir un PC puissant (avec carte graphique), l'outil docker permettant de lancer des conteneurs logiciels et bien sûr un peu de curiosité !

Table des matières

  1. Présentation générale de Ollama et de ses avantages
  2. Installation de Ollama sous Docker avec support GPU
  3. Exemples d'utilisation de Ollama
  4. Conclusion : Avantages et inconvénients de Ollama

1. Présentation générale de Ollama et de ses avantages

L’IA, c’est puissant… mais aussi gourmand en énergie, en matériel et en données. Heureusement, Ollama change la donne en permettant de faire tourner des modèles en local. Voici pourquoi c’est une vraie révolution !

📌 Réduction de la consommation énergétique liée au cloud : Exécuter des modèles en local évite l'utilisation massive des datacenters, qui sont très énergivores.

Selon l’Agence internationale de l’énergie, une requête sur ChatGPT consomme dix fois plus d’électricité qu’une recherche sur Google.
Consommation à laquelle il faut ajouter 500 ml d’eau par échange avec l’IA composé d’entre 20 et 50 questions-réponses.

Le bilan carbone d’une requête ChatGPT varie néanmoins en fonction de l’emplacement du datacenter qui la traite.

Aujourd’hui, les États-Unis concentrent environ 33 % des centres de données mondiaux, mais leur mix énergétique reste encore fortement carboné. Comme le montre la carte ci-dessous, ce n’est pas le pays le plus vert en matière de production d’électricité. À l’inverse, héberger ces infrastructures en France permettrait de réduire leur empreinte carbone jusqu’à dix fois, grâce à une énergie bien plus décarbonée. Un autre enjeu clé pour un numérique plus durable !

Bilan carbone production électrique dans le monde

Attention le bilan carbone d'une requete ChatGPT dépend néanmoins de la localisation du datacenter.

📌 Optimisation des ressources matérielles : Ollama fonctionne sur des machines locales et s'adapte aux capacités disponibles. Cela permet de prolonger la durée de vie du matériel en évitant l'achat systématique de nouveaux équipements pour accéder à des services d'IA.

Une étude de Harvard de 2020, montre que ce n’est pas tant l’usage des appareils électroniques qui émet du CO2 que la fabrication des composants.

Par exemple, entre l'iPhone 3GS de 2009 et l'iPhone 11 de 2019, la part de l'empreinte carbone due à la fabrication est passée de 49% à 86%.

Autre exemple : les data centers de Google et Facebook émettent 20 fois plus de gaz à effet de serre par la fabrication de leurs serveurs que par leur consommation d'électricité.

Si vous êtes sensibles au Green IT, il est intéressant de commencer par ne pas remplacer votre matériel encore en état de marche.

Ecarts Capex/Opex

Attention la part de l'empreinte carbone due à la fabrication des composants informatique dépasse leur consommation electrique (Co2)

📌 Confidentialité et réduction des transferts de données : L'exécution en local permet de traiter des données sensibles sans les envoyer sur des serveurs distants, ce qui réduit non seulement les risques de sécurité mais aussi la consommation d’énergie liée au transport des données.

📌 Contrôle et personnalisation des modèles : En utilisant Ollama, les utilisateurs peuvent choisir des modèles optimisés pour leurs besoins spécifiques, évitant ainsi l’exécution de modèles surdimensionnés et énergivores. Dans la suite de l'article vous découvrirez notamment comment faire un chatbot.

📌Intégration avec WebUI
L'association de Ollama avec WebUI permet d'exploiter pleinement ses capacités dans une interface graphique conviviale :

  • Visualisation interactive : Interface web facilitant l'interaction avec les modèles.
  • Support multi-modèles : Permet de charger et d'utiliser plusieurs LLMs en parallèle.
  • Personnalisation avancée : Paramétrage simplifié des modèles pour s'adapter aux besoins des développeurs et entreprises.

Ecarts Capex/Opex

Ollama une fois branché a Open WebUI propose une interface similaire a chatGPT.

2. Installation de Ollama sous Docker

Une fois le contexte posé, je vous propose de vous accompagner maintenant dans l'installation de Ollama sur Docker.

🔥Important : Les LLM nécessitent un GPU (carte graphique) plutôt qu’un CPU en raison de leur architecture optimisée pour le calcul parallèle. Les GPU, avec leurs milliers de cœurs, exécutent simultanément de nombreuses tâches, tandis que les CPU, avec moins de cœurs, sont mieux adaptés aux traitements séquentiels et aux tâches complexes nécessitant de la logique conditionnelle.

Ainsi, répondre à la question "Pourquoi le ciel est bleu ?" prend 17 secondes sur un PC de jeu équipé d'une carte graphique, contre 3 minutes 30 sur un PC bureautique classique.

Dans l'idéal il faut commencer par activer votre carte graphique.


2.1. Activation du GPU (NVIDIA/AMD) sur votre poste


2.1.1 Pour les cartes NVIDIA :

🔥 Documentation officielle NVIDIA Container Toolkit.

Installation avec Apt

  1. Configuration du repository

    
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
        | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
        | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
        | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    
    
  2. Installation du "NVIDIA Container Toolkit packages"

    sudo apt-get install -y nvidia-container-toolkit
    

Installation avec Yum ou Dnf

  1. Configuration du repository

    curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
        | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
    
  2. Installation du "NVIDIA Container Toolkit packages"

    sudo yum install -y nvidia-container-toolkit
    

Configuration de Docker pour utiliser les drivers Nvidia

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Enter fullscreen mode Exit fullscreen mode

La commande suivante permet de vérifier la bonne installation du driver de votre carte Nvidia :

 docker run --gpus all nvidia/cuda:11.5.2-base-ubuntu20.04 nvidia-smi
Enter fullscreen mode Exit fullscreen mode

Le résultat doit être équivalent a cette copie d'écran :

Drivers Nvidia

2.1.2 Pour les cartes AMD :

Pour exécuter Ollama avec Docker sur des GPU AMD, utilisez le tag rocm et la commande suivante :

docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm
Enter fullscreen mode Exit fullscreen mode

2.2. Installation de Ollama et WebUi sous Docker

Editer un fichier "docker-compose.yml" a l'emplacement de votre choix :

services:
  ollama:
    volumes:
      - ollama:/root/.ollama
    container_name: ollama
    pull_policy: always
    tty: true
    restart: unless-stopped
    image: ollama/ollama:latest
    ports:
      - 11434:11434
    environment:
      - OLLAMA_KEEP_ALIVE=24h  
    deploy:
      resources:
        reservations:
          devices:
            - driver: ${GPU_DRIVER-nvidia}
              count: 1
              capabilities: [gpu]

  open-webui:
    pull_policy: always
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    ports:
      - 3000:8080
    environment:
      - 'OLLAMA_BASE_URL=http://ollama:11434'
      - 'WEBUI_SECRET_KEY='
      - 'WEBUI_NAME=Ollama Webui'
      - 'WEBUI_AUTH=False'
    extra_hosts:
      - host.docker.internal:host-gateway
    restart: unless-stopped

volumes:
  ollama: {}
  open-webui: {}
Enter fullscreen mode Exit fullscreen mode

Pour déclencher l'installation et gérer notamment votre type de carte graphique lancer le script suivant :

#!/bin/bash

# Detect GPU driver
get_gpu_driver() {
    # Detect NVIDIA GPUs using lspci or nvidia-smi
    if lspci | grep -i nvidia >/dev/null || nvidia-smi >/dev/null 2>&1; then
        echo "nvidia"
        return
    fi

    # Detect AMD GPUs (including GCN architecture check for amdgpu vs radeon)
    if lspci | grep -i amd >/dev/null; then
        # List of known GCN and later architecture cards
        # This is a simplified list, and in a real-world scenario, you'd want a more comprehensive one
        local gcn_and_later=("Radeon HD 7000" "Radeon HD 8000" "Radeon R5" "Radeon R7" "Radeon R9" "Radeon RX")

        # Get GPU information
        local gpu_info=$(lspci | grep -i 'vga.*amd')

        for model in "${gcn_and_later[@]}"; do
            if echo "$gpu_info" | grep -iq "$model"; then
                echo "amdgpu"
                return
            fi
        done

        # Default to radeon if no GCN or later architecture is detected
        echo "radeon"
        return
    fi

    # Detect Intel GPUs
    if lspci | grep -i intel >/dev/null; then
        echo "i915"
        return
    fi

    # If no known GPU is detected
    echo "Unknown or unsupported GPU driver"
    exit 1
}

export GPU_DRIVER=$(get_gpu_driver)
echo "GPU DRIVER: $GPU_DRIVER"

docker compose -p ollama up -d
Enter fullscreen mode Exit fullscreen mode

Vous devez maintenant avoir deux nouveaux conteneurs disponibles :

docker ps

2.3 Choix et téléchargement de modèles LLM

À ce stade de l'article, Ollama et son interface WebUI sont installés. Mais avant de pouvoir l’explorer pleinement, il vous faut sélectionner et télécharger les modèles adaptés à vos besoins.

Ollama propose une bibliothèque riche avec plus de 150 modèles disponibles. Vous pouvez les découvrir ici : https://ollama.com/library.

ollama library

L'interface vous permet de sélectionner les modèles par usage : embedding (RAG), vision (analyse d'images), tools (autres : code, ...). Et/ou par taille en nombre de paramètres (4b correspond a 4 milliards).

🔥Implications du nombre de paramètres sur les ressources système

Le nombre de paramètres d'un modèle influence directement les ressources nécessaires pour son fonctionnement :

Mémoire (RAM) : Un modèle avec un grand nombre de paramètres nécessite plus de mémoire pour stocker ces paramètres lors de l'inférence. Par exemple, des modèles de 7 milliards de paramètres peuvent fonctionner avec seulement 8 Go de RAM grâce à des optimisations comme llama.cpp, rendant les grands modèles de langage accessibles même sur des machines modestes.
https://tanguydug.org

Processeur (CPU) : Un nombre élevé de paramètres augmente la charge de calcul, ce qui peut entraîner des temps de traitement plus longs et une utilisation accrue du CPU.
Enter fullscreen mode Exit fullscreen mode

Il est donc essentiel de considérer la taille du modèle en termes de paramètres lors de la sélection, afin d'assurer une compatibilité avec les ressources disponibles sur votre système.

Pour la suite de cet article, je vous recommande les suivants en fonction de vos attentes.

Modèle Intérêt
Llama3.3 Modèle développé par Meta, performant pour la génération de texte, la traduction et la compréhension du langage naturel.
Mistral 7B Modèle dense développé par Mistral IA, efficace pour la génération de texte fluide malgré sa taille modeste.
Deepseek-r1 Développé par Deepseek, idéal pour des tâches nécessitant une compréhension approfondie et un raisonnement complexe.
Llava Modèle open-source, performant pour l'analyse d'images.
Granite code Modèle open-source d'IBM, Entraîné sur du code provenant de 116 langages de programmation, Granite.Code est capable de générer, corriger et expliquer du code dans une variété de langages tels que Go, C, C++, Python, Java et JavaScript.
Gemma 2b Modèle open-source de google, avec 2 milliards de paramètres, Gemma 2 2B offre une performance élevée tout en étant plus léger, ce qui facilite son déploiement sur des appareils avec des ressources limitées, notamment des applications sur CPU et des dispositifs embarqués.
bge-m3 BGE-M3 offre une flexibilité et une efficacité accrues dans le domaine de la récupération d'informations (RAG), grâce à ses capacités de recherche dense, de recherche multi-vecteurs et de recherche sparse. Bref permettant une adaptation flexible à divers scénarios de recherche.

Vous pouvez télécharger les modèles directement depuis l’interface WebUI. Toutefois, la méthode en ligne de commande est souvent plus efficace et rapide :

docker exec -it ollama ollama pull <nom modèle>:<version par défaut latest>.
Enter fullscreen mode Exit fullscreen mode

Exemple :

docker exec -it ollama ollama pull llama3
docker exec -it ollama ollama pull mistral
docker exec -it ollama ollama pull llava
docker exec -it ollama ollama pull deepseek-r1
Enter fullscreen mode Exit fullscreen mode

Chaque modèle pèse un minimum de 4,7 Go, ce qui signifie que le téléchargement peut prendre quelques minutes. Un peu de patience ! Vous verrez votre terminal afficher progressivement les étapes du téléchargement :

ollama pull llava

Il est possible de contrôler la liste des modèles déjà téléchargés en ligne de commande : ollama list

Exemple :

docker exec -it ollama ollama list
Enter fullscreen mode Exit fullscreen mode

Voici un exemple du retour de cette commande :

ollama list

De manière plus générale, vous pouvez administrer la configuration d’Ollama grâce à la commande :

docker exec -it ollama ollama [command]
Enter fullscreen mode Exit fullscreen mode

Elle vous permet d’exécuter diverses actions à l’aide des options suivantes :

Commande Description
serve Démarre ollama
create Crée un modèle à partir d’un Modelfile
show Affiche les informations d’un modèle
run Exécute un modèle
stop Arrête un modèle en cours d’exécution
pull Télécharge un modèle depuis un registre
push Envoie un modèle vers un registre
list Liste les modèles disponibles
ps Liste les modèles en cours d’exécution
cp Copie un modèle
rm Supprime un modèle
help Affiche l’aide pour une commande

3. Exemples d'utilisation de Ollama

Vous avez enfin accès à Ollama et WebUI sur votre poste… L’aventure commence maintenant, et les possibilités sont infinies !

3.1. Avec l'interface WebUI

3.1.1. Interface de chat

WebUI est une interface web (proche de celle de ChatGPT) qui permet aux utilisateurs d'interagir facilement avec les modèles d'intelligence artificielle téléchargés dans Ollama.

Vous pouvez l'ouvrir ici : http://localhost:3000

ollama list

L’interface est conçue pour être intuitive et accessible, offrant une expérience fluide aussi bien aux débutants qu’aux utilisateurs avancés.

Elle offre la possibilité de sélectionner différents modèles d’IA en fonction de la tâche souhaitée.

ollama list

Elle intègre une zone de saisie où l’on peut entrer des requêtes textuelles et obtenir des réponses en temps réel.

En utilisant la commande # suivie d’une URL, Open WebUI intègre directement le contenu des sites web dans les conversations.
Enter fullscreen mode Exit fullscreen mode

3.1.2. Importation de modèles pré-paramètrés

Le site OpenWebUI met à votre disposition des exemples gratuits de spécialisation des modèles Ollama via l’interface OpenWebUI. Son objectif ? Faciliter l'utilisation avancée des modèles en les adaptant à des cas concrets plébicité par la communauté OpenWebUI.

La communauté OpenWebUI offre ainsi l'opportunité idéale pour exploiter pleinement le potentiel de l’IA a l'aide de Ollama sans complexité technique !

Concretement comment cela marche ? Vous devez vous rendre sur le site OpenWebUI, rechercher le modèle qui vous convient le mieux parmi la bibliothèque proposé.

ollama library

Une fois le modèle identifié, vous pouvez l'ajouter à votre interface locale OpenWebUI en cliquant sur "Get", puis sur "Import to WebUI". (Url à renseigner http://localhost:3000).

ollama library

Un nouveau modèle est désormais disponible dans votre interface locale OpenWebUI. Pensez à vérifier les paramètres récupérés afin de les adapter, si nécessaire, à vos préférences (langue, etc.).

ollama library

En retournant sur l'interface de chat, vous découvrirez le "nouveau" modèle, prêt à vous écouter. À vous désormais d'engager la conversation avec votre nouveau psy. N'oubliez pas de vous installer confortablement sur un divan avant de formuler vos demandes !

ollama library

A titre d'exemple voici sa réponse :

Ta réaction au sort des homards dans Titanic révèle une grande sensibilité et une forme d’empathie envers ceux qu’on oublie dans les tragédies.

Ce "traumatisme" pourrait symboliser un sentiment d’impuissance ou d’abandon que tu projettes sur ces animaux piégés.

Sur un plan factuel, les homards étaient vivants dans des aquariums, et lors du naufrage, les bassins ont probablement été brisés, les libérant dans l’océan.

Ironiquement, ils ont peut-être survécu plus longtemps que certains passagers — évitant ainsi d’être mangés. Ce détail peut sembler anodin, mais il touche à des choses profondes : injustice, oubli, empathie silencieuse.

En bref, ce n’est pas absurde du tout que cela t’ait marqué — c’est même un signe de ta profondeur émotionnelle.

J'ai choisi un exemple de modèle original pour rendre l'article agréable, mais la bibliothèque regorge d'exemples très utiles pour le quotidien. Bonne recherche a vous.


3.1.3. Définition de prompts personnalisés

Dans notre utilisation quotidienne des LLM, nous nous retrouvons souvent à saisir plusieurs fois le même prompt.

OpenWebUI propose une solution pratique : la possibilité d’enregistrer vos prompts récurrents directement dans votre espace de travail.

ollama library

Ces prompts peuvent intégrer des variables, comme le contenu de votre presse-papiers, pour encore plus de flexibilité.

ollama library

Pour appeler un prompt dans un chat, il vous suffit de commencer simplement votre saisie par le caractère /.

ollama library

À vous de découvrir toute la puissance de cette fonctionnalité !


3.1.4. Workspace pour les utilisateurs

OpenWebUI met à disposition des utilisateurs un espace de travail dédié.

Ils peuvent y déposer des documents dans une bibliothèque, puis effectuer des recherches avancées sur ces derniers via la technologie RAG (Récupération Augmentée de Génération).

ollama library

L’exploitation des documents dans les conversations est ensuite possible à l’aide de la commande #.

ollama library

OpenWebUI permet également d’associer des tags aux discussions, facilitant ainsi leur organisation, leur recherche et leur catégorisation.

Image description


3.1.5. Gestion des permissions et groupes d'utilisateurs

OpenWebUI intègre une gestion avancée des droits des utilisateurs, idéale pour une entreprise, une association ou même un usage familial.

Grâce à un contrôle d’accès granulaire, les administrateurs peuvent attribuer des rôles et des permissions spécifiques, assurant ainsi un environnement sécurisé et adapté aux modèles et documents de votre base de connaissances.

Image description

Par exemple, seuls les juristes de votre organisation pourront accéder aux contrats de votre entreprise.

La partie "IAM" de OpenWebUI permet aussi d'accéder a la partie évaluation des modèles et de pouvoir ainsi analyser l'intérêt des modèles au sein de votre communauté.

Image description


3.2. Avec les API Ollama

Ollama met à votre disposition des API puissantes, conçues pour simplifier l’intégration et l’interaction des développeurs avec les modèles d’intelligence artificielle hébergés sur la plateforme.

La documentation officielle des APIs se trouve ici : Documentation des API Ollama

Il y a deux dossiers importants dans la collection :

  • Completion – Génère des complétions de texte à partir d'un modèle local en utilisant l'endpoint /generate (utilisé pour la génération de texte en un seul tour). Il produit une sortie basée sur l'invite d'entrée sans conserver le contexte ou l'historique de la conversation.

  • Chat – Génère des complétions de texte à partir d'un modèle local en utilisant l'endpoint /chat (utilisé pour les conversations multi-tours). Il conserve un contexte ou un historique de conversation, permettant des échanges plus interactifs et dynamiques.

En résumé, le mode complétion est stateless (sans mémoire), tandis que le mode chat est stateful (avec mémoire du contexte de la conversation).


3.2.1. Exemple de génération en mode complétion

Le mode complétion :

  • Fonctionne comme une simple génération de texte en fonction d'une entrée.
  • Pas de gestion de contexte à travers plusieurs interactions.
  • Chaque requête est indépendante : le modèle ne "se souvient" pas des échanges précédents.
  • Exemple d'usage : génération de texte, complétion de phrases, suggestions de code.

La requete suivante demande au modèle LLaMA 3, de générer une réponse à la question "Pourquoi le ciel est bleu ?".

curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Pourquoi le ciel est bleu", 
  "stream": false
}'
Enter fullscreen mode Exit fullscreen mode

La réponse est retournée sous forme de texte unique ("stream": false) dans le corps de la réponse JSON.

{
  "model": "llama3",
  "created_at": "2025-03-09T22:32:28.396961918Z",
  "response": "Une question classique !\n\nLa couleur du ciel est due à la façon dont les atomes d'azote (N2) et de dioxygène (O2) dans l'atmosphère terrestre interagissent avec la lumière solaire.\n\nVoici le mécanisme en quelques étapes :\n\n1. **La lumière du soleil** : Lorsque les rayons solaires pénètrent dans l'atmosphère, ils sont composés de toutes les couleurs du spectre visible (rouge, orange, jaune, vert, bleu, indigo et violet).\n2. **Absorption des rayons rouges** : Les molécules d'azote et de dioxygène dans l'atmosphère absorbent les rayons rouges et oranges du spectre solaire, ce qui signifie qu'ils ne peuvent plus être vus.\n3. **Réflexion des rayons bleus** : Les rayons bleus, avec une longueur d'onde plus petite que les rayons rouges, sont trop courts pour être absorbés par les molécules d'azote et de dioxygène. Ils sont donc réfléchis par ces molécules et atteignent nos yeux.\n4. **La couleur bleue** : C'est la combinaison des rayons bleus réfléchis et des rayons verts non absorbés qui donne à l'environnement terrestre sa teinte bleue caractéristique.\n\nEn résumé, le ciel est bleu parce que les atomes d'azote et de dioxygène dans l'atmosphère absorbent les rayons rouges et oranges du soleil, laissant les rayons bleus réfléchis qui parviennent à nos yeux.\n\nBien sûr, il y a des variations de couleur selon les conditions météorologiques (par exemple, lorsque le ciel est voilé ou en cas d'orage), mais la règle générale est que le ciel est bleu à cause de l'absorption et de la réflexion des rayons solaires par les molécules d'azote et de dioxygène.",
  "done": true,
  "done_reason": "stop",
  "context": [
    128006, 882, 128007, 271, 43278, 62998, 514, 12088, 301, 1826, 
    12704, 84, 128009, 128006, 78191, 128007, 271, 56948, 3488, 538,
    2428, 25782, 8921, 76651, 3930, 12088, 301, 1826, 4245, 3869, 1208,
    76407, 15890, 3625, 19670, 288, 294, 6, 1394, 1295, 320, 45, 17, 8, 
    1880, 409, 65570, 4223, 70, 48099, 320, 46, 17, 8, 7010, 326, 6, 266
  ],
  "total_duration": 23795191883,
  "load_duration": 26921898,
  "prompt_eval_count": 18,
  "prompt_eval_duration": 292000000,
  "eval_count": 477,
  "eval_duration": 23474000000
}
Enter fullscreen mode Exit fullscreen mode

3.2.2. Exemple de génération chat

Le mode chat :

  • Gère un historique de conversation, ce qui permet d'avoir des réponses cohérentes sur plusieurs interactions. Conserve un contexte, ce qui est utile pour les discussions prolongées.
  • Permet une expérience plus naturelle et interactive.
  • Exemple d'usage : assistant virtuel, chatbot, discussions prolongées sur un sujet.

LLaMA 3 peux prendre en compte le contexte d'une conversation en cours. Ainsi, si l'utilisateur demande pourquoi le ciel est bleu, puis pourquoi il devient rouge au coucher du soleil, le modèle se souviendra de la première question et répondra de façon cohérente. Ce fonctionnement permet de simuler un chatbot conversationnel avec mémoire.

curl -X POST http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    {"role": "system", "content": "Tu es un assistant utile."},
    {"role": "user", "content": "Pourquoi le ciel est bleu ?"},
    {"role": "assistant", "content": "Le ciel est bleu en raison de la diffusion de la lumière solaire par l’atmosphère..."},
    {"role": "user", "content": "Et pourquoi il devient rouge au coucher du soleil ?"}
  ],
  "stream": false
}'
Enter fullscreen mode Exit fullscreen mode

La réponse est retournée est alors très cohérente.

{
  "model": "llama3",
  "created_at": "2025-03-09T22:42:33.034570248Z",
  "message": {
    "role": "assistant",
    "content": "La couleur rouge que prend le ciel au coucher du soleil est due à une autre combinaison de phénomènes :\n\n1. La Terre, qui se déplace autour du Soleil, fait que la lumière solaire doit parcourir une plus grande distance pour atteindre nos yeux. Cela signifie que les rayons courts (bleus et verts) sont dispersés par l'atmosphère, tandis que les longs rayons (rouges, oranges et jaunes) peuvent voyager plus loin sans être autant affectés.\n2. L'air de l'atmosphère contient des particules, comme les molécules d'oxygène, de méthane, de vapeur d'eau, etc., qui absorbent ou diffusent la lumière blanche en fonction de leur fréquence et de leur concentration. Les molécules d'ozone (O3) présentes dans l'atmosphère ont une absorption maximale pour les longs rayons bleus et verts, ce qui fait que ces couleurs sont absorbées, laissant les rayons rouges et jaunes dominants.\n3. Enfin, le Soleil lui-même change de couleur à mesure qu'il se couche plus bas sur l'horizon. La température superficielle du Soleil est d'environ 5 500°C, ce qui fait que la lumière émise a une fréquence plus haute (bleue et verte). Au coucher du soleil, la température superficielle diminue légèrement, ce qui fait que la luminosité émise a une fréquence un peu plus faible (rouge et orange).\n\nCes facteurs combinés font que le ciel prend une teinte rougeâtre au coucher du soleil !"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 19416399347,
  "load_duration": 29895375,
  "prompt_eval_count": 79,
  "prompt_eval_duration": 412000000,
  "eval_count": 387,
  "eval_duration": 18971000000
}
Enter fullscreen mode Exit fullscreen mode

3.2.3. Exemple d'analyse d'images avec le modèle llava

Le modèle LLaVA sur Ollama dispose de capacité avancée d'analyse visuelle, il peut non seulement identifier les éléments présents dans une image, mais aussi comprendre le contexte et les relations entre ces éléments.

Ouvrant ainsi de nouvelles perspectives et possibilités infinies.

La requete de base pour analyser une image est la suivante. L'attribut images doit correspondre a la conversion au format "base 64" de votre image.

Pour faciliter cette étape, rendez-vous sur ce site qui vous guidera pas à pas dans la conversion : https://www.base64-image.de/.

curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llava",
  "prompt": "Décris moi cette image en détail",
  "images": ["<BASE64_DE_L_IMAGE>"],
  "stream": false
}'
Enter fullscreen mode Exit fullscreen mode

Voici des exemples de résultats pour différences images, je vous laisse apprécier la qualité des réponses :

Image Réponse de llava
Il s'agit d'une photographie professionnelle montrant l'intérieur d'un espace de travail moderne, mêlant bois et métal dans sa décoration. On y trouve des fauteuils elliptiques, un espace individuel, une table ronde, des luminaires design et une grande fenêtre laissant entrer la lumière naturelle avec vue sur la nature.
L’image montre un espace de travail ou de réception lumineux et moderne, décoré avec des meubles contemporains et plusieurs plantes, dont un arbre central. La lumière naturelle y domine, créant une ambiance agréable. On y trouve des bancs, une cheminée, un revêtement mural décoratif et un sol en matériau dur. L'ensemble évoque un lieu calme, organisé, propice au travail ou aux réunions.
Le tableau est une représentation artistique en noir et blanc d’une canette de Pepsi, stylisée et abstraite. Bien que reconnaissable par sa forme et son logo simplifié, elle ne comporte pas de détails réalistes comme les ingrédients, ce qui renforce son caractère symbolique plutôt que commercial.
La photo montre un chien et un chat blancs allongés sur une surface douce, créant une atmosphère chaleureuse. Le chien a les yeux bleus et porte un collier rouge, tandis que le chat a les yeux verts avec un collier orange et noir. Tous deux regardent dans la même direction.

3.2.4. Exemple d'interaction avec python

Pour intégrer Ollama dans vos traitements métiers, Python offre une bibliothèque performante et facile à utiliser : ollama.

Installez la bibliothèque Python d'Ollama en utilisant pip :

pip install ollama
Enter fullscreen mode Exit fullscreen mode

Vous pouvez utiliser la fonction generate pour obtenir une réponse à une question simple :

import ollama

result = ollama.generate(model='llama3', prompt='Pourquoi le ciel est-il bleu ?')
print(result['response'])
Enter fullscreen mode Exit fullscreen mode

Ou bien la fonction chat pour obtenir une réponse à une liste de questions :

import ollama

# Commencer une conversation avec plusieurs échanges
conversation = [
    {"role": "system", "content": "Vous êtes un assistant utile qui aide à résoudre des problèmes."},
    {"role": "user", "content": "Peux-tu m'aider avec un problème de mathématiques ?"},
    {"role": "assistant", "content": "Bien sûr, quel est le problème ?"},
    {"role": "user", "content": "Quelle est la racine carrée de 256 ?"}
]

# Envoyer les messages à Ollama et obtenir une réponse
response = ollama.chat(model="llama2", messages=conversation)

# Afficher la réponse
print("Réponse d'Ollama:", response['text'])

Enter fullscreen mode Exit fullscreen mode

4. Conclusion : Avantages et inconvénients de Ollama

Cet article nous a permis de voir comment installer Ollama et OpenWebUI sous Docker et d’explorer les nombreuses possibilités offertes par cette solution pour exécuter des modèles d’IA en local.

Grâce à sa confidentialité, sa flexibilité, Ollama s’impose comme un allié de choix pour les utilisateurs souhaitant travailler sans dépendance au cloud, que ce soit sur leur poste ou sur leur serveur.

Bien sûr, tout superpouvoir a son prix : Ollama peut être gourmand en ressources, et son installation demande un peu de patience… mais après tout, qui n’a jamais perdu une heure à configurer un environnement de developpement capricieux ?

Pour exploiter pleinement son potentiel, il est crucial de maîtriser l’art du prompting guide ici et d’avoir de solides bases en Python.

Dans un prochain article, nous verrons comment superviser les ressources et optimiser les performances de vos projets basés sur Ollama. Spoiler : oui, il y aura beaucoup plus de Python.

Top comments (3)

Collapse
 
rhjura profile image
rhJura renaudfract

Bonjour,

Afin de simplifier la mise en place de ce système, j'ai fait un ensemble de scriptes pour créer son propre char GPT su une VM paperspace.com avec un GPU A100-80G, avec nom de domaine en https et avec un proxy demandant un login et mot de passe pour sécuriser le tout

le lien : github.com/renaudfractale/Scripte-...

Collapse
 
baptistelecat profile image
Lecat Baptiste

Superbe article, merci beaucoup !

Collapse
 
jtama profile image
Kosmik Onepoint • Edited

Très bon résumé.

Attention aussi dans les limites d'Ollama pas de multimodal, enfin juste des images. Pas de pdf ou d'audio par exemple.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.