كيف نجمع بين C# وChatGPT: دليل شامل للدمج
\n\nتخيل: تطبيقك بلغة C# يبدأ فجأة ليس فقط في تنفيذ الأوامر، بل في إجراء حوار ذي معنى، وكتابة كود، وترجمة نصوص، أو توليد أفكار. يبدو وكأنه خيال علمي؟ لكنه واقع بالفعل بفضل دمج ChatGPT API في C#. اليوم سأريكم كيف تحولون برنامج وحدة تحكم عادي إلى مساعد ذكي في 15 دقيقة. هيا بنا!
\n\nتوفر OpenAI واجهة REST API قوية تتعامل بشكل ممتاز مع .NET. لا تحتاج إلى أي SDK خارجي - فقط HttpClient القياسي وبعض المكتبات للعمل مع JSON. العملية برمتها تتلخص في أربع خطوات: نحصل على المفتاح، نرسل الطلب، نحلل الرد، ونفرح بالنتيجة.
ما نحتاجه للبدء
\n\nقبل كتابة الكود، دعنا نجهز البيئة. ستحتاج إلى:
\n\n- \n
- Visual Studio 2022 أو JetBrains Rider (لكن يمكنك استخدام .NET SDK العادي + مفكرة) \n
- .NET 6.0 أو أعلى (أنا أستخدم .NET 8 - إنه أسرع) \n
- مفتاح API من OpenAI - سجل في platform.openai.com، اذهب إلى قسم API Keys وأنشئ مفتاحًا سريًا جديدًا. تنبيه: المرة الأولى يعطونك 5 دولارات للاختبار، لكن لا تنسَ الحدود! \n
- مكتبة Newtonsoft.Json أو System.Text.Json (مضمنة في .NET، لكني أفضل Newtonsoft - فهي أوضح) \n
يمكن تثبيت Newtonsoft.Json عبر NuGet: Install-Package Newtonsoft.Json أو عبر مدير الحزم في Visual Studio.
إنشاء أول طلب إلى ChatGPT بلغة C#
\n\nلنبدأ بشيء بسيط: نرسل رسالة إلى النموذج ونتلقى الرد. كل السحر يحدث عبر طلب POST إلى نقطة النهاية https://api.openai.com/v1/chat/completions.
إليك الحد الأدنى من الكود العملي الذي أوصي بحفظه كنقطة انطلاق:
\n\nusing System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\nclass Program\n{\n private static readonly string apiKey = "مفتاحك_هنا"; // لا تظهره لأحد!\n private static readonly string endpoint = "https://api.openai.com/v1/chat/completions";\n\n static async Task Main(string[] args)\n {\n var client = new HttpClient();\n client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");\n\n var requestBody = new\n {\n model = "gpt-3.5-turbo",\n messages = new[]\n {\n new { role = "user", content = "أخبرني نكتة عن المبرمجين" }\n },\n temperature = 0.7,\n max_tokens = 150\n };\n\n var json = JsonConvert.SerializeObject(requestBody);\n var content = new StringContent(json, Encoding.UTF8, "application/json");\n\n var response = await client.PostAsync(endpoint, content);\n var responseString = await response.Content.ReadAsStringAsync();\n\n var responseObject = JObject.Parse(responseString);\n var reply = responseObject["choices"][0]["message"]["content"].ToString();\n\n Console.WriteLine("ChatGPT يقول:");\n Console.WriteLine(reply);\n }\n}\n\n\nتشغله - وتخرج وحدة التحكم شيئًا مثل: "لماذا يخلط المبرمجون بين الهالوين وعيد الميلاد؟ لأن Oct 31 == Dec 25!". مضحك؟ يعمل؟ ممتاز!
\n\nتحليل الكود بالتفصيل
\n\nدعنا نرى ما يحدث هنا. ننشئ HttpClient، ونضيف رأس التفويض - هذه ممارسة قياسية للعمل مع OpenAI API في C#. جسم الطلب هو كائن JSON مع المعلمات:
- \n
- model: نحدد النموذج.
gpt-3.5-turboهو الوسط الذهبي من حيث السعر/الجودة. للمهام المعقدة استخدمgpt-4، لكن كن مستعدًا لدفع المزيد. \n - messages: مصفوفة من الرسائل. كل رسالة لها دور (
userللمستخدم،assistantللمساعد،systemلتحديد السلوك). \n - temperature: يتحكم في عشوائية الردود. 0 = حرفي، 1 = إبداعي فوضوي. 0.7 هو الخيار الأمثل. \n
- max_tokens: الحد الأقصى لطول الرد. 150 كلمة كافية لنكتة أو إجابة قصيرة. \n
بعد إرسال الطلب، نحلل JSON الوارد ونستخرج محتوى الرد من المصفوفة choices. هذا هو جوهر دمج ChatGPT API في C#.