عن المشروع

## ما هي ChatGPT Subtitle Translator هي أداة ترجمة مبنية حول OpenAI ChatGPT API (أو أي نقطة نهاية لإكمال المحادثة متوافقة مع OpenAI، بما في ذلك نسخة Ollama محلية). تركيزها على الترجمة القائمة على الأسطر، خاصة ترجمات SRT، حيث يكون الحفاظ على التطابق بين أسطر الإدخال والإخراج مهمًا للحفاظ على توقيت الترجمة سليمًا. ## كيف تعمل يتم إزالة أو تبسيط فهارس SRT والطوابع الزمنية قبل إرسالها إلى النموذج لتقليل استخدام الرموز. يتم تجميع الأسطر في دفعات داخل مطالبة واحدة، مما يزيل الحمل المتكرر لكل إدخال ويسمح بترجمة ملفات طويلة بشكل تعسفي دون استهلاك مفرط للرموز. تعليمة النظام الافتراضية هي `Translate to <language>` كحد أدنى. يمكن اختيار خمسة أوضاع منظمة عبر `--structured`: - `array` (افتراضي): يتم إرسال الأسطر كمصفوفة JSON ويعيد النموذج مصفوفة مطابقة. - `object`: تصبح أسطر المصدر مفاتيح في مخطط الاستجابة، لذا لا يتم إرسال رسالة مستخدم صريحة. - `timestamp`: يتم الحفاظ على التوقيتات إلى جانب النص باستخدام تنسيق Toon مضغوط مع إزاحة الدفعة بالإضافة إلى إزاحة/طول لكل إدخال بالمللي ثانية؛ قد يدمج النموذج إدخالات متجاورة. تحدث إعادة المحاولة فقط عندما لا تتطابق حدود النطاق الزمني للإخراج مع الإدخال. - `agent`: اسم مستعار للأمر الفرعي agent مع الخيارات الافتراضية. - `none`: الوضع القديم بدون إخراج منظم. ## الميزات - واجهة ويب (مستضافة على GitHub Pages) وسطر أوامر - دعم Structured Output، ممكّن افتراضيًا في كلتا الواجهتين - دعم Prompt Caching، يُتحكم به عبر `-c, --context` (سطر الأوامر فقط) - يعمل مع أي مزود متوافق مع OpenAI API، مثل Ollama المحلي - تجميع قائم على الأسطر مع تحديد حجم دفعة تلقائي مستمد من ميزانية رموز السياق - فحص OpenAI Moderation اختياري (`--use-moderator`، سطر الأوامر فقط) لتجنب إهدار الرموز على حالات الرفض المحتملة - إخراج عملية متدفق - تحديد معدل الطلبات في الدقيقة - استئناف التقدم (سطر الأوامر فقط) - اكتشاف حلقات التكرار أثناء التدفق (`--guard-repetition`) ## وضع Agent يشغّل الأمر الفرعي `agent` عدة تمريرات قبل الترجمة: تمريرة نظرة عامة تأخذ عينات من الملف لتحديد المحتوى والمدة والنوع/النبرة وأسماء الشخصيات واكتشاف لغة المصدر؛ تمريرة تخطيط تفحص الملف في نوافذ محدودة بالرموز، وتنتج ملخصات دفعات يتم دمجها في تعليمة ترجمة محسّنة؛ ثم تستخدم تمريرة الترجمة تلك التعليمة المُثراة وتتحقق من اللغة الهدف بعد الدفعة الأولى. تشمل الخيارات `--no-refine` و`--no-fitting` و`--context-summary`. ## الإعداد والاستخدام يتطلب Node.js >= 20. بعد الاستنساخ، شغّل `npm install`، واجعل `cli/translator.mjs` قابلًا للتنفيذ، وانسخ `.env.example` إلى `.env` وأضف مفتاح API. تشمل الاستدعاءات النموذجية `cli/translator.mjs --input subtitles.srt --from Japanese --to English`، وإدخال نص عادي عبر `--plain-text`، وتعليمات مخصصة عبر `--system-instruction`. يمكن تكوين النموذج وtemperature وtop_p والعقوبات وlogit bias من خلال معلمات OpenAI القياسية.