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
الخطوة 2. تنزيل نموذج
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",
},
});