OpenRouter
الترجمة بالذكاء الاصطناعي باستخدام OpenRouter ومُجمّع Lingo.dev
ما هو OpenRouter؟
OpenRouter هو منصة توفر الوصول إلى مجموعة متنوعة من نماذج الذكاء الاصطناعي من مزودين مختلفين من خلال واجهة برمجة تطبيقات موحدة، مما يتيح للمطورين المقارنة والتبديل وتوجيه الطلبات بسهولة. تركز المنصة على المرونة والشفافية ومنح المستخدمين مزيدًا من التحكم في النماذج التي يستخدمونها وكيفية محاسبتهم.
إعداد مفتاح واجهة برمجة التطبيقات
يتطلب OpenRouter مفتاح API للمصادقة على الطلبات من Lingo.dev Compiler. اختر طريقة الإعداد التي تناسب سير عملك بشكل أفضل:
الخيار 1: متغير البيئة (Terminal)
الأفضل للتجارب السريعة والاختبار دون تعديل أي ملفات.
قم بتعيين المفتاح مباشرة في جلسة الطرفية الخاصة بك:
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",
},
});