ChatGPT API على Swift: التكامل في 30 دقيقة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا Swift وChatGPT هما حب من أول commit



تخيل: أنت تكتب تطبيقًا بلغة Swift، وفجأة تدرك أنه يفتقر إلى "العقل". يسأل المستخدم سؤالاً، وكودك صامت كالسمكة على الجليد. هل هذا مألوف؟ حتى وقت قريب، كانت إضافة الذكاء إلى تطبيق iOS صعبة: كان عليك إما كتابة نموذج NLP خاص بك أو ربط مكتبات ثقيلة. الآن أصبح الأمر مختلفًا تمامًا.



ChatGPT API على Swift ليست مجرد ميزة عصرية، بل أداة حقيقية يمكنها تحويل تطبيقك إلى مساعد ذكي. هل تريد إنشاء مساعد AI، أو مولد محتوى، أو مجرد روبوت محادثة؟ كل هذا يمكن تحقيقه في أمسية واحدة. في هذه المقالة، سأوضح كيفية ربط OpenAI API في Swift من الصفر، بدون سحر زائد أو بنى معقدة. هيا بنا!



ماذا سنحتاج؟



قبل أن نغوص في الكود، دعنا نفهم الأدوات. للعمل مع ChatGPT في iOS تحتاج فقط إلى ثلاثة أشياء:



  • مفتاح API من OpenAI — سجل في platform.openai.com، وأنشئ مفتاحًا في قسم API Keys. احتفظ به كعينك — لا ترفعه إلى Git!
  • Xcode 15+ — لاستخدام Swift الحديث مع async/await.
  • فهم أساسي لـ SwiftUI أو UIKit — سأعرض مثالاً على SwiftUI، لكن منطق العمل مع الشبكة عالمي.


هل أنت مستعد؟ إذًا افتح Xcode، وأنشئ مشروعًا جديدًا (تطبيق iOS، SwiftUI، اللغة — Swift) ولنبدأ كتابة الكود.



بنية الطلب: كيف "تتحدث" مع ChatGPT بلغة Swift



توفر OpenAI REST API. هذا يعني أننا سنرسل طلبات HTTP ونتلقى ردود JSON. كل التواصل يتم عبر نقطة النهاية https://api.openai.com/v1/chat/completions. نحتاج إلى إرسال طلب POST مع جسم يحتوي على مصفوفة من الرسائل (الدور + المحتوى)، والحصول على رد من النموذج.



دعنا ننشئ نموذج بيانات للطلب والرد. هذا مثال مثالي لاستخدام Decodable في Swift.



// نموذج لرسالة واحدةstruct Message: Codable {    let role: String      // "system", "user" أو "assistant"    let content: String}

// هيكل الطلب إلى APIstruct ChatGPTRequest: Codable { let model: String let messages: [Message] let temperature: Double?

init(model: String = "gpt-4o-mini", messages: [Message], temperature: Double = 0.7) { self.model = model self.messages = messages self.temperature = temperature }}

// هيكل الردstruct ChatGPTResponse: Codable { struct Choice: Codable { let message: Message let finishReason: String?

enum CodingKeys: String, CodingKey { case message case finishReason = "finish_reason" } }

let choices: [Choice]}


لاحظ CodingKeys — في Swift، تُكتب أسماء الخصائص بصيغة camelCase، بينما يعيد API بصيغة snake_case. هذه طريقة قياسية لـ العمل مع API في Swift.



طبقة الشبكة: URLSession + async/await



الآن الجزء الممتع — إرسال الطلب. سأستخدم async/await الحديث لجعل الكود نظيفًا وقابلاً للقراءة. لا إغلاقات ولا مفوضين — فقط الجمال.



class ChatGPTService {

private let apiKey: String private let session = URLSession.shared private let baseURL = URL(string: "https://api.openai.com/v1/chat/completions")!

init(apiKey: String) { self.apiKey = apiKey }

func sendMessage(_ text: String) async throws -> String {

// تشكيل الرسائل: توجيه النظام + طلب المستخدم let systemMessage = Message(role: "system", content: "أنت مساعد مفيد. أجب بإيجاز وفي صلب الموضوع.") let userMessage = Mess

المدونات

توصيات الكتب