Bienvenue dans ce "cookbook" non officiel d'Ollama. Ce guide est conçu pour vous fournir une série de recettes claires et pratiques, allant de l'installation de base aux applications avancées, en utilisant JavaScript pour les exemples de code.
Ollama est disponible pour macOS, Windows et Linux. L'installation est simple et rapide.
curl -fsSL https://ollama.com/install.sh | sh
Une fois Ollama installé, vous pouvez télécharger et exécuter des modèles depuis la ligne de commande.
Pour télécharger un modèle (par exemple, Mistral) :
ollama pull mistral
Pour exécuter le modèle et commencer à converser :
ollama run mistral
Un Modelfile vous permet de définir le comportement d'un modèle.
Modelfile.FROM mistral
ollama create mon-super-modele -f ./Modelfile
Modifiez la personnalité du modèle en ajoutant des instructions dans votre Modelfile.
Pour que le modèle se comporte comme un chat :
FROM llama3
SYSTEM """
Vous êtes une IA avec la personnalité d'un chat. Vous répondez toujours par des "miaous", "prrrr" ou d'autres sons de chat.
"""
Pour modifier la température (qui contrôle la créativité) :
FROM llama3
PARAMETER temperature 0.8
Les embeddings sont cruciaux pour les applications de RAG. Vous pouvez les générer avec un modèle comme nomic-embed-text.
ollama run nomic-embed-text "Je suis une phrase d'exemple."
Ollama expose une API REST compatible avec l'API OpenAI. Voici comment l'utiliser avec JavaScript.
// Nécessite d'installer la bibliothèque ollama-js: npm install ollama
import ollama from 'ollama'
async function chatWithOllama() {
const response = await ollama.chat({
model: 'llama3',
messages: [{ role: 'user', content: 'Quelle est la capitale de la France ?' }],
});
console.log(response.message.content);
}
chatWithOllama();
Les modèles multimodaux, comme LLaVA, peuvent analyser des images.
ollama run llava
>>> [./image.png]
Qu'est-ce que tu vois sur cette image ?
Le RAG (Retrieval-Augmented Generation) permet à votre modèle de consulter une base de connaissances externe. Voici comment le faire avec LlamaIndex en JavaScript.
// Nécessite d'installer les dépendances : npm install llama-index ollama
import {
VectorStoreIndex,
SimpleDirectoryReader,
Ollama
} from "llama-index";
async function runRagPipeline() {
// 1. Charger des documents
const documents = await new SimpleDirectoryReader().loadData({directoryPath: "data"});
// 2. Créer un index vectoriel
const index = await VectorStoreIndex.fromDocuments(documents, { llm: new Ollama({ model: "mistral" }) });
// 3. Créer un moteur de requête et poser une question
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("Qu'est-ce qui est mentionné à propos des recettes dans les documents ?");
console.log(response.response);
}
runRagPipeline();
Pour une interface graphique, Open WebUI est une excellente alternative Ă la ligne de commande.
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart unless-stopped ghcr.io/open-webui/open-webui:main
http://localhost:8080.