مدونة Splync تدعم 42 لغة
هذا هو المقال الثالث والعشرون في مدونتي الخاصة بـ Splync، وهو تطبيق لتتبع الميزانية للمشاركة بين الأزواج والأصدقاء والعائلات. قد تتساءل كيف أنشر كل مقالة بـ 42 لغة رغم أنني مهندس وحيد. كما يوضح التنبيه في أعلى كل مقالة، فإن هذا الموقع يُترجم تلقائيًا إلى لغات متعددة باستخدام برنامج قمت بتطويره بنفسي. لأكون واضحًا: لا أكتب جملة واحدة يدويًا بأي لغة غير الإنجليزية. لهذا السبب، أطلب من القراء الرجوع إلى النسخة الإنجليزية الأصلية عندما تكون دقة المعنى مهمة حقًا. ومع ذلك، بعد العديد من جولات التجريب والخطأ لتحسين عملية الترجمة، أعتقد أن جودة الترجمة العامة جيدة بشكل معقول. في هذه المقالة، سأشارك ما يفعله برنامجي لجعل مدونة Splync متعددة اللغات.
Python وOpenAI API معًا
أبدأ دائمًا بكتابة كل مقالة باللغة الإنجليزية البسيطة، بما في ذلك البيانات الوصفية المتعلقة بـ SEO. بعد ذلك، يرسل البرنامج النص الإنجليزي إلى OpenAI API، مع تقديم موجه وملف مرجعي صغير. على خوادم OpenAI، يقرأ ChatGPT-4o الطلب ويعيد المقالة المترجمة — مثل النسخة العربية — بصيغة JSON. بمجرد أن يستلم جهاز MacBook الخاص بي تلك الترجمة، يقوم البرنامج فورًا بإرسال طلب آخر، هذه المرة يطلب الترجمة إلى اللغة البنغالية. يدور البرنامج تلقائيًا عبر جميع اللغات الـ 42 المستهدفة. بحلول نهاية العملية، يكون لديّ 42 ملف JSON مترجم. ثم يقوم برنامج Python آخر بتضمين كل ترجمة في قالب HTML ويولد 42 ملف HTML في أقل من ثانية. يتم رفع جميع الملفات إلى الخادم الذي يُستضاف عليه المدونة، ويتم وضع نسخة كل لغة في دليلها الخاص. أخيرًا، يقوم برنامج Python على الخادم بتحديث فهرس المقالات وروابط "المقالة التالية" ليظل التنقل لكل لغة متسقًا. مع كتابة المقالة الإنجليزية الأصلية كنص بسيط، عادةً ما تستغرق العملية بأكملها 5 دقائق أو أقل بكثير. عندما أحتاج لإجراء تغييرات، أقوم بتحديث ملفات HTML المتعددة في وقت واحد باستخدام برامج Python على الخادم.
ما هو API
إذا لم تكن معتادًا على المصطلحات التقنية، قد تتساءل كيف "يتحدث" جهاز الكمبيوتر الخاص بي مع خادم OpenAI في المقام الأول. الجواب هو شيء يُسمى API، واجهة برمجة التطبيقات. يمكنك التفكير في API كنافذة مراسلة بين برنامجين: برنامج يرسل طلبًا، والآخر يعيد الرد. على سبيل المثال، يرسل برنامجي Python رسالة مثل: "من فضلك ترجم هذه المقالة إلى اللغة الألمانية." يتلقى OpenAI تلك الرسالة عبر API، ويجهز الترجمة، ويرسل النتيجة مرة أخرى. يعمل الأمر تمامًا مثل تقديم طلب في مطعم: تخبر النادل بما تريده، يجهز المطبخ الطلب، والنادل يعيده إلى طاولتك. ولماذا تحتاج إلى نادل في المقام الأول؟ لأنك لا تدخل إلى المطبخ أو تتحدث مباشرة إلى الطاهي — لا تعرف كيف يعمل المطبخ، ولا تحتاج إلى ذلك. قد تقول للنادل: "هل يمكنني الحصول على شطيرة بالجبن؟" وقد يصرخ النادل: "الطلب جاهز! T21، شواوا!" بصيغة مختلفة تمامًا. يلعب API نفس الدور. فهو يربط بين نظامين مختلفين دون الحاجة إلى أن يفهم كل منهما لغة أو سير العمل الداخلي للآخر.
لماذا أحتاج إلى OpenAI API
الآن بعد أن رأينا ما هو API، إليك السبب الذي يجعلني أعتمد عليه فعليًا لهذه المدونة. عمليًا، أعرف كيف "أتحدث" إلى ChatGPT بنفسي — لكن لدي 42 لغة لمعالجتها. سيكون الاتصال بالنادل 42 مرة أمرًا مرهقًا (يتجاوز البرنامج ترجمة الإنجليزية إلى الإنجليزية، لكنه لا يزال يحول النص إلى JSON). استخدام OpenAI API يسمح لبرنامجي Python بإرسال جميع هذه الطلبات تلقائيًا، مما يوفر لي من العمل المتكرر حتى أتمكن من التركيز على أشياء أخرى. أنا مطور وحيد، لذا أحتاج إلى استخدام وقتي بكفاءة قدر الإمكان. كلما رأيت مهمة متكررة ولها قواعد واضحة، أقوم بأتمتها. والنتيجة عادةً ما تكون عملية أسرع بمليون مرة وخالية من الأخطاء تمامًا. لهذا السبب، الأتمتة عبر API أساسية — فهي تسمح لبرنامجي بتقديم جميع "الطلبات" الـ 42 فورًا وبشكل موثوق.
لماذا 42 لغة؟
تقنيًا، يمكنني إضافة العديد من اللغات الأخرى؛ سيستغرق الأمر بضع دقائق إضافية أثناء القيام بغسل الأطباق. لكنني أحب شخصيًا الرقم 42، "الإجابة على السؤال النهائي عن الحياة، الكون، وكل شيء" من كتاب دوغلاس آدمز. بالإضافة إلى ارتباطي بهذا الرقم، فإن إضافة لغات بسيطة جدًا يمكن أن تكون محفوفة بالمخاطر، لأن الترجمة بواسطة الذكاء الاصطناعي قد تصبح أقل موثوقية للغات ذات بيانات تدريب محدودة.
درجة حرارة ChatGPT 4o
عندما جربت لأول مرة نهج الترجمة متعدد اللغات هذا، كانت النتائج جيدة ولكنها ليست مثالية. بعض الجمل كانت مترجمة بشكل خاطئ، أو حرفية بشكل مفرط، أو مضللة في بعض الأحيان في بعض اللغات. كنت أيضًا قلقًا بشأن توليد تعبيرات غير مناسبة أو غير حساسة في سياقات ثقافية معينة. وبالطبع، لم أرغب في أن تبدو ترجماتي آلية أو ميكانيكية. أحد العوامل الرئيسية وراء جودة الترجمة هو ضبط درجة الحرارة — وهي معلمة تتحكم في مدى "إبداع" أو "صرامة" الذكاء الاصطناعي. درجة حرارة عالية تجعل الذكاء الاصطناعي أكثر إبداعًا، ولكن أيضًا أكثر تقلبًا. درجة حرارة منخفضة تجعله يلتزم بالمعنى الأصلي، لكنها قد تشعر أحيانًا بالجمود. استغرق الأمر الكثير من التجربة والخطأ للعثور على التوازن الصحيح: منخفضة بما يكفي لضمان الدقة، ولكن ليست منخفضة إلى حد تصبح فيه النصوص بلا حياة. بعد العديد من التجارب، شعرت أن درجة الحرارة = 0.8 كانت الأنسب لاحتياجات هذه المدونة: دقيقة بما يكفي للبقاء وفية للأصل الإنجليزي، ولكن مرنة بما يكفي لتبدو طبيعية بلغات أخرى.
ChatGPT 5.x لا يدعم ضبط الحرارة
النماذج الأحدث مثل ChatGPT 5 و5.1 لم تعد تدعم ضبط الحرارة على الإطلاق — تم استبدال المعلمة بمفاهيم مثل التفكير والجهد، التي تؤثر على كيفية تفكير النموذج بدلاً من مدى "إبداعه". بمعنى آخر، أعطاني ChatGPT 4o قرصًا فعليًا يمكنني تعديله لضبط أسلوب الترجمة، لكن عائلة 5.x تتبع فلسفة مختلفة تمامًا. إذا طلبت بشكل عرضي من أحدث نموذج "ترجمة هذا بدرجة حرارة = 0.8"، فقد يحاول التصرف كما لو أن هذا الضبط لا يزال موجودًا، ولكن داخليًا، تم إزالة المعلمة. النموذج ببساطة يقارب النية. مع استمرار OpenAI في تحديث نماذجهم، قد أضطر لتعديل عملية الترجمة الخاصة بي يومًا ما. حاليًا، يظل ChatGPT 4o خياري للترجمات متعددة اللغات — ليس فقط لأنه يفهم السياق جيدًا عبر العديد من اللغات، ولكن أيضًا لأن تكلفة API الخاصة به معقولة لمطور فردي مثلي. في الواقع، قد يصبح 4o واحد من أكثر النماذج المحبوبة في تاريخ OpenAI.
عمال OpenAI API
أحد الأمور المدهشة في OpenAI API — مقارنة باستخدام ChatGPT مباشرة في المتصفح — هو أنك تستطيع استخدام أكثر من "عامل" ChatGPT في نفس الوقت. عندما أرسل طلبات الترجمة لـ 42 لغة، لا أرسلها واحدة تلو الأخرى في صف بطيء. بدلاً من ذلك، يمكن لـ API معالجة العديد من الطلبات بالتوازي، كما لو أنني فجأة استأجرت غرفة مليئة بالمترجمين الذين يبدؤون العمل جميعًا في نفس الوقت. يتعامل برنامجي Python مع سير العمل مثل خط إنتاج صغير: يحضر المقالة الإنجليزية، يرسل الطلبات، ينتظر الردود، ويعالج النتائج إلى ملفات JSON. في هذه الأثناء، تقوم خوادم OpenAI بتشغيل نماذج متعددة في نفس الوقت، كل منها يترجم لغة مختلفة بالتوازي. هذا شيء لا يستطيع موقع ChatGPT أو التطبيق القيام به — تلك الواجهات تقدم لك نموذجًا واحدًا ومحادثة واحدة ومهمة واحدة في وقت واحد. لكن مع API، يمكنك توسيع عبء العمل الخاص بك بقدر ما يسمح به البرنامج. بالنسبة لمطور فردي مثلي، هذا يبدو كأنه فريق صغير من أذكى المساعدين الذين لا يحملون الأنا. يعتمد الأمر جزئيًا على سرعة الإنترنت، لكنني عادة ما أضبط العمال = 12.
ما أفعله لجعل مدونتي متعددة اللغات هو غسل الأطباق
كنت أعمل كغاسل أطباق في الكافتيريا الطلابية عندما كنت أدرس الرياضيات في جامعة كيوتو. بينما كان الأجر حوالي 5 دولارات في الساعة، لطالما أحببت العمل اليدوي المتكرر بعد قضاء عدة ساعات — أو أحيانًا عدة أيام — في تركيز فكري عميق. لاحقًا، عندما كنت أعمل في مصنع للثوم في هوكايدو، كانت وظيفتي ببساطة تلميع الآلاف من رؤوس الثوم البيضاء لتبدو أكثر بريقًا على حزام الناقل. ثماني ساعات في اليوم — تركيز كامل، إيقاع ثابت. كان ذلك بشكل غريب مرضيًا. الآن، بعد تلك الذكريات، أعمل حاليًا في عمل فكري — أكتب برمجيات، أصمم أنظمة، أؤلف هذه المقالات. لكن التوازن لم يتغير. إذا سألتني كيف أدير نشر مقال في المدونة بـ 42 لغة بنفسي، الجواب الصادق هو: أفعل ذلك بغسل الأطباق.