Accéder au contenu principal

Bibliothèque Python Ollama : bien démarrer avec les LLM en local

Maîtrisez le SDK Python d’Ollama pour développer des LLM en local. Apprenez à générer du texte, gérer des conversations multi‑tours, utiliser des modèles de vision et créer des applications d’IA en toute sécurité.
Actualisé 17 avr. 2026  · 7 min lire

Les API LLM dans le cloud sont puissantes, mais présentent des contreparties : facturation à l’usage, limites de taux, et incertitudes sur le lieu de traitement de vos données. Pour des développeurs qui manipulent des données sensibles ou qui expérimentent beaucoup, ces contraintes deviennent vite un frein.

C’est là que les approches "local‑first" se distinguent. La bibliothèque Python Ollama lève ces frictions en vous permettant d’exécuter des grands modèles de langage en local, tout en interagissant avec eux via un code Python clair et natif. Vous gardez ainsi la main sur les performances, les coûts et la confidentialité.

Dans cet article, je vous guide à travers l’API complète de la bibliothèque Python Ollama, de la génération de texte simple avec generate() jusqu’à l’appel d’outils et aux modèles de vision.

Je vous recommande également de consulter nos derniers tutoriels Ollama :

Prérequis pour exécuter Ollama avec Python

Avant de commencer, assurez‑vous d’avoir la configuration suivante :

  • Python 3.8 ou supérieur

  • Ollama téléchargé depuis son site, installé et en cours d’exécution (ollama serve)

  • Au moins un modèle récupéré (par ex. ollama pull llama3.2)

site web ollama

Ces prérequis sont essentiels, car le SDK Python n’est qu’un client ; l’inférence se fait dans le runtime Ollama. Si le runtime est indisponible ou si aucun modèle adapté n’est présent, les appels échoueront.

Vous pouvez aussi envisager d’utiliser Docker avec Ollama pour garantir la cohérence des versions.

Qu’est‑ce que la bibliothèque Python Ollama ?

bibliothèque python ollama

La bibliothèque Python Ollama est le SDK officiel qui encapsule l’API REST d’Ollama dans une interface Pythonique et simple. Autrement dit, elle transforme des requêtes HTTP bas niveau et des charges utiles JSON en fonctions Python de haut niveau pour vous permettre de vous concentrer sur l’intention plutôt que sur le transport.

À mesure que votre application grandit, cette abstraction supprime la répétition dans la construction des requêtes, standardise le traitement des réponses et centralise la gestion des erreurs.

À titre de comparaison, une requête brute pourrait ressembler à ceci :

import requests

response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": "llama3.2",
        "prompt": "Explain recursion"
    }
)

Cela fonctionne, mais devient vite verbeux et source d’erreurs. Avec le SDK, la même tâche devient :

import ollama

response = ollama.generate(
    model='llama3.2',
    prompt='Explain recursion'
)

Comment la bibliothèque communique avec le serveur Ollama

Sous le capot, chaque appel du SDK devient une requête HTTP vers le serveur Ollama à l’adresse http://localhost:11434. Votre script Python agit comme un client, tandis que le runtime Ollama agit comme un serveur qui héberge et exécute les modèles.

Cette séparation est importante car elle permet d’exécuter le modèle comme un service dédié, d’optimiser la gestion des ressources (CPU/GPU) et d’autoriser plusieurs applications à partager la même instance de modèle.

Si vous devez vous connecter à une autre machine, vous pouvez configurer un client personnalisé :

from ollama import Client

client = Client(host='http://remote-server:11434')
response = client.generate(model='llama3.2', prompt='Hello')

Installer et configurer la bibliothèque

L’installation est simple et nécessite peu de dépendances :

pip install ollama

Après l’installation, il est recommandé de vérifier la connectivité en listant les modèles disponibles. 

Cela vous permet de confirmer que votre environnement Python, le SDK et le runtime Ollama sont bien connectés.

Pour cela, exécutez :

import ollama

print(ollama.list())

Générer du texte avec generate()

La fonction generate() est conçue pour des tâches sans état : chaque requête est traitée de manière indépendante, sans mémoire des interactions précédentes. C’est idéal pour des tâches comme la synthèse, la réécriture ou la génération de code.

En l’absence de contexte conservé, la qualité de la sortie dépend entièrement de la clarté du prompt.

Génération de texte basique

L’exemple suivant illustre le flux le plus simple : envoyer un prompt, recevoir une réponse et extraire le texte généré.

import ollama

response = ollama.generate(
    model='llama3.2',
    prompt='Write a Python docstring for a function that calculates factorial'
)

print(response['response'])

La réponse inclut également des métadonnées comme le temps d’exécution et les comptes de tokens, utiles pour optimiser les performances.

Personnaliser la sortie avec des paramètres

Le comportement de génération peut être ajusté via des paramètres d’échantillonnage, qui contrôlent la sélection des tokens par le modèle.

Des valeurs de température plus faibles produisent des sorties plus déterministes, tandis que des valeurs élevées introduisent davantage de variété. Vous pouvez utiliser des paramètres comme top_p et num_predict pour affiner la diversité et la longueur des sorties.

Voici quelques paramètres importants :

Paramètre

Ce qu’il contrôle

Effet sur la sortie

Quand l’utiliser

temperature

Aléatoire dans la sélection des tokens

Bas = plus prévisible, haut = plus créatif/aléatoire

Basse (0,1–0,3) pour les tâches factuelles, élevée (0,7–1,0) pour l’écriture créative

top_p

Nucleus sampling (seuil de masse de probabilité)

Le modèle ne considère que les tokens dont la probabilité cumulée est ≤ p

Pour limiter les sorties farfelues tout en gardant de la diversité

top_k

Limite le nombre de tokens candidats

Le modèle pioche uniquement parmi les k tokens les plus probables

Utile pour un contrôle plus strict des sorties structurées

num_predict

Nombre maximal de tokens à générer

Contrôle la longueur de la réponse

Augmentez pour de longues explications, réduisez pour des réponses concises

Voici un exemple utilisant les paramètres top_p, temperature et num_predict :

response = ollama.generate(
    model='llama3.2',
    prompt='Explain machine learning in one paragraph',
    options={
        'temperature': 0.2,
        'top_p': 0.9,
        'num_predict': 100
    }
)

Construire des conversations avec chat()

Contrairement à generate(), l’API chat() prend en charge des interactions avec état en travaillant sur une séquence de messages. Le modèle peut ainsi conserver le contexte sur plusieurs tours.

Chaque message inclut un rôle, tel que user, assistant ou system, qui structure la conversation.

Requêtes de chat à un seul tour

Même une interaction à un seul tour utilise le format message, ce qui prépare le terrain pour des conversations plus complexes.

response = ollama.chat(
    model='llama3.2',
    messages=[
        {'role': 'user', 'content': 'Explain Python decorators'}
    ]
)

print(response['message']['content'])

Conserver le contexte multi‑tours

Pour conserver le contexte, vous stockez et renvoyez explicitement l’historique complet de la conversation à chaque requête. Vous contrôlez ainsi précisément ce que le modèle "se souvient".

messages = [
    {'role': 'user', 'content': 'What is recursion?'}
]

response = ollama.chat(model='llama3.2', messages=messages)
messages.append(response['message'])

messages.append({'role': 'user', 'content': 'Give an example in Python'})
response = ollama.chat(model='llama3.2', messages=messages)

Façonner le comportement avec des prompts système

Un prompt système définit en amont le comportement du modèle : ton, contraintes, rôle, etc.

messages = [
    {'role': 'system', 'content': 'You are a strict Python code reviewer.'},
    {'role': 'user', 'content': 'Review this code: def add(a,b): return a+b'}
]

Streaming et prise en charge d’Async dans la bibliothèque Python Ollama

Pour les applications interactives, la réactivité compte autant que la justesse. Ollama prend en charge le streaming et l’exécution asynchrone pour améliorer les performances et l’expérience utilisateur.

Streaming de réponses en temps réel

Le streaming permet de traiter la sortie au fil de l’eau, sans attendre la réponse complète.

for chunk in ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'Write a story'}],
    stream=True
):
    print(chunk['message']['content'], end='', flush=True)

Utiliser AsyncClient pour les applications asynchrones

L’exécution asynchrone permet à votre application de traiter plusieurs requêtes en parallèle sans blocage. Vous devrez utiliser la bibliothèque asyncio de Python pour l’implémenter.

Voici un exemple :

import asyncio
from ollama import AsyncClient

async def main():
    client = AsyncClient()
    async for chunk in await client.chat(
        model='llama3.2',
        messages=[{'role': 'user', 'content': 'Explain async programming'}],
        stream=True
    ):
        print(chunk['message']['content'], end='')

asyncio.run(main())

Gérer les modèles Ollama depuis Python

Le SDK Ollama propose aussi des outils pour gérer les modèles par programme, très utiles dans des environnements automatisés.

Lister et inspecter les modèles locaux

Vous pouvez récupérer la liste des modèles disponibles et inspecter leurs propriétés, comme la taille et la configuration.

models = ollama.list()
print(models)

info = ollama.show('llama3.2')
print(info)

Télécharger et supprimer des modèles par programme

Les modèles peuvent être téléchargés ou supprimés directement depuis Python, ce qui facilite la gestion dynamique des dépendances.

ollama.pull('llama3.2')
ollama.delete('llama3.2')

Générer et utiliser des embeddings avec la bibliothèque Python Ollama

Les embeddings représentent le texte sous forme de vecteurs numériques capturant la sémantique. Ils permettent de comparer des textes selon leur similarité plutôt que leur formulation exacte.

Créer des embeddings de texte

L’exemple suivant convertit un texte en représentation vectorielle, exploitable pour la recherche ou le clustering.

response = ollama.embed(
    model='nomic-embed-text',
    input='Ollama is a local LLM runtime'
)

embedding = response['embeddings'][0]

Construire une recherche par similarité basique

Une fois les embeddings générés, la similarité peut être mesurée via la similarité cosinus, qui compare l’angle entre les vecteurs.

Voici un simple exemple de fonction de recherche :

import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Appel d’outils et sorties structurées avec la bibliothèque Python Ollama

Pour des applications avancées, les modèles doivent souvent interagir avec des fonctions externes ou renvoyer des données structurées.

Mettre en œuvre l’appel d’outils avec des fonctions Python

L’appel d’outils permet au modèle d’invoquer des fonctions Python prédéfinies selon l’intention de l’utilisateur.

Créons une fonction qui utilise ces outils :

def get_weather(city: str) -> str:
    """Get current weather for a city"""
    return f"Weather in {city} is sunny"
response = ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'What is the weather in Paris?'}],
    tools=[get_weather]
)

Obtenir des réponses JSON structurées

Les sorties structurées garantissent des réponses cohérentes et lisibles par machine, comme du JSON.

response = ollama.chat(
    model='llama3.2',
    messages=[{'role': 'user', 'content': 'Review: Great product, 5 stars!'}],
    format='json'
)

Avancé : modèles de vision et Ollama Cloud en Python

Ollama prend en charge des modèles multimodaux et l’inférence dans le cloud pour des cas d’usage plus avancés.

Envoyer des images à des modèles de vision

Les modèles de vision traitent à la fois du texte et des images, pour des tâches comme la description d’image et l’analyse visuelle.

response = ollama.chat(
    model='llama3.2-vision',
    messages=[{
        'role': 'user',
        'content': 'Describe this image',
        'images': ['image.jpg']
    }]
)

Exécuter des modèles cloud depuis Python

Pour des modèles trop volumineux pour tourner en local, Ollama Cloud propose une inférence hébergée. Il vous faut vous connecter à Ollama Cloud.

ollama signin

Après connexion, vous pouvez dialoguer avec des modèles hébergés dans le cloud ainsi :

from ollama import Client
import os

ollama.chat(model='deepseek-v3.1:671b-cloud', messages=[...])

client = Client(
    host='https://ollama.com',
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

Gestion des erreurs : les écueils les plus fréquents avec Ollama Python

Dans des applications réelles, gérer explicitement les erreurs évite les défaillances silencieuses et améliore la fiabilité.

Gérer les exceptions ResponseError

Le SDK Ollama lève des exceptions structurées pour les erreurs côté serveur, vous permettant d’inspecter la cause.

import ollama

try:
    ollama.generate(model='unknown', prompt='test')
except ollama.ResponseError as e:
    print(e.status_code, e.error)

Déboguer les problèmes de connexion et de modèles

Les problèmes courants incluent un serveur à l’arrêt, des modèles manquants, une mémoire insuffisante ou un dépassement de la limite de contexte.

  • Serveur non lancé : démarrez avec ollama serve

  • Modèle introuvable : exécutez ollama pull

  • Mémoire insuffisante : utilisez des modèles plus petits ou la quantification

  • Problèmes de contexte : ajustez num_ctx

num_ctx contrôle le nombre maximal de tokens que le modèle peut « voir » en une fois, y compris :

  • votre prompt
  • les instructions système
  • l’historique de conversation
  • les documents récupérés (RAG)
  • et les tokens générés par le modèle

Bien gérer ce paramètre évite que le LLM tronque du contenu antérieur (souvent au début) ou perde silencieusement des consignes ou données importantes.

Conclusion

La bibliothèque Python Ollama offre une interface complète pour travailler avec des LLM locaux et cloud, de la génération de texte aux fonctionnalités avancées comme les embeddings, l’appel d’outils et les entrées multimodales. Les LLM deviennent un service local contre lequel vous pouvez écrire des scripts, tester et mettre à l’échelle comme n’importe quel autre composant de votre stack.

D’après mon expérience avec Ollama, c’est une bonne option quand on veut éviter les LLM cloud. Par exemple, je peux utiliser plus librement des modèles open source. Si vous cherchez aussi plus d’options pour passer d’un modèle à l’autre, Ollama est une excellente porte d’entrée.

Pour aller plus loin, je vous recommande notre cours Developing LLM Applications with LangChain ou la certification Associate AI Engineer for Developers.

FAQ sur la bibliothèque Python Ollama

Ai‑je besoin d’un GPU puissant pour utiliser Ollama avec Python ?

Pas nécessairement. Ollama peut fonctionner sur CPU, mais les performances seront inférieures à celles d’un GPU. Beaucoup de modèles plus petits ou quantifiés sont conçus pour tourner efficacement sur des ordinateurs portables standards. Si vous débutez ou expérimentez, un CPU suffit généralement. Pour des charges plus lourdes ou des modèles plus grands, un GPU améliore nettement la vitesse et la réactivité.

Quelle est la différence entre l’exécution locale des modèles et l’utilisation d’Ollama Cloud ?

Exécuter les modèles en local signifie que tout se passe sur votre machine, ce qui vous donne un contrôle total sur la confidentialité des données et supprime les coûts d’usage. Ollama Cloud, à l’inverse, permet d’accéder à des modèles bien plus volumineux que votre matériel local ne pourrait pas supporter.

Quand dois‑je utiliser generate() plutôt que chat() ?

Utilisez generate() pour des tâches ponctuelles simples, comme résumer un texte ou générer du code. C’est direct et ne nécessite pas de gérer l’historique de conversation. Utilisez chat() lorsque vous avez besoin de conserver le contexte sur plusieurs interactions, par exemple pour un chatbot ou un assistant.

Qu’est‑ce que les embeddings et à quoi servent‑ils ?

Les embeddings convertissent le texte en vecteurs numériques qui en représentent le sens. Cela permet de comparer différents textes selon leur similarité plutôt que leur formulation exacte. Ils sont couramment utilisés dans les systèmes de recherche, les moteurs de recommandation et la retrieval‑augmented generation (RAG).

Comment gérer les erreurs avec la bibliothèque Python Ollama ?

La plupart des erreurs proviennent de points simples, comme le serveur Ollama qui n’est pas lancé ou un modèle indisponible en local. La bibliothèque lève des exceptions structurées comme ResponseError, que vous pouvez intercepter avec des blocs try/except.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Je m'appelle Austin, je suis blogueur et rédacteur technique et j'ai des années d'expérience en tant que data scientist et data analyst dans le domaine de la santé. J'ai commencé mon parcours technologique avec une formation en biologie et j'aide maintenant les autres à faire la même transition grâce à mon blog technologique. Ma passion pour la technologie m'a conduit à écrire pour des dizaines d'entreprises SaaS, inspirant les autres et partageant mes expériences.

Sujets

Cours d’ingénierie de l’IA

Cursus

Associate AI Engineer pour développeurs

26 h
Apprenez à intégrer l'IA dans des applications logicielles en utilisant des API et des bibliothèques open source. Commencez dès aujourd'hui votre parcours pour devenir AI Engineer !
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow