دمج PHP مع ChatGPT: دليل خطوة بخطوة لتكامل API

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا يحتاج مطور PHP إلى ChatGPT؟

\n\n

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

\n\n

اليوم، دمج ChatGPT API مع PHP ليس علمًا معقدًا، بل مهمة روتينية يمكن لأي مطور ملم بأساسيات اللغة إتقانها. وسأثبت لك ذلك.

\n\n

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

\n\n

ماذا نحتاج للبدء؟

\n\n

قبل كتابة الكود، تأكد من توفر المتطلبات التالية:

\n\n
    \n
  • PHP 8.0+ — الإصدارات الأقدم قد تواجه مشاكل مع cURL وJSON.
  • \n
  • إضافة cURL — فعّلها في ملف php.ini (عادةً مفعّلة افتراضيًا).
  • \n
  • مفتاح API من OpenAI — سجّل على platform.openai.com، انتقل إلى قسم API keys وأنشئ مفتاحًا سريًا جديدًا.
  • \n
  • القليل من الصبر — أحيانًا يستغرق API وقتًا للرد، خاصة على الطلبات المعقدة.
  • \n
\n\n

هام: احفظ مفتاح API بأمان. لا تضعه مباشرة في الكود الذي قد ينتهي في مستودع عام. استخدم ملفات .env أو متغيرات البيئة للخادم.

\n\n

كتابة أول طلب إلى ChatGPT باستخدام PHP

\n\n

لنبدأ بالأساسيات: نرسل رسالة واحدة ونتلقى ردًا. هذه هي القاعدة التي يُبنى عليها كل العمل مع API.

\n\n
<?php\n// الإعدادات\n$apiKey = 'sk-مفتاحك_السري_جداً';\n$url = 'https://api.openai.com/v1/chat/completions';\n\n// بيانات الطلب\n$data = [\n    'model' => 'gpt-3.5-turbo', // يمكنك استخدام gpt-4 إذا كان متاحًا\n    'messages' => [\n        [\n            'role' => 'user',\n            'content' => 'أخبرني نكتة عن المبرمجين باللغة العربية'\n        ]\n    ],\n    'temperature' => 0.7, // كلما زاد الرقم، زاد الإبداع\n    'max_tokens' => 500   // أقصى طول للرد\n];\n\n// تهيئة cURL\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_POST, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'Content-Type: application/json',\n    'Authorization: Bearer ' . $apiKey\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n\n// إرسال الطلب\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n// معالجة الرد\nif ($httpCode === 200) {\n    $result = json_decode($response, true);\n    $reply = $result['choices'][0]['message']['content'];\n    echo "ChatGPT يقول: " . $reply;\n} else {\n    echo "خطأ! رمز HTTP: " . $httpCode . "<br>";\n    echo "رد الخادم: " . $response;\n}\n?>
\n\n

هل شغّلته؟ تهانينا، لقد كتبت أول تكامل ChatGPT API مع PHP! إذا كان كل شيء صحيحًا، سترى نكتة مضحكة من الذكاء الاصطناعي.

\n\n

تحليل الكود بالتفصيل

\n\n

دعنا نرى ما يحدث هنا لتتمكن من تكييف هذا الكود مع مهامك بسهولة.

\n\n

هيكل الطلب

\n\n

يتوقع API من OpenAI JSON يحتوي على عدة حقول إلزامية:

\n\n
    \n
  • model — أي نموذج سيجيب. gpt-3.5-turbo هو الخيار الأمثل لمعظم المهام: سريع ورخيص. gpt-4 أذكى لكنه أغلى وأبطأ.
  • \n
  • messages — مصفوفة من الرسائل. كل رسالة تحتوي على role (system, user, assistant) و content (النص).
  • \n
  • temperature — يتحكم في درجة الإبداع (0 = دقيق، 1 = إبداعي).
  • \n
  • max_tokens — الحد الأقصى لعدد الرموز في الرد.
  • \n
\n\n

بعد إرسال الطلب، نتحقق من كود HTTP. إذا كان 200، نستخرج الرد من choices[0].message.content. وإلا، نعرض الخطأ.

\n\n

إدارة سياق المحادثة

\n\n

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

\n\n
<?php\n$messages = [\n    ['role' => 'system', 'content' => 'أنت مساعد ذكي ومفيد.'],\n    ['role' => 'user', 'content' => 'ما هي عاصمة فرنسا؟'],\n    ['role' => 'assistant', 'content' => 'عاصمة فرنسا هي باريس.'],\n    ['role' => 'user', 'content' => 'وما هي أشهر معالمها؟']\n];\n\n$data = [\n    'model' => 'gpt-3.5-turbo',\n    'messages' => $messages,\n    'temperature' => 0.7\n];\n\n// باقي الكود كما هو...\n?>
\n\n

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

\n\n

معالجة الأخطاء والنصائح

\n\n

لا تنسَ معالجة الأخطاء الشائعة مثل:

\n
    \n
  • 401 Unauthorized: مفتاح API غير صحيح.
  • \n
  • 429 Too Many Requests: تجاوزت حد الطلبات المسموح به.
  • \n
  • 500 Internal Server Error: مشكلة من جانب OpenAI.
  • \n
\n\n

نصيحة احترافية: استخدم try-catch للتعامل مع الاستثناءات، وأضف تأخيرًا (sleep) بين الطلبات لتجنب تجاوز الحدود.

\n\n

الخلاصة

\n\n

لقد تعلمت اليوم كيفية دمج ChatGPT API مع PHP من الصفر. الآن يمكنك بناء chatbot ذكي، مساعد آلي، أو حتى أداة لتوليد المحتوى. ابدأ بتجربة الكود أعلاه، ثم طوره ليناسب احتياجاتك. العالم بين يديك!

المدونات

توصيات الكتب