Ollama
Локальный перевод ИИ с помощью Ollama и компилятора Lingo.dev
Что такое Ollama?
Ollama позволяет запускать крупные языковые модели локально на вашем устройстве. Это обеспечивает полную конфиденциальность, отсутствие затрат на API и возможность работы в оффлайн-режиме. Вы можете выбирать из моделей, таких как Llama, Mistral, Gemma и Qwen. Ollama работает с Lingo.dev Compiler, что позволяет переводить содержимое вашего приложения с использованием локальных моделей.
Начало работы
Шаг 1. Установите Ollama
macOS
brew install ollama
Linux
curl -fsSL https://ollama.com/install.sh | sh
Windows
- Перейдите на ollama.com/download.
- Скачайте и запустите установщик.
Шаг 2. Запустите Ollama
Если Ollama еще не запущен, запустите его с помощью следующей команды:
ollama serve
Шаг 3. Загрузите модель
ollama pull llama3.1
Использование Ollama
Чтобы включить Ollama, укажите свойство 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: {
"*:*": "ollama:llama3.1",
},
});
export default withLingo(viteConfig);
Свойство принимает объект, где:
- ключи — это пары исходного и целевого языков, где
*
обозначает любой язык - значения — это идентификаторы моделей (например,
ollama:llama3.1
)
Вы можете использовать Ollama для перевода:
- между всеми языками
- с конкретного исходного языка
- на конкретный целевой язык
- между конкретным исходным и целевым языками
Перевод всех языков
Используйте шаблон подстановки *:*
, чтобы применить одну и ту же модель Ollama для всех пар перевода:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать Llama 3.1 для всех пар перевода
"*:*": "ollama:llama3.1",
},
});
Перевод с конкретного исходного языка
Используйте конкретный исходный язык с подстановочным знаком для целевого языка, чтобы применить модель для всех переводов с этого исходного языка:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать Llama 3.1 70B для всех переводов с английского
"en:*": "ollama:llama3.1:70b",
// Использовать Mixtral для переводов с испанского на любой язык
"es:*": "ollama:mixtral",
// Резерв для других исходных языков
"*:*": "ollama:gemma2",
},
});
Перевод на конкретный целевой язык
Используйте подстановочный знак для исходного языка с конкретным целевым языком, чтобы применить модель для всех переводов на этот целевой язык:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Использовать специализированную модель для переводов на японский
"*:ja": "ollama:qwen2",
// Использовать Mixtral для переводов на китайский
"*:zh": "ollama:mixtral",
// Использовать Mistral для переводов на немецкий
"*:de": "ollama:mistral",
// По умолчанию для других целевых языков
"*:*": "ollama:llama3.1",
},
});
Перевод между конкретными языками
Определите точные пары исходного и целевого языков для детального контроля над тем, какая модель обрабатывает конкретные языковые комбинации:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// Конкретные пары с оптимальными моделями
"en:es": "ollama:gemma2", // С английского на испанский
"en:ja": "ollama:qwen2", // С английского на японский
"en:zh": "ollama:qwen2", // С английского на китайский
"es:en": "ollama:llama3.1", // С испанского на английский
"fr:en": "ollama:mistral", // С французского на английский
"de:en": "ollama:phi3", // С немецкого на английский
// Резерв для неуказанных пар
"*:*": "ollama:llama3.1",
},
});