Ollama
Traducción de IA local con Ollama y Lingo.dev Compiler
¿Qué es Ollama?
Ollama te permite ejecutar modelos de lenguaje grandes localmente en tu máquina. Proporciona privacidad completa, cero costos de API y funciona sin conexión. Puedes elegir entre modelos como Llama, Mistral, Gemma y Qwen. Ollama funciona con Lingo.dev Compiler, permitiéndote traducir el contenido de tu aplicación utilizando modelos locales.
Primeros pasos
Paso 1. Instalar Ollama
macOS
brew install ollama
Linux
curl -fsSL https://ollama.com/install.sh | sh
Windows
- Navega a ollama.com/download.
- Descarga y ejecuta el instalador.
Paso 2. Iniciar Ollama
Si Ollama no está ejecutándose, inícialo con el siguiente comando:
ollama serve
Paso 2. Descargar un modelo
ollama pull llama3.1
Uso de Ollama
Para habilitar Ollama, establece la propiedad models
en las opciones del compilador:
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 propiedad acepta un objeto donde:
- las claves son pares de locales de origen y destino, con
*
representando cualquier locale - los valores son identificadores de modelo (p. ej.,
ollama:llama3.1
)
Puedes usar Ollama para traducir:
- entre todos los locales
- desde un locale de origen específico
- a un locale de destino específico
- entre un locale de origen y destino específicos
Traducción de todos los locales
Utiliza el patrón comodín *:*
para aplicar el mismo modelo de Ollama a todos los pares de traducción:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Usar Llama 3.1 para todos los pares de traducción
"*:*": "ollama:llama3.1",
},
});
Traducción desde un idioma de origen específico
Utiliza un idioma de origen específico con comodín de destino para aplicar un modelo a todas las traducciones desde ese origen:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Usar Llama 3.1 70B para todas las traducciones desde inglés
"en:*": "ollama:llama3.1:70b",
// Usar Mixtral para traducciones desde español a cualquier idioma
"es:*": "ollama:mixtral",
// Fallback para otros idiomas de origen
"*:*": "ollama:gemma2",
},
});
Traducción a un idioma de destino específico
Utiliza un origen comodín con un idioma de destino específico para aplicar un modelo a todas las traducciones hacia ese destino:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Usar modelo especializado para traducciones al japonés
"*:ja": "ollama:qwen2",
// Usar Mixtral para traducciones al chino
"*:zh": "ollama:mixtral",
// Usar Mistral para traducciones al alemán
"*:de": "ollama:mistral",
// Predeterminado para otros idiomas de destino
"*:*": "ollama:llama3.1",
},
});
Traducción entre idiomas específicos
Define pares exactos de origen-destino para un control preciso sobre qué modelo maneja combinaciones específicas de idiomas:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Pares específicos con modelos óptimos
"en:es": "ollama:gemma2", // Inglés a español
"en:ja": "ollama:qwen2", // Inglés a japonés
"en:zh": "ollama:qwen2", // Inglés a chino
"es:en": "ollama:llama3.1", // Español a inglés
"fr:en": "ollama:mistral", // Francés a inglés
"de:en": "ollama:phi3", // Alemán a inglés
// Fallback para pares no especificados
"*:*": "ollama:llama3.1",
},
});