العربية
  • chatgpt
  • الدولية
  • الإنتاجية

دعم الفعالية الدولية مع ChatGPT

يشارك هذا المقال تجربة استخدام واجهة برمجة التطبيقات ChatGPT لدعم الفعالية الدولية (i18n) للمنتجات بشكل فعال، وتقديم نصائح حول تكامل الواجهة، وتحسين نتائج الترجمة، وتحسين التوجيهات للحصول على نتائج أفضل.

Gao
Gao
Founder
Yijun
Yijun
Developer

في سوق اليوم العالمي، من الضروري دعم الفعالية الدولية (i18n) للمنتجات. من خلال دعم لغات متعددة، يمكن للمنتجات جذب قاعدة مستخدمين عالمية، وتحسين تجربة المستخدم، وزيادة الوفاء، وزيادة الحصة السوقية. ومع ذلك، فإن دعم الفعالية الدولية غالبًا ما يأتي مع تكاليف عالية وصيانة معقدة:

  • يتطلب إعداد دعم اللغة فرقًا احترافية واختيار شركاء مناسبين، وهو ما يستغرق وقتًا وجهدًا.
  • العمليات التقليدية للترجمة بطيئة وتتطلب تدخل يدوي، مما يجعل من الصعب متابعة تكرارات المنتج.

في هذا المقال، سنشارك تجربة فريق Logto في دعم الفعالية الدولية لمنتجاتنا بشكل فعال باستخدام ChatGPT وواجهة برمجتها مع تقليل التكاليف.

كيف اقتربنا من الفعالية الدولية

قبل تكامل واجهة برمجة التطبيقات ChatGPT، اتبعنا عملية ترجمة تقليدية لدعم الفعالية الدولية لمنتجاتنا. كانت العملية كالتالي:

  1. لكل لغة، أنشأنا مجلد ترجمة يحتوي على عدة ملفات TypeScript. كل ملف يتكون من كائن TypeScript يحتوي على أزواج مفتاح-قيمة تمثل مفاتيح العبارات وترجماتها.
  2. لإضافة عبارة جديدة، أضفنا يدويًا زوج مفتاح-قيمة جديد إلى ملف الترجمة لكل لغة.
  3. في الدليل الجذري لكل لغة، أنشأنا ملف index.ts الذي يصدر جميع ملفات الترجمة في تلك اللغة.

إليك مثال على ملف index.ts للغة zh-HK:

لعرض عبارة في واجهة المستخدم، استخدمنا وظيفة تسترجع الترجمة بناءً على البيئة الحالية. قمنا بالوصول إلى الكائنات أو المفاتيح المتداخلة باستخدام تدوين النقطة.

على سبيل المثال، إذا كان المستخدم يستخدم متصفحًا باللغة الإنجليزية:

التحديات التي واجهناها

واجهنا تحديين رئيسيين مع هذا النهج:

  1. مع زيادة عدد اللغات والعبارات، أصبح الحفاظ على ملفات الترجمة تحديًا. كان إضافة عبارات جديدة إلى كل لغة يدويًا يستغرق وقتًا ويعرضها للأخطاء.
  2. كانت عملية الترجمة غير موثوقة. بدون فريق ترجمة مخصص، اعتمدنا على المستخدمين المجتمعيين في معظم الترجمات. كانوا يقومون بعمل رائع، لكن الترجمة أصبحت غير مكتملة وغير متناسقة بمرور الوقت.

تقديم ChatGPT

بينما اكتسب ChatGPT شهرة، اكتشفنا حالة استخدام مثيرة للاهتمام. بطريقة عرضية، نسخنا كائن عبارة TypeScript إلى ChatGPT ووجدنا أنه يمكنه ترجمة مقتطف الكود مع الحفاظ على بنية الكود. كان هذا الاكتشاف مثيرًا لنا.

على سبيل المثال:

والنتيجة:

كان هذا رائعًا حقًا. في حالات العالم الحقيقي، كان لدينا أيضًا ملفات تاريخية تضمنت بعض العبارات غير المترجمة المميزة بـ // UNTRANSLATED:

كان ChatGPT قادرًا حتى على ترجمة "جزئية" لمقتطف الكود، مما ألغى العقبة الأخيرة. ومع ذلك، كان بعيدًا عن الكمال. دعونا نرى القضايا التي واجهناها.

هندسة التوجيه

مشكلة استجابة العشوائية

حقيقة معروفة عن ChatGPT هي طبيعته غير المتوقعة. أحيانًا تكون النتائج دقيقة، وأحيانًا يمكن أن تكون غريبة أو لا تتوافق مع ما قصدناه. بينما يكون هذا مقبولًا في سياق روبوت الدردشة، يصبح مشكلة عند إنشاء مقتطفات كود الترجمة.

لنعد إلى مثال zh-HK:

الترجمة المتوقعة لـ Nice to meet you. في zh-HK هي 很高興見到你。. ومع ذلك، هناك حالات يتم فيها ترجمة المقتطف إلى zh-CN:

很高兴见到你。 مختلفة عن 很高興見到你。.

أحيانًا، يتم ترجمة العبارة "Please translate the..." أيضًا:

أحيانًا، تحتوي النتائج على محتوى غير ضروري:

السطر الأول "This is the translation:" غير ضروري لأغراضنا.

استنادًا إلى النتائج أعلاه، يمكننا تحديد عدة فجوات بين ChatGPT وبيننا في المحادثة:

  • أحيانًا، يتم استنتاج اللغة فقط (zh)، دون النظر في الفروق الإقليمية (zh-HK).
  • يفشل في التعرف بدقة على المحتوى الذي يحتاج إلى الترجمة.
  • صيغة الاستجابة لا تتماشى مع توقعاتنا.

كتابة توجيهات واضحة ومحددة

لمعالجة المشاكل المذكورة أعلاه، قمنا بتحسين توجيهنا:

ثبتت هذه التوجيه الجديدة فعاليتها. قمنا بإرشاد ChatGPT إلى:

  • استنتاج اللغة الإقليمية استنادًا إلى الرمز اللغوي المقدم.
  • ترجمة مقتطف الكود المحدد بعلامات ثلاثية الغلق.
  • ضمان أن يحتفظ الناتج بالشكل الأصلي دون أي محتوى إضافي.

إعطاء النموذج وقتًا للتفكير

كما ذكرنا سابقًا، بالنسبة للعبارات الموجودة، كنا بحاجة إلى ترجمة تلك المميزة بـ // UNTRANSLATED. أدخل هذا طبقة جديدة من التعقيد إلى التوجيه. على سبيل المثال:

إحدى النتائج التي حصلنا عليها:

قام أيضًا بترجمة (أو تحويل) العبارة success وأضاف تعليقين // TRANSLATED، وكان كلاهما غير متوقع.

على الرغم من أن التوجيه السابق كان واضحًا ومحددًا، إلا أنه كان طويلاً إلى حد ما وصعب المتابعة، حتى بالنسبة للبشر. لتحسين ذلك، أعطينا للنموذج مزيدًا من الوقت للتفكير. قدمنا توجيهًا خطوة بخطوة:

تحسنت النتائج بشكل كبير. ومع ذلك، أحيانًا يقوم ChatGPT بعرض "عملية التفكير" نظرًا لأننا قدمنا الخطوات بشكل واضح.

الأدوار في المحادثات

على الرغم من عدم وجود واجهة مستخدم مباشرة، يمكننا إرسال محادثة تفاعلية وديناميكية إلى ChatGPT بتخصيص "الأدوار" المختلفة لكل رسالة. يمكن أن يكون الدور أحد الأمور التالية:

  • "system": مسؤول عن توجيه تدفق وسلوك المحادثة لضمان الاستمرارية والتوجيه نحو الهدف.
  • "assistant": يمثل نموذج ChatGPT نفسه، الذي يقدم الأجوبة والاستجابات.
  • "user": يمثل المستخدم الذي يسأل الأسئلة ويتفاعل مع النموذج.

من خلال استخدام الأدوار، يمكننا إنشاء محادثة أكثر تفاعلية مع ChatGPT. كل رسالة تلعب دورًا محددًا في توجيه المحادثة.

هنا، يمكننا استخدام دور "system" لتوجيه ChatGPT حول كيفية إنجاز مهمتنا:

استخدام دور "user" لطلب ChatGPT لترجمة مقتطف الكود:

استخدام دور "assistant" للإشارة إلى "الجواب القياسي":

أخيرًا، اجمع بين الرسائل الثلاثة أعلاه مع مقتطف الكود الذي نريد ترجمته، وأرسل طلبًا واحدًا إلى واجهة إتمام المحادثات للـ Chat. إليك مثال:

استبدلنا languageCode بالرمز المستهدف وcode بمقتطف الكود للترجمة، ورأينا النتيجة التي توقعناها تمامًا. أحسنت!

التكامل مع واجهة الأوامر CLI الخاصة بنا

بينما كانت النتائج صحيحة ومستقرة، كانت عملية استخدام واجهة برمجة التطبيقات ChatGPT لا تزال غير مريحة كثيرًا. كان علينا نسخ مقتطف الكود يدويًا، لصقه في الطلب، واستبدال المتغيرين languageCode وcode. نظرًا للحاجة إلى ترجمة أكثر من 10 لغات و100 مقتطف كود، لم تكن هذه التجربة مثالية.

لمعالجة ذلك، قررنا دمج واجهة برمجة التطبيقات ChatGPT في واجهة الأوامر (CLI) الخاصة بنا. أضفنا أمرين إلى واجهة الأوامر الخاصة بنا:

  • logto translate sync: يقوم هذا الأمر بجمع مقاطع الكود عبر جميع اللغات التي تحتوي على تعليقات // UNTRANSLATED، ويترجمها، ويستبدل مقاطع الكود الأصلية بالإصدارات المترجمة.
  • logto translate create [languageCode]: يقوم هذا الأمر بإنشاء لغة جديدة باستخدام [languageCode] المحدد ويترجم جميع مقاطع الكود من اللغة الافتراضية (الإنجليزية) إلى اللغة الجديدة.

على الرغم من أن الترجمة قد لا تكون مثالية، إلا أنها لا تزال تحسنًا كبيرًا. كان بإمكاننا الآن التركيز على التحقق من نتائج الترجمة وتحسينها بدلاً من قضاء الوقت في عملية الترجمة الفعلية.

الاستنتاج

يمكن أن يكون تكامل واجهة برمجة التطبيقات ChatGPT في سير عملنا لدعم الفعالية الدولية للمنتجات أداة قوية، ولكنه يتطلب تخطيطًا دقيقًا وتعليمات واضحة للحصول على أفضل النتائج.

إذا كنت تقوم بتطوير تطبيقات تعتمد على الذكاء الاصطناعي، فإن التحقق من الهوية للمستخدمين أمر ضروري. يقدم Logto طريقة بسيطة وآمنة للتحقق من هوية مستخدميك ويوفر نظام هوية موحد للمستخدمين عبر جميع تطبيقاتك، كما يوفر دعمًا جاهزًا لمكونات ChatGPT الإضافية. للحصول على مزيد من المعلومات، تحقق من منشورنا على المدونة:

تطبيق التحقق من هوية المستخدمين في مكونات ChatGPT باستخدام Logto