Codex لتوليد الشيفرة البرمجية، شرح مبسّط

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

Codex لتوليد الشيفرة البرمجية، شرح مبسّط
Cristian Da Conceicao
مؤسس Picasso IA

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

مطور يكتب الشيفرة على مكتبه مع الإكمال التلقائي بالذكاء الاصطناعي

ما هو Codex فعليًا

Codex نموذج لغوي كبير دُرّب على نصوص اللغة الطبيعية، وعلى مجموعة ضخمة من الشيفرة المصدرية جُمعت من مستودعات عامة، وأبرزها GitHub. وهو في جوهره فرع من GPT-3، جرى ضبطه بدقة ليتنبأ بتوكنات الشيفرة بدلًا من النثر.

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

النموذج وراء الاقتراح

البنية المعتمدة هي المحوِّل (transformer)، وهي العائلة نفسها من الشبكات العصبية التي تقف وراء كل نموذج لغوي كبير اليوم. تستخدم المحوِّلات آلية تُسمى الانتباه الذاتي (self-attention) لتقدير أهمية كل توكن في السياق مقارنةً بكل توكن آخر. وفي الشيفرة، هذا قوي جدًا: متغيّر عُرّف قبل 200 سطر ما يزال "مرئيًا" للنموذج حين يتنبأ بما يأتي بعده.

صدر Codex في تكوينين رئيسيين: إصدار أصغر باسم cushman (نحو 12 مليار معامل) مُحسَّن للسرعة، وإصدار أكبر باسم davinci يركّز على الدقة. وقد شغّل إصدار davinci النسخة الأولى من GitHub Copilot، وكان التكوين الذي أبهر الناس فعلًا عند إطلاقه.

كيف يختلف عن النماذج اللغوية الكبيرة العادية

نماذج LLM ذات الأغراض العامة دُرّبت على التعامل مع كل شيء: المقالات، والأسئلة، والملخصات، والمحادثات. أما Codex فقد استبدل الاتساع بالعمق. ضبطه على الشيفرة يعني أنه ينتج بثبات مخرجات صحيحة نحويًا بعشرات لغات البرمجة، ويتعامل مع السياق الخاص بالشيفرة بشكل أفضل من النماذج المركّزة على النثر، ويفهم المفاهيم البرمجية المجردة مثل الاستدعاء الذاتي (recursion) والتنفيذ غير المتزامن وعقود الواجهات البرمجية (API contracts) بمستوى عملي.

💡 سيشرح نموذج لغوي عام خوارزمية ترتيب. أما Codex فسيكتبها، مع معالجة الحالات الحدّية.

مكتب تقني مفتوح بمطورين يعملون على مكاتب واقفة خلال الساعة الذهبية

كيف يعمل توليد الشيفرة

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

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

التوكنات والسياق والتنبؤ

تعمل نماذج الشيفرة ضمن نافذة سياق (context window)، وهي الحد الأقصى لعدد التوكنات التي يمكنها معالجتها في وقت واحد. بالنسبة إلى Codex، كانت هذه النافذة 4,096 أو 8,192 توكن، بحسب الإصدار. وهذا يحدّ من مقدار الشيفرة المحيطة التي يستطيع النموذج "رؤيتها" عند التنبؤ.

دفعت نماذج الشيفرة الحديثة هذا الحد أبعد بكثير. يتعامل GPT 4.1 مع سياقات تصل إلى مليون توكن، ما يعني أن قواعد شيفرة كاملة يمكن أن تتسع في أمر نصي واحد. أما Granite 8B Code Instruct 128K من IBM فيوفر 128,000 توكن مُحسَّنة خصيصًا لمهام الشيفرة، وهو تحسن كبير مقارنةً بحدود Codex الأصلية.

من اللغة الطبيعية إلى شيفرة قابلة للتشغيل

“سحر” Codex الظاهري هو أنه دُرّب على مستودعات شيفرة تحوي التعليقات والتطبيقات معًا جنبًا إلى جنب. تعلّم أن تعليقًا مثل # parse a JSON file and return a dict يسبق عادةً نوعًا محددًا من دوال Python. وعند تغذيته بهذا التعليق، ينشّط النموذج هذا الارتباط ويتنبأ بالتطبيق المناسب.

هذا ليس استدلالًا بالمعنى الفلسفي. إنه مطابقة أنماط قوية جدًا، تعمل على نطاق يجعل مخرجاتها لا تُميَّز عن الفهم.

💡 جدير بالملاحظة: لا ينفّذ Codex الشيفرة ولا يتحقق منها في بيئة تشغيل. كل اقتراح هو تنبؤ إحصائي. لهذا ما تزال الشيفرة المولّدة بالذكاء الاصطناعي تحتاج إلى مراجعة بشرية.

وجه مطور مضاء بوهج شاشة الحاسوب في غرفة مظلمة

ما الذي يستطيع Codex فعله (وما الذي لا يستطيعه)

فهم ملف القدرات الفعلي يمنعك من توقع الكثير أو القليل جدًا من أي نموذج شيفرة بالذكاء الاصطناعي.

حيث يقدّم أفضل أداء

  • توليد الهياكل النمطية: عمليات CRUD، ومعالجات الإدخال والإخراج للملفات، وهياكل عملاء API
  • مهام الدالة الواحدة: أي شيء يتسع لبضعة عشرات من الأسطر، وله مدخلات ومخرجات واضحة
  • توليد اختبارات الوحدة: بمعرفة دالة، كتابة اختبارات للسلوك المتوقع منها
  • ترجمة الشيفرة بين اللغات: تحويل Python إلى JavaScript، أو SQL إلى استعلامات ORM
  • التوثيق: توليد docstrings من توقيعات الدوال
  • أنماط Regex: الشيء الذي يبحث عنه معظم المطورين في كل مرة

الحدود التي ستصطدم بها بسرعة

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

مهندسة برمجيات تراجع شيفرة معروضة على شاشة مقسومة عند مكتب واقف

Codex مقابل نماذج الشيفرة الحديثة

أوقفت OpenAI تشغيل Codex في مارس 2023. وقد تغيّر مشهد توليد الشيفرة بشكل كبير منذ ذلك الحين، وترجع كل تحسن مهم إلى محورين: نوافذ سياق أكبر، والتفكير المدمج.

النموذجنافذة السياقالتخصصمتاح
Codex (davinci)8K توكنمركّز على الشيفرةمتوقف
GPT 4.1مليون توكنعام + شيفرةPicassoIA
Granite 8B Code 128K128K توكنشيفرة فقطPicassoIA
Granite 20B Code 8K8K توكنشيفرة فقطPicassoIA
DeepSeek R1128K توكنشيفرة + استدلالPicassoIA
Claude 4 Sonnet200K توكنشيفرة + كتابةPicassoIA
Kimi K2 Instruct128K توكنالبرمجة الوكيليةPicassoIA

لماذا تتفوق عليه النماذج الأحدث

حُسّن Codex لمهمة واحدة: التنبؤ بالشيفرة التالية. أما النماذج الأحدث فتجمع توليد الشيفرة مع استدلال سلسلة الأفكار (chain-of-thought reasoning)، أي أنها تعالج المشكلة خطوة بخطوة قبل إنتاج الشيفرة. وهذا يسدّ الفجوة في مهام البرمجة متعددة الخطوات التي لا تكفي فيها مطابقة الأنماط وحدها.

يتميز DeepSeek R1 هنا، فهو ينتج مسارات استدلال مرئية، بحيث تستطيع تتبّع السبب الدقيق لبنائه الشيفرة بطريقة معينة. كما أن Claude 4 Sonnet يشرح شيفرته بلغة طبيعية دون أن يُطلب منه ذلك، ما يجعل مراجعة المخرجات المولّدة بالذكاء الاصطناعي أسرع بكثير.

شاشة حاسوب محمول تعرض محرر شيفرة مع لوحة اقتراحات الإكمال التلقائي بالذكاء الاصطناعي

كيف تستخدم نماذج الشيفرة بالذكاء الاصطناعي على PicassoIA

النماذج التي تفوّقت على Codex متاحة كلها ضمن مجموعة النماذج اللغوية الكبيرة على PicassoIA. لا مفاتيح API تحتاج إلى إدارتها، ولا إعداد لبيئة محلية. إليك كيف تستخدمها في مهام توليد الشيفرة الفعلية.

خطوة بخطوة مع Granite 8B Code Instruct

Granite 8B Code Instruct 128K هو نموذج IBM المخصص للشيفرة، ومدرَّب خصيصًا على مهام البرمجة، ومنها التوليد والتصحيح والشرح وإعادة الهيكلة.

  1. افتح Granite 8B Code Instruct 128K على PicassoIA
  2. في حقل الأمر النصي، الصق توقيع دالتك أو صف ما تحتاجه بلغة طبيعية
  3. أضف السياق المناسب: اللغة، وأي أطر عمل مستخدمة، وما الذي يجب أن تعيده الدالة
  4. اضغط توليد. للدوال المعقدة، أضف متابعة تطلب فيها كتابة اختبارات وحدة لما أنتجه للتو
  5. راجع المخرجات قبل استخدامها. Granite دقيق، لكن منطق عملك يبقى مسؤوليتك وحدك

💡 نصيحة: في مهام إعادة الهيكلة، الصق الدالة الحالية أولًا، ثم أضف: "أعد كتابة هذه لمعالجة [الحالة الحدّية] مع الإبقاء على الواجهة نفسها."

استخدام GPT 4.1 لمراجعة الشيفرة ذات السياق الطويل

يتألق GPT 4.1 حين تمتد المهمة عبر ملفات متعددة. تتيح له نافذته البالغة مليون توكن أن تلصق وحدات كاملة أو ملفات مترابطة معًا، وتطلب منه الاستدلال عبرها جميعًا في وقت واحد. وهذه هي المهمة التي قصّر فيها Codex بوضوح، وحيث يقدّم GPT 4.1 تجربة مختلفة فعلًا.

استخدمه في:

  • إعادة الهيكلة عبر الملفات: الصق نماذج البيانات ومعالجات API معًا، واطلب إعادة هيكلة موحّدة
  • ملاحظات على البنية: صف نظامك واسأل أي الأنماط تنطبق عليه
  • مراجعة الأمان: الصق الفرق (diff) واطلب الثغرات الأمنية ومشكلات المنطق

مكتب منزلي مزدحم لمبرمج، فيه شاشتان وفنجان قهوة، في فترة بعد الظهر

سير عمل واقعي: التطوير بمساعدة الذكاء الاصطناعي

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

كتابة الاختبارات بالأوامر النصية للذكاء الاصطناعي

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

نمط أمر نصي مفيد:

Given this function:
[paste function]

Write pytest unit tests covering:
- The happy path
- Empty input
- Edge case: [specific case you are worried about]
- Error conditions

يتعامل Kimi K2 Instruct مع هذا النمط بشكل جيد بصفة خاصة. دُرّب مع وضع سير عمل البرمجة الوكيلية في الاعتبار، وهذا يعني أنه ينتج مجموعات اختبار متسقة ذاتيًا، بدلًا من دوال اختبار منفصلة لا تشترك في التجهيزات (fixtures) أو الإعدادات.

إعادة هيكلة الشيفرة القديمة

إعادة الهيكلة تحدٍّ مختلف عن التوليد. يحتاج النموذج إلى فهم الشيفرة الموجودة قبل تحسينها، ولهذا يصبح حجم نافذة السياق العامل الحاسم.

الصق الوحدة القديمة، وصف المشكلة، واطلب نسخة معاد هيكلتها بالواجهة الخارجية نفسها. يتعامل كل من Claude 4.5 Sonnet و GPT 4.1 مع هذا بشكل جيد، لأنهما يستطيعان إبقاء الدالة الأصلية كاملة في الانتباه أثناء توليد البديل، بدلًا من التخمين فيما كان موجودًا من قبل.

مطور يراجع الشيفرة على شاشة عريضة من زاوية فوق الكتف

الطريقة الصحيحة لكتابة الأوامر للشيفرة

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

السياق هو كل شيء

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

أمر بسياق أدنى:

Write a function to parse CSV files

أمر بسياق فعّال:

Python 3.11, using the csv module (not pandas).
Write a function parse_csv(filepath: str) -> list[dict]
that reads a CSV with a header row and returns a list of dicts.
Handle FileNotFoundError and return an empty list if the file is empty.

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

3 أنماط أوامر تنجح

  1. البدء بالتوقيع: أعطِ توقيع الدالة وdocstring، واطلب من النموذج ملء الجسم. هذا يقيّد المخرجات بواجهتك الموجودة.
  2. القيادة بالاختبارات: أعطِ الاختبارات أولًا، واطلب التطبيق الذي ينجح فيها. هذا يفرض السلوك الصحيح منذ البداية.
  3. الشرح ثم الكتابة: اطلب من النموذج أن يذكر نهجه في جملة واحدة قبل الكتابة. هذا يكشف سوء الفهم قبل أن تضطر إلى قراءة 50 سطرًا من مخرجات خاطئة.

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

منظر جوي من الأعلى لمساحة عمل مطور بلوحة مفاتيح ووثائق مطبوعة لمراجعة الشيفرة

كيف غيّر حجم نافذة السياق كل شيء

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

كان Codex عند 8K توكن قادرًا على معالجة نحو 400 إلى 600 سطر من الشيفرة. وهذا يكفي للدوال المنفردة، لكنه ينهار فورًا في أي شيء يشمل ملفات متعددة تتشارك أنواعًا مشتركة، أو معالجات API تشير إلى نماذج قواعد البيانات، أو اختبارات تكامل تمتد عبر عدة وحدات.

يطابق Granite 20B Code Instruct 8K نافذة سياق Codex، لكنه يأتي بعدد معاملات أكبر بكثير وبمجموعة تدريب أحدث، ما يجعل مخرجاته لكل توكن أدق بكثير. أما Granite 8B Code Instruct 128K فيبادل عدد المعاملات الخام بالمدى: 128K توكن في نموذج بُني خصيصًا لمهام الشيفرة منذ البداية.

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

يدا مطورة تمسكان هاتفًا ذكيًا يعرض مقطع شيفرة على طاولة في مقهى

ماذا يضيف الاستدلال إلى توليد الشيفرة

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

تعمل نماذج مثل DeepSeek R1 و GPT 5 عبر سلسلة من الأفكار الوسيطة قبل إنتاج الشيفرة. وهذا يحدث فرقًا حقيقيًا في:

  • الخوارزميات ذات الصحة غير الواضحة: الترتيب، والتنقل في الرسوم البيانية، والبرمجة الديناميكية
  • الشيفرة المتزامنة: حالات التسابق (race conditions) تتطلب استدلالًا على الترتيب، لا مجرد مطابقة أنماط من أمثلة سابقة
  • المسارات الحساسة أمنيًا: تدفقات المصادقة، وتنقية المدخلات، واستخدام التشفير، كلها تستفيد من تحليل متأنٍّ خطوة بخطوة

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

💡 ملاحظة عملية: نماذج الاستدلال أبطأ وأغلى لكل توكن. استخدمها للشيفرة الحرجة من حيث الصحة. أما للشيفرة النمطية والاختبارات، فنموذج سريع مثل Claude 4.5 Haiku أكثر كفاءة بكثير.

مطوران يبرمجان معًا على مكتبين متجاورين في مساحة عمل تعاونية مشرقة

ابدأ كتابة الشيفرة بالذكاء الاصطناعي اليوم

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

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

كل نموذج في جدول المقارنة أعلاه متاح الآن على PicassoIA. لا إعداد. لا مفاتيح API. اختر نموذجًا، والصق دالة، وشاهد ما تفعله خلال أقل من دقيقة. جرّب GPT 5 للعمل المعقد عبر الملفات، أو DeepSeek R1 حين تحتاج إلى رؤية الاستدلال، أو Granite 8B Code Instruct 128K لتجربة مركزة وسريعة للشيفرة فقط. والفجوة بين “سمعت عن أدوات البرمجة بالذكاء الاصطناعي” و“أستخدمها كل يوم” لا تتعدى فترة ظهيرة واحدة من التجريب.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة