تخطي إلى المحتوى الرئيسي
OpenAI

كيف تستخدم OpenAI نظام Codex

المقدمة

بات نظام Codex أداةً يوميةً لا غنى عنها لمختلف الفرق التقنية في OpenAI، بما في ذلك قطاعات الأمن وهندسة المنتجات والواجهات الأمامية والبنية التحتية وهندسة الأداء. وتوظف هذه الفرق النظام لتعزيز كفاءة سلسلة من العمليات الهندسية، والتي تشمل فهم الأنظمة المتشابكة وتطوير قواعد الكود الواسعة، فضلاً عن تقديم الميزات المبتكرة وحل المشكلات الطارئة في أوقات قياسية.

وبناءً على رؤى مستمدة من مقابلات مباشرة مع مهندسينا وتحليل بيانات الاستخدام، أعددنا دليلاً يتضمن نماذج الاستخدام الفعلي وأمثل الطرق التي تتمكن Codex من خلالها من دعم فرقنا للتحرك بسرعة أكبر ورفع معايير جودة العمل مع السيطرة على التعقيدات التقنية المتنامية.


حالة الاستخدام 1: فهم الأكواد البرمجية

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

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

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

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

"عندما أقوم بإصلاح خطأ برمجي، أستخدم 
وضع السؤال لمعرفة المواقع الأخرى في قاعدة الكود التي قد يظهر فيها نفس الخطأ"
مهندس متخصص في الأداء، أنظمة استرجاع البيانات
جرّب استخدام Codex لفهم الأكواد البرمجية باستخدام المطالبات التالية كأمثلة:
  • أين يتم تنفيذ منطق المصادقة في هذا المستودع؟

  • لخّص كيفية انتقال الطلبات داخل هذه الخدمة من مرحلة البداية وحتى صدور الرد.

  • ما الوحدات التي تتفاعل مع [أدخل اسم الوحدة] وكيف يتم التعامل مع حالات الفشل؟

حالة الاستخدام 2: إعادة الهيكلة وعمليات الترحيل

يُستخدم Codex بشكل شائع لإجراء تعديلات تشمل ملفات أو حزم برمجية متعددة. فعلى سبيل المثال، عندما يقوم المهندسون بتحديث واجهة API، أو تغيير كيفية تنفيذ نمط معين، أو الانتقال إلى تبعية برمجية جديدة، فإن Codex يسهل تطبيق هذه التغييرات بشكل متسق.

وتبرز أهميته بشكل خاص عند الحاجة لإجراء نفس التحديث عبر عشرات الملفات، أو عندما يتطلب التحديث إدراكًا بالبنية والتبعيات التي لا يمكن رصدها بسهولة باستخدام التعبيرات النمطية (regex) أو عمليات البحث والاستبدال التقليدية.

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

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

"حول Codex كل عمليات getUserById( ) القديمة إلى نموذج الخدمة المعتمد لدينا وفتح طلب السحب الخاص بها. ما قام به في دقائق معدودة كان يحتاج إلى ساعات طويلة من العمل."
مهندس أنظمة خلفية، تطبيق ChatGPT على الويب
جرّب استخدام Codex لإعادة الهيكلة وترحيل البيانات باستخدام المطالبات التالية كأمثلة:
  • قسّم هذا الملف إلى وحدات منفصلة حسب الغرض، وأجرِ اختبارات لكل منها.

  • حوّل كل وصول إلى قاعدة البيانات المعتمد على callbacks إلى async/await.

حالة الاستخدام 3: تحسين الأداء

يُستخدم Codex لتحديد ومعالجة معوقات الأداء.

وأثناء مساعي ضبط الأنظمة أو تعزيز الموثوقية، يوجه المهندسون Codex لتحليل مسارات الكود البطيئة أو المستهلكة للذاكرة بشكل كبير، مثل الحلقات التكرارية غير الفعالة، أو العمليات المتكررة، أو الاستعلامات المكلفة، مع اقتراح بدائل محسنة، مما يسفر غالبًا عن مكاسب ملموسة في مستويات الكفاءة والموثوقية.

كما يُستخدم النظام لدعم صحة الكود من خلال التعرف على الأنماط الخطرة أو المتقادمة التي لا تزال قيد الاستخدام النشط. وتعتمد فرقنا عليه لتقليص الدين التقني طويل المدى وتلافي التراجعات البرمجية قبل حدوثها.

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

"أستخدم Codex للبحث عن استعلامات قاعدة البيانات المكلفة والمتكررة. إنه رائع في تحديد المسارات الأكثر استهلاكًا للموارد وصياغة مسودات لاستعلامات مجمعة يمكنني ضبطها وتحسين أدائها لاحقًا."
مهندس بنية تحتية، API Reliability
جرّب استخدام Codex لتحسين الأداء باستخدام المطالبات التالية كأمثلة:
  • حسّن هذه الحلقة من حيث كفاءة استخدام الذاكرة واشرح لماذا نسختك أسرع.

  • اعثر على العمليات المكلفة المتكررة في معالج هذا الطلب واقترح فرصًا للتخزين المؤقت.

  • اقترح طريقة أسرع لتجميع استعلامات قاعدة البيانات داخل هذه الدالة.

حالة الاستخدام 4: تطوير نطاق تغطية الاختبارات

يسهم Codex في تسريع عملية كتابة الاختبارات البرمجية، لا سيما في الأجزاء التي تفتقر إلى التغطية الكافية.

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

وتبرز فاعلية Codex في رصد الظروف الحدودية، مثل الحقول الفارغة أو تجاوز السعة، والحالات المعقدة التي قد تغيب عن ذهن المطور عند وضع خطة الاختبار الأولى.

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

"أكلف Codex بفحص الوحدات ضعيفة التغطية ليلاً، لأبدأ يومي بطلبات سحب جاهزة تحتوي على اختبارات جزئية فعالة."
مهندس تطوير الواجهات الأمامية، تطبيق ChatGPT للكمبيوتر
جرّب استخدام Codex لتحسين الأداء باستخدام المطالبات التالية كأمثلة:
  • اكتب اختبارات وحدة لهذه الوظيفة، بما في ذلك الحالات الاستثنائية ومسارات الفشل.

  • أنشئ اختبارًا قائمًا على الخصائص لأداة الفرز هذه.

  • وسّع ملف الاختبار هذا ليغطي السيناريوهات غير المشمولة بالتغطية المتعلقة بالمدخلات الفارغة والحالات غير الصالحة.

حالة الاستخدام 5: تسريع معدلات الإنجاز في التطوير

يساعد Codex الفرق على التحرك بوتيرة أسرع من خلال تسريع بدايات ونهايات دورة التطوير على حد سواء.

فعند إطلاق ميزة جديدة، يستخدمه المهندسون لبناء الهياكل الأساسية للأكواد الروتينية، حيث يقوم بإنشاء المجلدات، والوحدات البرمجية، ونماذج واجهة برمجة التطبيقات (API stubs) للحصول على كود قابل للتشغيل بشكل سريع دون الحاجة للربط اليدوي لكل جزء.

ومع اقتراب المشروعات من مرحلة الإصدار، يساعد Codex في الوفاء بالمواعيد النهائية الصارمة من خلال معالجة المهام الصغيرة والضرورية، مثل تصنيف الأخطاء وتصفيتها، وسد فجوات التنفيذ في المراحل النهائية، وإنشاء نصوص الإطلاق البرمجية، وأدوات تتبع الأداء عن بعد (Telemetry hooks)، أو ملفات الإعدادات.

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

"كنتُ في اجتماعات طوال اليوم، ومع ذلك دمجتُ 4 طلبات سحب لأن Codex كان يعمل في الخلفية بشكل تلقائي."
مهندس منتجات، ChatGPT Enterprise
جرّب استخدام Codex لزيادة سرعة التطوير باستخدام المطالبات التالية كأمثلة:
  • قم ببناء الهيكل الأساسي لمسار واجهة برمجة تطبيقات (API) جديد لطلب POST على /events مع إضافة عمليات التحقق الأساسية وتسجيل السجلات.

  • أنشئ أداة ربط للقياس عن بُعد لتتبّع النجاح/الفشل لمسار الإعداد الأولي الجديد باستخدام هذا القالب [أدرج مثالًا على تعليمات برمجية القياس عن بُعد الخاصة بك].

  • أنشئ تنفيذًا هيكليًا أوليًا استنادًا إلى هذه المواصفات: [أدرج المواصفات أو ملاحظات المنتج].

حالة الاستخدام 6: الحفاظ على تدفق العمل

يسهم Codex في الحفاظ على وتيرة إنتاجية المهندسين في ظل الجداول المزدحمة وكثرة التداخلات،إذ يُستدَم في تسجيل المهام غير المكتملة، وتحويل الملاحظات إلى نماذج عمل تجريبية، أو توليد مسارات استكشافية للمستقبل يمكن الرجوع إليها لاحقًا. وتسهل هذه الآلية عملية التوقف عن العمل ومعاودته مع الحفاظ على ترابط الأفكار، لا سيما خلال فترات الاستدعاء الطارئ أو تلاحم المواعيد والاجتماعات.

"إذا صادفت تعديلًا سريعًا عابرًا، أكتفي بتكليف Codex بمهمة معالجته بدلاً من الانشغال بالانتقال بين فروع العمل، وأقوم بتدقيق طلب السحب الناتج حينما يتسنى لي ذلك."
مهندس أنظمة خلفية، ChatGPT API
جرّب استخدام Codex للحفاظ على الانسيابية باستخدام المطالبات التالية كأمثلة:

حالة الاستخدام 7: الاستكشاف وتوليد الأفكار

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

علاوة على ذلك، توظف الفرق النظام لاكتشاف الثغرات المرتبطة ببعضها؛ فبمجرد تزويده بخلل تقني معلوم أو منهجية متقادمة، يمكن لـ Codex رصد أنماط مماثلة في كامل قاعدة الكود، مما ييسر عملية تلافي الانتكاسات البرمجية أو استكمال مهام تطهير الكود.

"يساعدني Codex في حل مشكلة 'البداية من الصفر'؛ حيث أقوم بلصق المواصفات والوثائق الفنية، ليقوم هو ببناء الهيكل البرمجي أو تنبيهي إلى الأجزاء التي غفلت عنها."
مهندس منتجات، تطبيق ChatGPT للكمبيوتر
جرّب استخدام Codex للاستكشاف وتوليد الأفكار باستخدام المطالبات التالية كأمثلة:
  • كيف ستكون آلية العمل في حال تحول النظام إلى البنية الموجهة بالأحداث بدلاً من هيكلية الطلب والاستجابة؟

  • اعثر على جميع الوحدات التي تنشئ سلاسل SQL يدويًا بدلًا من استخدام منشئ الاستعلامات الخاص بنا.

  • أعد صياغة هذا بأسلوب أكثر وظيفية وتجنب التغيير الموضعي والآثار الجانبية.


أفضل الممارسات

يبلغ Codex ذروة فاعليته حين يقترن بالبناء الهيكلي والسياق المناسب مع إتاحة المجال للتعديلات المتتابعة. إليك مجموعة من الممارسات التي تتبناها فرق OpenAI لضمان استخلاص فائدة ثابتة من الأداة خلال سير العمل اليومي.

البدء بوضع الأسئلة

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

التحسين المتكرر لبيئة تطوير Codex

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

بناء المطالبات بنمط تقارير GitHub

يستجيب Codex بشكل أفضل عندما تعكس المطالبات الطريقة التي تصف بها تغييرًا في طلب دمج أو مشكلة. ويشمل ذلك تزويد النظام بمسارات الملفات البرمجية، وأسماء المكونات، والفروق، ونصوص التوثيق المرجعية عند الاقتضاء. وتساعد الصياغة القائمة على المحاكاة، مثل 'قم بتنفيذ هذه الميزة كما هو موضح في [الوحدة X]'، في الوصول إلى نتائج أكثر دقة واتساقًا.

استخدام قائمة انتظار المهام في Codex كأداة خفيفة لإدارة المهام المتراكمة

ابدأ بإرسال المهام لتوثيق الأفكار الجانبية، أو أجزاء العمل غير المكتملة، أو الإصلاحات العرضية. لا يوجد أي ضغط لإنشاء طلب سحب كامل دفعة واحدة؛ إذ يعمل Codex بكفاءة كمساحة تحضير يمكنك العودة إليها بمجرد استعادة تركيزك.

استخدام AGENTS.md لتوفير سياق دائم

احتفِظ بملف AGENTS.md لمساعدة Codex على العمل بفعالية أكبر في مخزن بياناتك عبر المطالبات. وتتضمن هذه الملفات عادةً اصطلاحات التسمية، ومنطق الأعمال، والخصائص الشاذة المعروفة، أو التبعيات التي لا يستطيع Codex استنتاجها من الكود وحده. تعرّف على المزيد حول كيفية تنظيم ملف AGENTS.md في الوثائق.

توظيف خاصية 'Best of N' لرفع جودة النتائج

تمكنك خاصية 'Best of N' من إنشاء ردود متنوعة بشكل متزامن لمهمة محددة، مما ييسر عملية استعراض البدائل البرمجية وانتقاء الأنسب منها. وفي حالات العمل المعقدة، يتاح لك تدقيق مخرجات جولات تكرارية متعددة والجمع بين عناصر من ردود مختلفة بهدف تقديم نتيجة نهائية أكثر رصانة ودقة.


نظرة إلى المستقبل

رغم أن Codex لا يزال في طور التجربة البحثية، إلا أنه يترك بصمة حقيقية في أسلوب تطويرنا للأنظمة، مما يساهم في تسريع وتيرة الإنجاز، وتحسين جودة الأكواد البرمجية، ومعالجة أعمال كانت ستظل خارج نطاق الأولويات لولا هذا النظام.

إننا نشعر بالتفاؤل حيال الفرص القادمة، ومع ارتقاء كفاءة النماذج وتأصل دور Codex داخل إجراءات عملنا، فإننا نطمح إلى فتح آفاق جديدة وأكثر فاعلية لتطوير البرامج من خلاله. كما سنواصل إطلاعكم على الدروس المستفادة بمرور الوقت.

هل أنت مهتم بدمج الذكاء الاصطناعي في أعمالك؟

تعلّم كيف نساعد الشركات على بناء استراتيجيات ذكاء اصطناعي قابلة للتوسع ومسؤولة.