Ollama
Traduction IA locale avec Ollama et Lingo.dev Compiler
Qu'est-ce qu'Ollama ?
Ollama vous permet d'exécuter des modèles de langage de grande taille localement sur votre machine. Il offre une confidentialité totale, aucun coût d'API et fonctionne hors ligne. Vous pouvez choisir parmi des modèles comme Llama, Mistral, Gemma et Qwen. Ollama fonctionne avec Lingo.dev Compiler, vous permettant de traduire le contenu de votre application en utilisant des modèles locaux.
Mise en route
Étape 1. Installer Ollama
macOS
brew install ollama
Linux
curl -fsSL https://ollama.com/install.sh | sh
Windows
- Accédez à ollama.com/download.
- Téléchargez et exécutez l'installateur.
Étape 2. Démarrer Ollama
Si Ollama n'est pas déjà en cours d'exécution, démarrez-le avec la commande suivante :
ollama serve
Étape 2. Télécharger un modèle
ollama pull llama3.1
Utilisation d'Ollama
Pour activer Ollama, définissez la propriété models
dans les options du compilateur :
import react from "@vitejs/plugin-react";
import lingoCompiler from "lingo.dev/compiler";
import { type UserConfig } from "vite";
// https://vite.dev/config/
const viteConfig: UserConfig = {
plugins: [react()],
};
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja"],
rsc: false,
useDirective: false,
debug: false,
models: {
"*:*": "ollama:llama3.1",
},
});
export default withLingo(viteConfig);
La propriété accepte un objet où :
- les clés sont des paires de locales source et cible, avec
*
représentant n'importe quelle locale - les valeurs sont des identifiants de modèle (par exemple,
ollama:llama3.1
)
Vous pouvez utiliser Ollama pour traduire :
- entre toutes les locales
- depuis une locale source spécifique
- vers une locale cible spécifique
- entre une locale source et une locale cible spécifiques
Traduction de toutes les locales
Utilisez le modèle générique *:*
pour appliquer le même modèle Ollama à toutes les paires de traduction :
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Utiliser Llama 3.1 pour toutes les paires de traduction
"*:*": "ollama:llama3.1",
},
});
Traduction à partir d'une locale source spécifique
Utilisez une locale source spécifique avec une cible générique pour appliquer un modèle à toutes les traductions provenant de cette source :
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Utiliser Llama 3.1 70B pour toutes les traductions depuis l'anglais
"en:*": "ollama:llama3.1:70b",
// Utiliser Mixtral pour les traductions de l'espagnol vers n'importe quelle langue
"es:*": "ollama:mixtral",
// Solution de repli pour les autres langues sources
"*:*": "ollama:gemma2",
},
});
Traduction vers une locale cible spécifique
Utilisez une source générique avec une locale cible spécifique pour appliquer un modèle à toutes les traductions vers cette cible :
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Utiliser un modèle spécialisé pour les traductions vers le japonais
"*:ja": "ollama:qwen2",
// Utiliser Mixtral pour les traductions vers le chinois
"*:zh": "ollama:mixtral",
// Utiliser Mistral pour les traductions vers l'allemand
"*:de": "ollama:mistral",
// Modèle par défaut pour les autres langues cibles
"*:*": "ollama:llama3.1",
},
});
Traduction entre locales spécifiques
Définissez des paires source-cible exactes pour un contrôle précis sur le modèle qui gère des combinaisons linguistiques spécifiques :
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Paires spécifiques avec modèles optimaux
"en:es": "ollama:gemma2", // Anglais vers espagnol
"en:ja": "ollama:qwen2", // Anglais vers japonais
"en:zh": "ollama:qwen2", // Anglais vers chinois
"es:en": "ollama:llama3.1", // Espagnol vers anglais
"fr:en": "ollama:mistral", // Français vers anglais
"de:en": "ollama:phi3", // Allemand vers anglais
// Solution de repli pour les paires non spécifiées
"*:*": "ollama:llama3.1",
},
});