C++ और ChatGPT — यह अजीब नहीं, बल्कि शक्तिशाली क्यों है
\n\nजब न्यूरल नेटवर्क के एकीकरण की बात आती है, तो हर कोई किसी कारण से तुरंत Python याद करता है। हाँ, Python डेवलपर्स के पास openai और requests जैसी सुंदर लाइब्रेरी हैं। लेकिन क्या होगा यदि आपका प्रोजेक्ट C++ पर एक उच्च-लोड सर्वर, डेस्कटॉप एप्लिकेशन या गेम इंजन है? क्या इसे Python पर फिर से लिखना होगा?
अच्छी खबर: C++ पर ChatGPT API के साथ एकीकरण — यह कोई जादू नहीं, बल्कि पूरी तरह से हल करने योग्य इंजीनियरिंग कार्य है। आपको नेटिव कोड की गति, मेमोरी पर नियंत्रण और अपने एप्लिकेशन के कोर में AI फ़ंक्शन एम्बेड करने की क्षमता मिलती है। Python या Node.js पर कोई मध्यवर्ती परत नहीं — केवल शुद्ध C++ और API के साथ सीधा काम।
\n\nइस लेख में, हम देखेंगे कि कैसे OpenAI API के लिए C++ पर एक क्लाइंट शुरू से लिखा जाए। आप सीखेंगे कि HTTP-अनुरोध कैसे भेजें, JSON को कैसे प्रोसेस करें और ChatGPT से प्रतिक्रियाएँ कैसे प्राप्त करें। चलिए शुरू करते हैं!
\n\nहमें क्या चाहिए: उपकरण
\n\nC++ पर ChatGPT API के साथ काम करने के लिए, हमें दो बुनियादी कार्यों को हल करना होगा:
\n\n- \n
- HTTP-अनुरोध भेजना (अधिमानतः HTTPS समर्थन के साथ) \n
- JSON को पार्स और बनाना \n
हम दो सिद्ध लाइब्रेरी का उपयोग करेंगे:
\n\n- \n
- libcurl — C/C++ में HTTP के लिए डी-फैक्टो मानक। यह किसी भी पैकेज मैनेजर में उपलब्ध है। \n
- nlohmann/json — एक आधुनिक, सुविधाजनक JSON-लाइब्रेरी। बस हेडर फ़ाइल शामिल करें। \n
हमें OpenAI से एक API-की भी चाहिए। यदि आपके पास अभी तक नहीं है — platform.openai.com पर जाएँ, पंजीकरण करें और API keys अनुभाग में एक कुंजी बनाएँ। इसे सुरक्षित रखें, सबसे अच्छा — एक पर्यावरण चर में।
सरल क्लाइंट की आर्किटेक्चर
\n\nहमारा क्लाइंट एक काम करेगा: उपयोगकर्ता के संदेश को ChatGPT पर भेजना और प्रतिक्रिया प्राप्त करना। API के साथ सभी संचार एंडपॉइंट https://api.openai.com/v1/chat/completions पर POST विधि के माध्यम से होता है।
संरचना इस प्रकार होगी:
\n\n- \n
- अनुरोध पैरामीटर (मॉडल, संदेश, तापमान) के साथ JSON बनाना \n
- libcurl के माध्यम से POST-अनुरोध भेजना \n
- JSON-प्रतिक्रिया प्राप्त करना और उसे पार्स करना \n
- सहायक के प्रतिक्रिया पाठ को निकालना \n
सरल लगता है? चलिए कोड लिखते हैं।
\n\nचरण 1: JSON-अनुरोध तैयार करना
\n\nहम एक फ़ंक्शन से शुरू करेंगे जो अनुरोध का बॉडी बनाता है। हम nlohmann/json लाइब्रेरी का उपयोग करेंगे। इसे स्थापित करना बहुत आसान है: GitHub से json.hpp डाउनलोड करें और इसे अपने प्रोजेक्ट फ़ोल्डर में रखें।
#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: libcurl के साथ HTTP-अनुरोध भेजना
\n\nअब सबसे दिलचस्प भाग — C++ HTTP अनुरोधों के साथ काम करना। 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