OpenRouter

KI-Übersetzung mit OpenRouter und Lingo.dev Compiler

Was ist OpenRouter?

OpenRouter ist eine Plattform, die Zugriff auf eine Vielzahl von KI-Modellen verschiedener Anbieter über eine einheitliche API bietet, sodass Entwickler Anfragen einfach vergleichen, wechseln und weiterleiten können. Die Plattform konzentriert sich auf Flexibilität, Transparenz und gibt Benutzern mehr Kontrolle darüber, welche Modelle sie verwenden und wie diese abgerechnet werden.

API-Schlüssel einrichten

OpenRouter benötigt einen API-Schlüssel zur Authentifizierung von Anfragen vom Lingo.dev Compiler. Wählen Sie die Einrichtungsmethode, die am besten zu Ihrem Workflow passt:

Option 1: Umgebungsvariable (Terminal)

Am besten für schnelle Experimente und Tests ohne Änderung von Dateien geeignet.

Setzen Sie den Schlüssel direkt in Ihrer Terminal-Sitzung:

export OPENROUTER_API_KEY="your-api-key-here"

Dieser Schlüssel ist nur verfügbar, bis Sie Ihr Terminal-Fenster schließen.

Option 2: Projektkonfiguration (.env)

Am besten für projektspezifische Konfigurationen und Team-Umgebungen geeignet, in denen jedes Projekt unterschiedliche Anmeldedaten verwenden kann.

Erstellen Sie eine .env-Datei im Stammverzeichnis Ihres Projekts:

touch .env

Fügen Sie die folgende Zeile zur Datei hinzu:

OPENROUTER_API_KEY="your-api-key-here"

Lingo.dev Compiler prüft Umgebungsdateien in dieser Prioritätsreihenfolge:

  1. .env.development (höchste Priorität)
  2. .env.local
  3. .env (niedrigste Priorität)

Werte in Dateien mit höherer Priorität überschreiben diejenigen in Dateien mit niedrigerer Priorität.

Option 3: Globale Konfiguration (Benutzereinstellungen)

Am besten für einzelne Entwickler geeignet, die denselben API-Schlüssel für alle ihre Projekte verwenden möchten.

Erstellen Sie eine Konfigurationsdatei in Ihrem Home-Verzeichnis:

touch ~/.lingodotdevrc

Fügen Sie den folgenden Inhalt zur Datei hinzu:

[llm]
openrouterApiKey="your-api-key-here"

Diese Konfiguration bleibt über alle Terminal-Sitzungen und Projekte auf Ihrem Gerät bestehen.

Konfigurationspriorität

Wenn mehrere Konfigurationsmethoden verwendet werden, prüft Lingo.dev Compiler API-Schlüssel in dieser Reihenfolge:

  1. Umgebungsvariablen (höchste Priorität)
  2. Projekt .env-Dateien (in ihrer eigenen Prioritätsreihenfolge)
  3. Benutzerkonfigurationsdatei ~/.lingodotdevrc (niedrigste Priorität)

Der erste gültige API-Schlüssel, der gefunden wird, wird verwendet.

Verwendung von OpenRouter

Um OpenRouter zu aktivieren, setzen Sie die models-Eigenschaft in den Compiler-Optionen:

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: {
    "*:*": "openrouter:anthropic/claude-3.5-sonnet",
  },
});

export default withLingo(viteConfig);

Die Eigenschaft akzeptiert ein Objekt, bei dem:

  • die Schlüssel Paare von Quell- und Zielsprachen sind, wobei * für beliebige Sprachen steht
  • die Werte Modell-Identifikatoren sind (z.B. openrouter:anthropic/claude-3.5-sonnet)

Sie können OpenRouter für folgende Übersetzungen verwenden:

  • zwischen allen Sprachen
  • von einer bestimmten Quellsprache
  • zu einer bestimmten Zielsprache
  • zwischen einer bestimmten Quell- und Zielsprache

Übersetzung aller Sprachen

Verwenden Sie das Wildcard-Muster *:*, um dasselbe OpenRouter-Modell für alle Übersetzungspaare anzuwenden:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Claude 3.5 Sonnet für alle Übersetzungspaare verwenden
    "*:*": "openrouter:anthropic/claude-3.5-sonnet",
  },
});

Übersetzung von einer bestimmten Quellsprache

Verwenden Sie eine spezifische Quellsprache mit Wildcard-Ziel, um ein Modell für alle Übersetzungen aus dieser Quelle anzuwenden:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Claude 3.5 Sonnet für alle Übersetzungen aus dem Englischen verwenden
    "en:*": "openrouter:anthropic/claude-3.5-sonnet",
    // GPT-4 Turbo für Übersetzungen vom Spanischen in jede Sprache verwenden
    "es:*": "openrouter:openai/gpt-4-turbo",
    // Fallback für andere Quellsprachen
    "*:*": "openrouter:meta-llama/llama-3.1-70b",
  },
});

Übersetzung in eine bestimmte Zielsprache

Verwenden Sie eine Wildcard-Quelle mit einer spezifischen Zielsprache, um ein Modell für alle Übersetzungen in diese Zielsprache anzuwenden:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Spezialisiertes Modell für Übersetzungen ins Japanische verwenden
    "*:ja": "openrouter:anthropic/claude-3-opus",
    // Gemini Pro für Übersetzungen ins Chinesische verwenden
    "*:zh": "openrouter:google/gemini-pro-1.5",
    // Mistral Large für Übersetzungen ins Französische verwenden
    "*:fr": "openrouter:mistralai/mistral-large",
    // Standard für andere Zielsprachen
    "*:*": "openrouter:openai/gpt-3.5-turbo",
  },
});

Übersetzung zwischen spezifischen Sprachen

Definieren Sie exakte Quell-Ziel-Paare für eine präzise Kontrolle darüber, welches Modell bestimmte Sprachkombinationen verarbeitet:

const withLingo = lingoCompiler.vite({
  sourceRoot: "src",
  lingoDir: "lingo",
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
  models: {
    // Spezifische Paare mit optimalen Modellen
    "en:es": "openrouter:openai/gpt-3.5-turbo", // Englisch nach Spanisch
    "en:ja": "openrouter:anthropic/claude-3.5-sonnet", // Englisch nach Japanisch
    "en:zh": "openrouter:google/gemini-pro-1.5", // Englisch nach Chinesisch
    "en:fr": "openrouter:mistralai/mistral-large", // Englisch nach Französisch
    "es:en": "openrouter:meta-llama/llama-3.1-8b", // Spanisch nach Englisch
    "fr:en": "openrouter:cohere/command-r-plus", // Französisch nach Englisch
    "de:en": "openrouter:perplexity/llama-3.1-sonar-large", // Deutsch nach Englisch

    // Fallback für nicht spezifizierte Paare
    "*:*": "openrouter:openai/gpt-3.5-turbo",
  },
});