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

  1. انتقل إلى ollama.com/download.
  2. قم بتنزيل وتشغيل المثبت.

الخطوة 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",
  },
});