Go और ChatGPT: ये कॉम्बिनेशन क्यों है जबरदस्त?
\nक्या आपने कभी सोचा है कि अपनी Go प्रोग्राम को कैसे इंसानों की तरह बातचीत करना सिखाया जाए? या फिर आप कंटेंट जनरेशन को ऑटोमेट करना चाहते हैं, एक स्मार्ट असिस्टेंट बनाना चाहते हैं, या बस अपने सर्विस में एक नया फीचर जोड़ना चाहते हैं? Go में ChatGPT API इंटीग्रेशन सिर्फ एक ट्रेंड नहीं है, बल्कि एक शक्तिशाली टूल है जो आर्टिफिशियल इंटेलिजेंस की दुनिया के दरवाजे खोलता है। Go अपनी स्पीड और सादगी के लिए जाना जाता है, जो न्यूरल नेटवर्क के लिए तेज़ और भरोसेमंद रिक्वेस्ट बनाने के लिए परफेक्ट है। इस आर्टिकल में हम सिर्फ थ्योरी नहीं पढ़ेंगे, बल्कि रियल कोड लिखेंगे जिसे आप तुरंत अपने प्रोजेक्ट्स में इस्तेमाल कर सकते हैं।
\n\nशुरुआत करने के लिए क्या चाहिए?
\nकोड में कूदने से पहले, पक्का कर लें कि आपके पास सब कुछ तैयार है। आपको चाहिए:
\n- \n
- Go इंस्टॉल हो (वर्शन 1.21 या उससे ऊपर, ताकि सभी नई सुविधाओं का उपयोग कर सकें)। \n
- OpenAI API-की। इसे OpenAI प्लेटफॉर्म से प्राप्त करें। इसे बैंक कार्ड के पासवर्ड की तरह गुप्त रखें! \n
- HTTP रिक्वेस्ट और Go में डेटा स्ट्रक्चर की बुनियादी समझ। \n
इस आर्टिकल का सारा कोड हम एक ही फाइल main.go में लिखेंगे, ताकि स्ट्रक्चर जटिल न हो। चलिए शुरू करते हैं!
स्टेप 1: HTTP क्लाइंट बनाएं और पहला रिक्वेस्ट भेजें
\nहमारे इंटीग्रेशन का दिल होगा स्टैंडर्ड net/http पैकेज। यह हल्का, तेज़ है और इसमें किसी थर्ड-पार्टी डिपेंडेंसी की ज़रूरत नहीं है। हमारा काम है https://api.openai.com/v1/chat/completions एंडपॉइंट पर सही बॉडी और हेडर के साथ POST रिक्वेस्ट भेजना।
रिक्वेस्ट की स्ट्रक्चर
\nChatGPT API एक खास JSON फॉर्मेट की उम्मीद करता है। आइए Go स्ट्रक्चर बनाएं जो इस फॉर्मेट से बिल्कुल मेल खाए:
\npackage main\n\nimport (\n "bytes"\n "encoding/json"\n "fmt"\n "io"\n "net/http"\n "os"\n)\n\ntype ChatMessage struct {\n Role string `json:"role"`\n Content string `json:"content"`\n}\n\ntype ChatRequest struct {\n Model string `json:"model"`\n Messages []ChatMessage `json:"messages"`\n}\n\ntype ChatResponse struct {\n Choices []struct {\n Message ChatMessage `json:"message"`\n } `json:"choices"`\n}\njson:"..." टैग्स पर ध्यान दें। ये सुनिश्चित करते हैं कि Go हमारे डेटा को सही तरीके से JSON में "पैक" (सीरियलाइज़) करे, जिसे OpenAI समझ सके।
रिक्वेस्ट भेजने वाला फंक्शन
\nअब एक फंक्शन लिखते हैं जो सारा काम करेगा: रिक्वेस्ट बनाना, भेजना और रिस्पॉन्स को पार्स करना।
\nfunc askChatGPT(apiKey, prompt string) (string, error) {\n reqBody := ChatRequest{\n Model: "gpt-3.5-turbo",\n Messages: []ChatMessage{\n {Role: "user", Content: prompt},\n },\n }\n\n jsonData, err := json.Marshal(reqBody)\n if err != nil {\n return "", fmt.Errorf("मार्शलिंग में त्रुटि: %w", err)\n }\n\n request, err := http.NewRequest("POST", "https://api.openai.com/v1/chat/completions", bytes.NewBuffer(jsonData))\n if err != nil {\n return "", fmt.Errorf("रिक्वेस्ट बनाने में त्रुटि: %w", err)\n }\n\n request.Header.Set("Content-Type", "application/json")\n request.Header.Set("Authorization", "Bearer "+apiKey)\n\n client := &http.Client{}\n response, err := client.Do(request)\n if err != nil {\n return "", fmt.Errorf("रिक्वेस्ट भेजने में त्रुटि: %w", err)\n }\n defer response.Body.Close()\n\n body, err := io.ReadAll(response.Body)\n if err != nil {\n return "", fmt.Errorf("रिस्पॉन्स पढ़ने में त्रुटि: %w", err)\n }\n\n // स्टेटस-कोड जांचें\n if response.StatusCode != http.StatusOK {\n return "", fmt.Errorf("API ने त्रुटि दी: %s, बॉडी: %s", response.Status, string(body))\n }\n\n var chatResp ChatRes