لماذا C++ وChatGPT ليسا غريبين، بل قويان
\n\nعندما يتعلق الأمر بدمج الشبكات العصبية، يفكر الجميع فجأة في Python. نعم، لدى مستخدمي Python مكتبات أنيقة مثل openai و requests. ولكن ماذا تفعل إذا كان مشروعك عبارة عن خادم عالي التحميل بلغة C++، أو تطبيق سطح مكتب، أو محرك ألعاب؟ ألن تعيد كتابة كل شيء بلغة Python؟
الخبر السار: التكامل مع ChatGPT API بلغة C++ ليس سحرًا، بل هو مهمة هندسية قابلة للحل تمامًا. ستحصل على سرعة الكود الأصلي، والتحكم في الذاكرة، وإمكانية تضمين وظائف الذكاء الاصطناعي مباشرة في قلب تطبيقك. لا حاجة لطبقات وسيطة بلغة Python أو Node.js - فقط C++ نقي وعمل مباشر مع API.
\n\nفي هذه المقالة، سنشرح كيفية كتابة عميل لـ OpenAI API بلغة C++ من الصفر. ستتعلم كيفية إرسال طلبات HTTP، ومعالجة JSON، والحصول على ردود من ChatGPT. هيا بنا!
\n\nما سنحتاجه: الأدوات
\n\nللعمل مع ChatGPT API بلغة C++، نحتاج إلى حل مهمتين أساسيتين:
\n\n- \n
- إرسال طلبات HTTP (يفضل مع دعم HTTPS) \n
- تحليل وإنشاء JSON \n
سنستخدم مكتبتين موثوقتين:
\n\n- \n
- libcurl - المعيار الفعلي لـ HTTP في C/C++. موجود في أي مدير حزم. \n
- nlohmann/json - مكتبة JSON حديثة ومريحة. ما عليك سوى تضمين ملف الرأس. \n
سنحتاج أيضًا إلى مفتاح API من OpenAI. إذا لم يكن لديك واحدًا بعد، تفضل بزيارة platform.openai.com، وسجل، وأنشئ مفتاحًا في قسم API keys. احتفظ به بأمان، ويفضل أن يكون في متغير بيئة.
هندسة عميل بسيط
\n\nسيفعل عميلنا شيئًا واحدًا: إرسال رسالة المستخدم إلى ChatGPT والحصول على الرد. يتم كل التواصل مع API من خلال نقطة النهاية https://api.openai.com/v1/chat/completions باستخدام طريقة POST.
سيكون الهيكل كالتالي:
\n\n- \n
- إنشاء JSON مع معلمات الطلب (النموذج، الرسائل، درجة الحرارة) \n
- إرسال طلب POST عبر libcurl \n
- استلام رد JSON وتحليله \n
- استخراج نص رد المساعد \n
يبدو الأمر بسيطًا؟ لنكتب الكود.
\n\nالخطوة 1: تحضير طلب JSON
\n\nلنبدأ بدالة تقوم بإنشاء جسم الطلب. سنستخدم مكتبة nlohmann/json. تثبيتها سهل للغاية: قم بتنزيل json.hpp من GitHub وضعه في مجلد المشروع.
#include <string>\n#include "json.hpp"\n\nusing json = nlohmann::json;\n\nstd::string build_chat_request(const std::string& user_message) {\n json request;\n request["model"] = "gpt-3.5-turbo";\n\n json messages = json::array();\n json user_msg;\n user_msg["role"] = "user";\n user_msg["content"] = user_message;\n messages.push_back(user_msg);\n\n request["messages"] = messages;\n request["temperature"] = 0.7;\n request["max_tokens"] = 1024;\n\n return request.dump();\n}\n\nلاحظ: نحن نستخدم النموذج gpt-3.5-turbo - هذا هو التوازن الأمثل بين الجودة والسرعة. إذا كنت بحاجة إلى شيء أقوى، يمكنك تحديد gpt-4، لكنه سيكون أغلى.
الخطوة 2: إرسال طلب HTTP باستخدام libcurl
\n\nالآن الجزء الممتع - العمل مع طلبات HTTP بلغة C++. يتطلب libcurl بعض التهيئة، لكن بشكل عام كل شيء مباشر.
\n\nلنكتب دالة تأخذ جسم الطلب ومفتاح API، وتعيد الرد الخام من الخادم.
\n\n#include <curl/curl.h>\n#include <string>\n\nsize_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {\n size_t total_size = size * nmemb;\n output->append((char*)contents, total_size);\n return total_size;\n}\n\nstd::string send_chat_request(const std::string& json_body, const