OpenRouter
AI-перевод с OpenRouter и Lingo.dev Compiler
Что такое OpenRouter?
OpenRouter — это платформа, предоставляющая доступ к широкому спектру моделей ИИ от различных поставщиков через единый API. Она позволяет разработчикам легко сравнивать, переключаться и маршрутизировать запросы. Основное внимание уделяется гибкости, прозрачности и предоставлению пользователям большего контроля над выбором моделей и способом их оплаты.
Настройка API-ключа
Для работы с Lingo.dev Compiler OpenRouter требует API-ключ для аутентификации запросов. Выберите метод настройки, который лучше всего подходит для вашего рабочего процесса:
Вариант 1: Переменная окружения (терминал)
Лучше всего подходит для быстрых экспериментов и тестирования без изменения файлов.
Установите ключ напрямую в вашей сессии терминала:
export OPENROUTER_API_KEY="your-api-key-here"
Этот ключ будет доступен только до закрытия окна терминала.
Вариант 2: Конфигурация проекта (.env)
Лучше всего подходит для конфигурации, специфичной для проекта, и командной работы, где каждый проект может использовать разные учетные данные.
Создайте файл .env
в корневой папке вашего проекта:
touch .env
Добавьте следующую строку в файл:
OPENROUTER_API_KEY="your-api-key-here"
Lingo.dev Compiler проверяет файлы окружения в следующем порядке приоритета:
.env.development
(наивысший приоритет).env.local
.env
(наименьший приоритет)
Значения в файлах с более высоким приоритетом переопределяют значения в файлах с более низким приоритетом.
Вариант 3: Глобальная конфигурация (настройки пользователя)
Лучше всего подходит для индивидуальных разработчиков, которые хотят использовать один и тот же API-ключ во всех своих проектах.
Создайте файл конфигурации в домашней директории:
touch ~/.lingodotdevrc
Добавьте следующий контент в файл:
[llm]
openrouterApiKey="your-api-key-here"
Эта конфигурация сохраняется для всех сессий терминала и проектов на вашем компьютере.
Приоритет конфигурации
Если используются несколько методов конфигурации, Lingo.dev Compiler проверяет API-ключи в следующем порядке:
- Переменные окружения (наивысший приоритет)
- Файлы .env проекта (в их собственном порядке приоритета)
- Файл конфигурации пользователя
~/.lingodotdevrc
(наименьший приоритет)
Используется первый найденный действительный API-ключ.
Использование OpenRouter
Чтобы включить OpenRouter, установите свойство models
в параметрах компилятора:
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);
Свойство принимает объект, где:
- ключи — это пары исходного и целевого языков, где
*
представляет любой язык - значения — это идентификаторы моделей (например,
openrouter:anthropic/claude-3.5-sonnet
)
Вы можете использовать OpenRouter для перевода:
- между всеми языками
- с конкретного исходного языка
- на конкретный целевой язык
- между конкретным исходным и целевым языками
Перевод всех языков
Используйте шаблон подстановки *:*
, чтобы применить одну и ту же модель OpenRouter для всех пар перевода:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать Claude 3.5 Sonnet для всех пар перевода
"*:*": "openrouter:anthropic/claude-3.5-sonnet",
},
});
Перевод с конкретного исходного языка
Используйте конкретный исходный язык с подстановкой для целевого, чтобы применить модель для всех переводов с этого языка:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать Claude 3.5 Sonnet для всех переводов с английского
"en:*": "openrouter:anthropic/claude-3.5-sonnet",
// Использовать GPT-4 Turbo для переводов с испанского на любой язык
"es:*": "openrouter:openai/gpt-4-turbo",
// Резервная модель для других исходных языков
"*:*": "openrouter:meta-llama/llama-3.1-70b",
},
});
Перевод на конкретный целевой язык
Используйте универсальный источник с конкретным целевым языком, чтобы применить модель для всех переводов на этот язык:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать специализированную модель для переводов на японский
"*:ja": "openrouter:anthropic/claude-3-opus",
// Использовать Gemini Pro для переводов на китайский
"*:zh": "openrouter:google/gemini-pro-1.5",
// Использовать Mistral Large для переводов на французский
"*:fr": "openrouter:mistralai/mistral-large",
// По умолчанию для других целевых языков
"*:*": "openrouter:openai/gpt-3.5-turbo",
},
});
Перевод между конкретными языками
Определите точные пары источник-цель для детального контроля над тем, какая модель обрабатывает определённые языковые комбинации:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Конкретные пары с оптимальными моделями
"en:es": "openrouter:openai/gpt-3.5-turbo", // с английского на испанский
"en:ja": "openrouter:anthropic/claude-3.5-sonnet", // с английского на японский
"en:zh": "openrouter:google/gemini-pro-1.5", // с английского на китайский
"en:fr": "openrouter:mistralai/mistral-large", // с английского на французский
"es:en": "openrouter:meta-llama/llama-3.1-8b", // с испанского на английский
"fr:en": "openrouter:cohere/command-r-plus", // с французского на английский
"de:en": "openrouter:perplexity/llama-3.1-sonar-large", // с немецкого на английский
// Резерв для неуказанных пар
"*:*": "openrouter:openai/gpt-3.5-turbo",
},
});