Mistral AI

Traducción con IA usando Mistral y Lingo.dev Compiler

¿Qué es Mistral AI?

Mistral AI es una empresa francesa de inteligencia artificial especializada en el desarrollo de modelos de lenguaje de gran tamaño de pesos abiertos, diseñados para ser eficientes, personalizables y accesibles para una amplia gama de aplicaciones. Se centran en la transparencia y el rendimiento, lanzando modelos que pueden ejecutarse eficientemente en hardware más pequeño en comparación con muchos competidores.

Configuración de la clave API

Mistral AI requiere una clave API para autenticar las solicitudes desde Lingo.dev Compiler. Elige el método de configuración que mejor se adapte a tu flujo de trabajo:

Opción 1: Variable de entorno (Terminal)

Ideal para experimentos rápidos y pruebas sin modificar ningún archivo.

Establece la clave directamente en tu sesión de terminal:

export MISTRAL_API_KEY="tu-clave-api-aquí"

Esta clave solo estará disponible hasta que cierres la ventana de tu terminal.

Opción 2: Configuración del proyecto (.env)

Ideal para configuración específica de proyectos y entornos de equipo donde cada proyecto puede utilizar diferentes credenciales.

Crea un archivo .env en la raíz de tu proyecto:

touch .env

Añade la siguiente línea al archivo:

MISTRAL_API_KEY="tu-clave-api-aquí"

Lingo.dev Compiler verifica los archivos de entorno en este orden de prioridad:

  1. .env.development (prioridad más alta)
  2. .env.local
  3. .env (prioridad más baja)

Los valores en archivos de mayor prioridad sobrescriben a los de archivos de menor prioridad.

Opción 3: Configuración global (Ajustes de usuario)

Ideal para desarrolladores individuales que quieren usar la misma clave API en todos sus proyectos.

Crea un archivo de configuración en tu directorio principal:

touch ~/.lingodotdevrc

Añade el siguiente contenido al archivo:

[llm]
mistralApiKey="tu-clave-api-aquí"

Esta configuración persiste a través de todas las sesiones de terminal y proyectos en tu máquina.

Prioridad de configuración

Cuando se utilizan múltiples métodos de configuración, Lingo.dev Compiler busca las claves API en este orden:

  1. Variables de entorno (prioridad más alta)
  2. Archivos .env del proyecto (en su propio orden de prioridad)
  3. Archivo de configuración de usuario ~/.lingodotdevrc (prioridad más baja)

Se utiliza la primera clave API válida que se encuentre.

Uso de Mistral AI

Para habilitar Mistral AI, 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: {
    "*:*": "mistral:mistral-large-latest",
  },
});

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., mistral:mistral-large-latest)

Puedes usar Mistral AI para traducir:

  • entre todos los locales
  • desde un locale de origen específico
  • hacia 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 Mistral 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 Mistral Large para todos los pares de traducción
    "*:*": "mistral:mistral-large-latest",
  },
});

Traducción desde un locale de origen específico

Utiliza un locale de origen específico con un 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 Mistral Large para todas las traducciones desde inglés
    "en:*": "mistral:mistral-large-latest",
    // Usar Mixtral para traducciones desde español a cualquier idioma
    "es:*": "mistral:mixtral-8x7b",
    // Fallback para otros idiomas de origen
    "*:*": "mistral:mistral-small-latest",
  },
});

Traducción a un idioma de destino específico

Utiliza un comodín de origen con un idioma de destino específico para aplicar un modelo a todas las traducciones a 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": "mistral:mistral-large-latest",
    // Usar Mixtral para traducciones al chino
    "*:zh": "mistral:mixtral-8x22b",
    // Usar Mistral Large para traducciones al francés (punto fuerte de Mistral)
    "*:fr": "mistral:mistral-large-latest",
    // Predeterminado para otros idiomas de destino
    "*:*": "mistral:mistral-small-latest",
  },
});

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": "mistral:mistral-small-latest", // Inglés a español
    "en:ja": "mistral:mistral-large-latest", // Inglés a japonés
    "en:zh": "mistral:mixtral-8x22b", // Inglés a chino
    "en:fr": "mistral:mistral-large-latest", // Inglés a francés (excelencia)
    "es:en": "mistral:mistral-nemo", // Español a inglés
    "fr:en": "mistral:mistral-medium-latest", // Francés a inglés
    "de:en": "mistral:codestral", // Alemán a inglés (técnico)

    // Respaldo para pares no especificados
    "*:*": "mistral:mistral-small-latest",
  },
});