8. أدوات CLI للبرمجة بالذكاء الاصطناعي (AI Coding CLIs)
3 دقيقة للقراءة

OpenAI Codex

🧠 مقدمة

OpenAI Codex هو نموذج ذكاء اصطناعي متطور من OpenAI، تم تدريبه خصيصاً على الكود البرمجي واللغات الطبيعية. وهو النموذج الذي يُشغل GitHub Copilot.

🔑 النقاط الرئيسية:

  • 🎯 تخصص في الكود - مدرب على ملايين ملفات الكود البرمجي
  • 🌍 دعم لغات متعددة - Python, JavaScript, TypeScript, Ruby, Go, والمزيد
  • 🔄 API مباشر - الوصول عبر OpenAI API دون وسيط
  • 💡 فهم السياق - يفهم التعليمات المعقدة والكود الموجود
  • 🚀 سرعة عالية - توليد كود فوري وفعال

📋 المتطلبات الأساسية

قبل البدء، تأكد من توفر:

  1. OpenAI API Key - احصل عليه من platform.openai.com
  2. Node.js 18+ أو Python 3.8+
  3. اتصال إنترنت - للتواصل مع OpenAI API
  4. فهم أساسي للبرمجة - لفهم المفاهيم

🛠️ التثبيت

Codex ليس أداة CLI مستقلة، بل API تتعامل معه عبر مكتبات. إليك الطرق:

الطريقة 1: باستخدام OpenAI JavaScript SDK (الموصى بها)

# تثبيت المكتبة
npm install openai

# أو باستخدام yarn
yarn add openai

الطريقة 2: باستخدام OpenAI Python SDK

# تثبيت المكتبة
pip install openai

الطريقة 3: استخدام cURL مباشرة

لا حاجة لتثبيت - فقط استخدم الأوامر:

curl https://api.openai.com/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "code-davinci-002",
    "prompt": "Your code prompt here"
  }'

💻 الاستخدام الأساسي

مثال 1: توليد دالة JavaScript بسيطة

const OpenAI = require('openai');
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY
});

async function generateCode() {
  const completion = await openai.completions.create({
    model: "code-davinci-002",
    prompt: "// Create a function to calculate fibonacci numbers\nfunction fibonacci(n) {",
    max_tokens: 100,
    temperature: 0
  });

  console.log(completion.choices[0].text);
}

generateCode();

النتيجة المتوقعة:

  if (n <= 1) {
    return n;
  }
  return fibonacci(n - 1) + fibonacci(n - 2);
}

مثال 2: شرح كود موجود

async function explainCode() {
  const completion = await openai.completions.create({
    model: "code-davinci-002",
    prompt: "Explain what this code does:\n\nfunction quicksort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[0];
  const left = arr.slice(1).filter(x => x < pivot);
  const right = arr.slice(1).filter(x => x >= pivot);
  return [...quicksort(left), pivot, ...quicksort(right)];
}",
    max_tokens: 150,
    temperature: 0
  });

  console.log(completion.choices[0].text);
}

مثال 3: تحويل كود من لغة لأخرى

async function translateCode() {
  const completion = await openai.completions.create({
    model: "code-davinci-002",
    prompt: "Convert this Python code to JavaScript:\n\ndef greet(name):\n    return f'Hello, {name}!'\n\nprint(greet('World'))",
    max_tokens: 100,
    temperature: 0
  });

  console.log(completion.choices[0].text);
}

✨ الميزات الرئيسية

1️⃣ توليد كود من النص

اكتب وصفاً باللغة الطبيعية واحصل على كود عمل:

prompt: "Create a REST API endpoint for user authentication"

2️⃣ إكمال الكود تلقائياً

ابدأ بكتابة كود ودع Codex يكمل:

prompt: "function sortByDate(arr) {"
// Codex completes: "return arr.sort((a, b) => new Date(a.date) - new Date(b.date));}"

3️⃣ إصلاح الأخطاء البرمجية

أرسل كود يحتوي على خطأ واحصل على التصحيح:

prompt: "Fix this bug:\nconst arr = [1, 2, 3];\nconsole.log(arr[10]);"

4️⃣ إضافة توثيق

تلقائياً يضيف تعليقات JSDoc أو docstrings:

prompt: "Add documentation to this function:\nfunction add(a, b) { return a + b; }"

5️⃣ تحسين الكود

اقتراح تحسينات للأداء والقراءة:

prompt: "Refactor this for better performance:\nfunction sum(arr) {
  let total = 0;
  for (let i = 0; i < arr.length; i++) {
    total += arr[i];
  }
  return total;
}"

🎯 حالات الاستخدام الشائعة

السيناريو 1: تعلم لغة برمجة جديدة

const prompt = `// I know Python. Explain JavaScript async/await by comparison with Python's asyncio`;

const completion = await openai.completions.create({
  model: "code-davinci-002",
  prompt: prompt,
  max_tokens: 300,
  temperature: 0.5
});

السيناريو 2: كتابة اختبارات

const prompt = `// Write unit tests for this function using Jest:

function calculateDiscount(price, percentage) {
  if (percentage < 0 || percentage > 100) {
    throw new Error('Invalid percentage');
  }
  return price * (1 - percentage / 100);
}`;

const completion = await openai.completions.create({
  model: "code-davinci-002",
  prompt: prompt,
  max_tokens: 200,
  temperature: 0
});

السيناريو 3: بناء واجهة API

const prompt = `// Create Express.js routes for a blog API with CRUD operations:

// Models:
// - Post: id, title, content, author, createdAt
// - Comment: id, postId, content, author, createdAt`;

const completion = await openai.completions.create({
  model: "code-davinci-002",
  prompt: prompt,
  max_tokens: 500,
  temperature: 0
});

🎨 الإعدادات المتقدمة

التحكم في الإبداع (Temperature)

// إبداع منخفض - كود أكثر تحديداً وموثوقية
temperature: 0      // مثالي للكود الإنتاجي

// إبداع متوسط - توازن بين الإبداع والموثوقية
temperature: 0.5    // جيد للاستكشاف

// إبداع عالي - كود أكثر تنوعاً
temperature: 1      // مفيد للعصف الذهني

تحديد طول الاستجابة

max_tokens: 100     // استجابة قصيرة
max_tokens: 500     // استجابة متوسطة
max_tokens: 2000    // استجابة طويلة

استخدام Stop Sequences

stop: ["\n\n", "END"]  // إيقاف عند لقاء هذه التسلسلات

💰 التسعير

النموذجالإدخال (لكل 1K token)الإخراج (لكل 1K token)
Code Davinci-002$0.02$0.02
Code Cushman-001$0.02$0.02
GPT-4$0.03$0.06

ملاحظة: 1,000 token ≈ 750 كلمة إنجليزية

أمثلة على التكلفة:

  • توليد دالة بسيطة (100 tokens): **$0.002**
  • إكمال ملف (1000 tokens): **$0.02**
  • مراجعة كود كبير (5000 tokens): **$0.10**

🆚 المقارنة مع البدائل

الميزةOpenAI CodexClaude CLICopilot CLI
جودة توليد الكود⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
فهم السياق⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
سهولة التثبيت⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CLI مباشر❌ (يتطلب برمجة)
التكلفة💰💰💰💰💰💰💰
دعم اللغات🌍🌍🌍🌍🌍🌍🌍🌍🌍🌍🌍🌍🌍

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

✅ افعل:

  1. كن محدداً في أوامرك

    // ❌ ضعيف
    "make a function"
    
    // ✅ قوي
    "Create a function that validates email addresses using regex"
    
  2. قدم سياقاً عندما تحتاج

    `// I'm building a React app with TypeScript
    // Create a custom hook for fetching user data`
    
  3. استخدم temperature=0 للكود الإنتاجي

  4. راجع الكود دائماً قبل استخدامه

  5. اختبر تدريجياً - ابدأ بطلبات صغيرة

❌ لا تفعل:

  1. لا ترسل معلومات حساسة (كلمات مرور، مفاتيح API)

  2. لا تعتمد كلياً على Codex بدون فهم

  3. لا تستخدم temperature=1 للكود الحرج

  4. تنسخ وتلصق بدون مراجعة

  5. لا تتوقع الكمال من المحاولة الأولى


🔧 استكشاف الأخطاء

"Invalid API Key"

# تحقق من أن المفتاح صحيح
echo $OPENAI_API_KEY

# أو أعد تعيينه
export OPENAI_API_KEY='sk-...'

"Rate Limit Exceeded"

// أضف تأخيراً بين الطلبات
await new Promise(resolve => setTimeout(resolve, 1000));

"Model Not Found"

// تأكد من استخدام نموذج صحيح
model: "code-davinci-002"  // ✅ صحيح
model: "codex-v1"          // ❌ خطأ

📚 موارد إضافية

الوثائق الرسمية:

أمثلة:

مجتمعات:


🎯 ملخص سريع

# تثبيت
npm install openai

# إعداد
export OPENAI_API_KEY='sk-...'

# توليد كود
node -e "
const openai = require('openai');
const client = new openai({apiKey: process.env.OPENAI_API_KEY});
(async () => {
  const completion = await client.completions.create({
    model: 'code-davinci-002',
    prompt: '// Hello World in Python\nprint',
    max_tokens: 50
  });
  console.log(completion.choices[0].text);
})();
"

🚀 الخطوات التالية

  1. احصل على API Key من platform.openai.com
  2. جرب الأمثلة أعلاه
  3. ابني مشروعك الأول مع Codex
  4. استكشف النماذج الأخرى مثل GPT-4

هل أنت مستعد لبدء استخدام Codex؟

🎉 ابدأ الآن بـ:

npm install openai

وبناء الأشياء المذهلة! 🚀✨