Go يلتقي الذكاء الاصطناعي: لماذا هذا مهم للمطور
\n\nلقد تغير عالم التطوير. إذا كنا في السابق نكتب الكود يدويًا ونقضي ساعات في البحث عن الأخطاء، فإن الشبكات العصبية اليوم تتولى المهام الروتينية. ولكن كيف يعمل هذا عمليًا؟ هل يمكن الجمع بين قوة Go وChatGPT في مشروع واحد؟ الإجابة هي نعم، وهذا أسهل مما يبدو.
\n\nGolang هي لغة مصممة للأداء والتوازي. وChatGPT هو نموذج قادر على توليد النصوص والإجابة على الأسئلة وحتى كتابة الكود. معًا يشكلان ثنائيًا يمكنه أتمتة التوثيق، وتوليد الاختبارات، وتحليل الأخطاء، وأكثر من ذلك بكثير. في هذه المقالة، سنشرح كيفية استخدام ChatGPT في التطوير بلغة Go مع أمثلة كود حقيقية.
\n\nمن أين نبدأ: إعداد البيئة للعمل مع OpenAI API
\n\nقبل كتابة الكود، تحتاج إلى الوصول إلى OpenAI API. هذه واجهة REST قياسية يمكن استدعاؤها بسهولة من أي لغة، بما في ذلك Go.
\n\nالخطوة 1: الحصول على مفتاح API
\nسجل في platform.openai.com، وأنشئ مفتاحًا سريًا جديدًا في قسم API Keys. احفظه - ستحتاجه لجميع الطلبات.
\n\nالخطوة 2: إنشاء هيكل المشروع الأساسي بلغة Go
\nأنشئ وحدة جديدة وقم بتثبيت التبعيات:
\n\nmkdir go-chatgpt\ncd go-chatgpt\ngo mod init go-chatgpt\n\nسنحتاج إلى عميل HTTP. يمكن استخدام net/http القياسي، ولكن للراحة سنضيف مكتبة للعمل مع JSON:
go get github.com/go-resty/resty/v2\n\nكتابة أول طلب إلى ChatGPT بلغة Go
\n\nأسهل طريقة لدمج ChatGPT هي إرسال طلب POST إلى نقطة النهاية https://api.openai.com/v1/chat/completions. لنلقِ نظرة على مثال حيث نطلب من النموذج شرح ما هي goroutine في Go.
مثال 1: طلب بسيط للنموذج
\n\npackage main\n\nimport (\n\t"encoding/json"\n\t"fmt"\n\t"os"\n\n\t"github.com/go-resty/resty/v2"\n)\n\ntype Message struct {\n\tRole string `json:"role"`\n\tContent string `json:"content"`\n}\n\ntype Request struct {\n\tModel string `json:"model"`\n\tMessages []Message `json:"messages"`\n}\n\ntype Response struct {\n\tChoices []struct {\n\t\tMessage Message `json:"message"`\n\t} `json:"choices"`\n}\n\nfunc main() {\n\tapiKey := os.Getenv("OPENAI_API_KEY")\n\tif apiKey == "" {\n\t\tfmt.Println("خطأ: قم بتعيين متغير OPENAI_API_KEY")\n\t\treturn\n\t}\n\n\tclient := resty.New()\n\n\treq := Request{\n\t\tModel: "gpt-3.5-turbo",\n\t\tMessages: []Message{\n\t\t\t{Role: "user", Content: "اشرح ما هي goroutine في Go بكلمات بسيطة"},\n\t\t},\n\t}\n\n\treqBody, _ := json.Marshal(req)\n\n\tvar resp Response\n\t_, err := client.R().\n\t\tSetHeader("Authorization", "Bearer "+apiKey).\n\t\tSetHeader("Content-Type", "application/json").\n\t\tSetBody(string(reqBody)).\n\t\tSetResult(&resp).\n\t\tPost("https://api.openai.com/v1/chat/completions")\n\n\tif err != nil {\n\t\tfmt.Println("خطأ في الطلب:", err)\n\t\treturn\n\t}\n\n\tif len(resp.Choices) > 0 {\n\t\tfmt.Println("رد ChatGPT:")\n\t\tfmt.Println(resp.Choices[0].Message.Content)\n\t}\n}\n\nقم بتشغيل السكريبت:
\nexport OPENAI_API_KEY="sk-مفتاحك"\ngo run main.go\n\nستحصل على رد مفصل من الشبكة العصبية. هذا هو الأساس الذي يُبنى عليه أي دمج ChatGPT مع Go.
\n\nسيناريوهات متقدمة: إنشاء مساعد ذكاء اصطناعي للمطور
\n\nمجرد إرسال الطلبات أمر ممل. دعونا نصنع شيئًا مفيدًا: سنكتب مساعدًا يأخذ كود Go كمدخل ويعيد نسخته المحسّنة مع تعليقات.
\n\nمثال 2: مراجع كود ذكي بلغة Golang
\n\npackage main\n\nimport (\n\t"bufio"\n\t"encoding/json"\n\t"fmt"\n\t"os"\n\t"strings"\n\n\t"github.com/go-resty/re