آبل فتحت Foundation Models ببلاش: بدّل بين Claude وGemini من غير ما تلمس كود تطبيقك
المستوى: متوسط — المقال موجّه لمطوّر iOS عنده أساس في Swift وبيقرّر هل يدخّل الذكاء الاصطناعي في تطبيقه دلوقتي ولا يستنى. لو لسه بتبدأ في Swift، في فقرة «المفهوم» مثال مبسّط يقرّبلك الفكرة قبل التفاصيل.
لو كنت بتأجّل إضافة ميزة ذكاء اصطناعي لتطبيقك بسبب فاتورة الـ API، خبر WWDC 2026 بيشيل العائق ده. آبل بتدّي وصول مجاني لنماذجها على Private Cloud Compute لأي مطوّر تطبيقه أقل من مليونين تحميل أول مرة. وفوق كده، بقيت تقدر تبدّل المزوّد — نموذج آبل المحلي، أو Claude، أو Gemini — من غير ما تغيّر منطق تطبيقك.
الخبر باختصار
في 9 يونيو 2026، خلال Platforms State of the Union، آبل أعلنت تحديث إطار Foundation Models بتلات نقاط تهمّك كمطوّر:
- وصول مجاني لنماذج آبل على Private Cloud Compute لكل تطبيق تحت مليونين تحميل أول مرة.
- بروتوكول LanguageModel جديد: واجهة Swift موحّدة تنادي بيها نموذج آبل المحلي أو نماذج سحابية من طرف تالت بنفس الكود.
- دعم إدخال الصور وDynamic Profiles لبناء سير عمل متعدد الوكلاء (multi-agent).
Anthropic وGoogle الاتنين بينشروا حزم Swift رسمية تدّيك نماذجهم. والإطار نفسه آبل قالت هتفتح مصدره (open source) خلال الصيف.
المفهوم: يعني إيه بروتوكول LanguageModel؟
تخيّل مقبس الكهرباء في الحيط. الفيشة موحّدة، فتقدر تشيل شاحن اللابتوب وتحط مكانه شاحن الموبايل في نفس المقبس من غير ما يتغيّر سلوك الحيط. اللي بيتغيّر هو الجهاز ورا الفيشة، مش المقبس نفسه.
بروتوكول LanguageModel هو «المقبس» ده بالظبط. علميًا: هو واجهة (protocol) في Swift بتحدّد شكل التعامل مع أي نموذج — إنشاء جلسة، إرسال prompt، استقبال رد، نداء الأدوات (tool calls)، وإدارة السياق. أي مزوّد (آبل، Anthropic، Google) بيعمل implement للواجهة دي في حزمة Swift Package Manager خاصة بيه. كودك بيتكلم مع الواجهة، مش مع المزوّد مباشرة. النتيجة: تبديل النموذج بيبقى تغيير في الـ dependency، مش إعادة كتابة للتطبيق.
الكود: تبديل المزوّد بأقل تعديل ممكن
الفكرة إن منطق الجلسة ثابت. اللي بيتغيّر سطر تعريف الموديل بس. مثال مبسّط:
import FoundationModels
// import AnthropicFoundation // حزمة SPM من Anthropic
// import GoogleFoundation // حزمة SPM من Google
// 1) اختَر المزوّد في مكان واحد بس
let model: any LanguageModel = SystemLanguageModel.default // نموذج آبل المحلي
// let model: any LanguageModel = AnthropicModel.claude // بدّلها لـ Claude
// let model: any LanguageModel = GeminiModel.flash // أو لـ Gemini
// 2) باقي الكود ما بيتغيّرش مهما بدّلت فوق
let session = LanguageModelSession(model: model)
let reply = try await session.respond(
to: "لخّص المراجعة دي في جملة وحدّد التقييم من 5."
)
print(reply.content)ركّز في النقطة: لو عايز تجرّب جودة Claude بدل نموذج آبل، بتبدّل سطر التعريف وحزمة الـ SPM وخلاص. منطق الجلسة وإدارة السياق ونداء الأدوات يفضل زي ما هو.
الأرقام والـ trade-offs
الافتراض هنا إن تطبيقك تحت سقف المليونين تحميل أول مرة، وإنك مستهدف iOS 27 وما بعده. لو الشرطين دول متحققين، نموذج آبل المحلي + Private Cloud Compute بيدّيك inference بصفر تكلفة تشغيل على البنية. ده المكسب الأكبر لتطبيق صغير أو متوسط كان بيدفع مئات الدولارات شهريًا على نداءات API.
بس فيه ثمن:
- قفل على منصّة آبل. الكود ده بيشتغل على iOS وmacOS بس. لو عندك أندرويد أو ويب، محتاج مسار AI تاني بالتوازي.
- سقف القدرة. نموذج آبل المحلي أصغر من نماذج الفرونتير. للمهام المعقّدة هتحتاج تبدّل لـ Claude أو Gemini، وساعتها الفاتورة بترجع تظهر.
- التزام بأحدث الأنظمة. الإطار بيستهدف iOS 27 وما فوق. مستخدمينك على إصدارات أقدم مش هيستفيدوا من الميزة.
الـ trade-off باختصار: بتكسب تكلفة صفر ومرونة تبديل المزوّد، بتخسر تغطية المنصّات التانية وجزء من القدرة طول ما انت ماشي على النموذج المحلي.
متى متستخدمش الطريقة دي
متبنيش عليها لو تطبيقك أساسًا cross-platform والـ AI هو قلب المنتج. ساعتها طبقة تجريد مستقلة عن آبل (تنادي الـ API مباشرة من باك إند مشترك) هتوفّرلك تكرار الشغل على كل منصّة. كمان لو محتاج نموذج فرونتير قوي في كل نداء، الوصول المجاني للنموذج المحلي مش بيحل مشكلتك — هتدفع للسحابة على أي حال.
الخطوة التالية
لو عندك تطبيق iOS شغّال: افتح فرع تجريبي، وضيف ميزة واحدة صغيرة (تلخيص أو تصنيف) فوق LanguageModelSession بنموذج آبل المحلي، وقِس زمن الاستجابة وجودة الناتج على عيّنة عربية حقيقية. لو الجودة مش كفاية، بدّل سطر الموديل لـ Claude وقارن بنفس العيّنة. القرار يتاخد بالأرقام بتاعتك، مش بإعلان الكينوت.