Groq

Traducción con IA mediante Groq y Lingo.dev Compiler

¿Qué es Groq?

Groq es una empresa que diseña hardware y software de IA de alto rendimiento optimizados para inferencia de latencia ultra baja. Sus soluciones buscan acelerar cargas de trabajo de IA en áreas como modelos de lenguaje extensos y análisis en tiempo real mediante el aprovechamiento de su arquitectura personalizada de Procesador de Streaming de Tensores.

Configuración de la clave API

Groq requiere una clave API para autenticar 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 archivos.

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

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

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

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

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

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

touch .env

Añade la siguiente línea al archivo:

GROQ_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 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]
groqApiKey="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 Groq

Para habilitar Groq, 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: {
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

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 modelos (p. ej., groq:llama-3.1-8b-instant)

Puedes usar Groq 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 Groq para todos los pares de traducción:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Usa Llama 3.1 8B para todos los pares de traducción
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

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 para todas las traducciones desde ese origen:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Usa Llama 3.1 70B para todas las traducciones desde inglés
    "en:*": "groq:llama-3.1-70b-versatile",
    // Usa Mixtral para traducciones desde español a cualquier idioma
    "es:*": "groq:mixtral-8x7b-32768",
    // Fallback para otros idiomas de origen
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

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": "groq:llama-3.1-70b-versatile",
    // Usar Mixtral para traducciones al chino
    "*:zh": "groq:mixtral-8x7b-32768",
    // Usar Gemma 2 para traducciones al alemán
    "*:de": "groq:gemma2-9b-it",
    // Predeterminado para otros idiomas de destino
    "*:*": "groq:llama-3.1-8b-instant",
  },
});

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": "groq:llama-3.1-70b-versatile", // Inglés a español
    "en:ja": "groq:llama-3.1-70b-versatile", // Inglés a japonés
    "en:zh": "groq:mixtral-8x7b-32768", // Inglés a chino
    "es:en": "groq:llama-3.1-8b-instant", // Español a inglés
    "fr:en": "groq:gemma2-9b-it", // Francés a inglés
    "de:en": "groq:gemma2-9b-it", // Alemán a inglés

    // Respaldo para pares no especificados
    "*:*": "groq:llama-3.1-8b-instant",
  },
});