ZaatarLABS
تواصل معنا ←
→ كل المقالات
Smart Budget

قلتُ إنني سأعود إلى هذا حين يصدر iOS 27

عادت «اسأل عن أي شيء» في Smart Budget 2.0 — لكن ليس على النموذج الذي يعمل على الجهاز والذي قلتُ إنني أنتظره.

5 دقائق قراءة

التعليق الذي تركته لنفسي

انتهى مقال يوليو عن البناء على نموذج Apple الذي يعمل على الجهاز بقسم عنوانه «الميزة التي بنيتها وأنهيتها ثم أخفيتها». «اسأل عن أي شيء» — واجهة محادثة مع بيانات إنفاقك أنت — كانت منتهية، وتُجمَّع دون أخطاء، ومعطّلة بتعليق. كل نقطة دخول حملت الوسم نفسه:

// ASK-ANYTHING-DEFERRED-IOS27: chat sheet presentation
// disabled. Implementation kept intact in
// Intelligence/Chat/* + Views/Insights/AskAnythingSheet.swift
// — revisit when iOS 27 / a larger on-device model lands.
// The 3B model in iOS 26 was unable to reliably extract
// intent + filters even with constrained DynamicGenerationSchema

صدر iOS 27. وعادت الميزة في Smart Budget 2.0، المتاح الآن على App Store. لكن ليس بالطريقة التي أوحى بها ذلك الوسم.

ما افترضه الوسم

حين كتبتُ «revisit when iOS 27 / a larger on-device model lands»، كانت لدي صورة واضحة لما ستبدو عليه العودة: نموذج أكبر، والبنية نفسها على الجهاز، وأزيل التعليق عن مواضع عرض الـ sheet، وأُطلق. الغاية كلها من المسار ثلاثي المراحل — الفاهِم يستخرج النية، وSwift الحتمي يُجري الاستعلام، والقالب النصي يروي النتيجة — كانت أن النموذج محلي. بلا مفتاح API، ولا اتصال بالشبكة، ولا خادم يمكنه أن يرى معاملاتك أبدًا. لم يكن قيد العمل على الجهاز تنازلًا؛ بل كان المنطلق.

لم تكن مشكلة نموذج الـ 3B في iOS 26 السرعة. كانت الموثوقية في الظروف التي تهمّ في تطبيق مالي. حتى مع تقييد DynamicGenerationSchema للمخرجات، وحتى مع درجة حرارة 0.1، كان استخراج النوايا يخطئ بما يكفي لكي لا أستطيع المراهنة عليه بميزة «اسألني أي شيء عن أموالك». في تطبيق ميزانية، لا يُنتج التصنيف الخاطئ للنية إجابة منحرفة قليلًا. بل يُنتج إجابة خاطئة واثقة. والإجابة الخاطئة الواثقة عن أموالك تدمّر الميزة — لا تدريجيًا، بل فورًا، في أول مرة يحدث لك ذلك.

لذلك ظل الوسم هناك، ينتظر نموذجًا يستطيع سدّ فجوة الموثوقية.

ما أطلقته فعلًا

«مستشار المال» — هذا هو الاسم الذي تصدر به — لا يستخدم النموذج الذي يعمل على الجهاز. إنه يعمل على Private Cloud Compute من Apple.

هذه بنية مختلفة، وأريد أن أكون صريحًا بشأن ما يعنيه ذلك. Private Cloud Compute هي البنية التحتية لـ Apple: سؤالك عن إنفاقك يغادر الجهاز، ويُعالَج على عتاد Apple، ثم تعود الإجابة. تقول Apple إن لا شيء يُخزَّن وإن المعالجة عابرة — وهذا ادعاء تتحمّله Apple، لا أنا لأضمنه. لكنه اتصال بالشبكة. تمسّكتُ بهذا الخط طوال دورة iOS 26 كلها، وتجاوزته لهذه الميزة، اعتمادًا على ما تقدّمه Apple من ضمانات خصوصية حول PCC.

لماذا أتجاوزه أصلًا؟ لسببين.

الأول هو القدرة. يمنحك Private Cloud Compute من Apple الوصول إلى نموذج يستطيع فهم النوايا المكتوبة باللغة الطبيعية بموثوقية تكفي للمراهنة عليها بثقة المستخدم. لم يتغير دور النموذج — يأخذ سؤالًا عن المال، ويستخرج نية منظَّمة، ويسلّمها إلى Swift الحتمي الذي يعمل على قاعدة بيانات المعاملات الفعلية. ما تغيّر هو مكان وجود النموذج.

الثاني هو البديل. لم تكن واجهة API سحابية من طرف ثالث مطروحة أصلًا لتطبيق مالي. فكانت الخيارات الواقعية: على الجهاز مع نموذج غير موثوق، أو البنية التحتية الخاصة لـ Apple مع ضمانات خصوصية أرتاح لها بما يكفي لأُطلق عليها. اخترتُ الثانية لهذه الميزة.

ما بقي كما هو

الطبقة الحتمية تحت «مستشار المال» هي البنية نفسها التي وصفها مقال يوليو. النموذج يفهم اللغة؛ وSwift يحسب الأرقام. «كم أنفقتُ على البقالة؟» يصبح نية محددة النوع بفترة وفئة، تصبح استعلام Core Data، يصبح نتيجة يعرضها قالب. لا يلمس النموذج بيانات المعاملات الفعلية أبدًا، ولا يُجري عمليات حسابية، ولا يكتب جملة عن تاجر بعينه.

لم يكن ذلك خيارًا أعدتُ النظر فيه. الدرس المستفاد من العمل على الجهاز — أن النموذج اللغوي سيهلوس تفاصيل المعاملات في اللحظة التي تتركه يروي من البيانات الخام — ينطبق بالقدر نفسه على نموذج سحابي أقدر. شكل المسار صحيح. ما تغيّر هو بيئة التنفيذ.

الشيفرة التي لا تزال هناك

AskAnythingSheet الأصلي، ومسار الاستخراج على الجهاز، وIntelligence/Chat/ كله — لا تزال في الشيفرة، ولا تزال معطّلة بتعليق، ولا تزال موسومة. إذا أطلقت Apple نموذجًا يعمل على الجهاز ويسدّ فجوة الموثوقية، فالمسار جاهز. لا أراهن ضد ذلك.

ما أخطأتُ تقديره في يوليو هو أن إجابة iOS 27 عن المشكلة ستكون بالضرورة نموذجًا أكبر على الجهاز. قدّمت Apple إجابة مختلفة أولًا، وكانت جيدة بما يكفي لأُطلق عليها.

ماذا يعني هذا إن كنت تبني شيئًا مشابهًا

مسألة الجهاز مقابل السحابة لميزات النماذج اللغوية ليست ثنائية، والحد الصحيح ليس واحدًا لكل ميزة. «لا تغادر أي بيانات هذا الجهاز أبدًا» وعد قوي، وهو الوعد الصحيح لبيانات المعاملات المحفوظة. لكن سؤالًا باللغة الطبيعية عن إنفاقك له طابع خصوصية مختلف عن الدفتر نفسه. وما إذا كان Private Cloud Compute من Apple حدًّا أنت مستعد لتجاوزه لميزة معينة فهو تقدير شخصي — يتعلق بالميزة، والبيانات المعنية، وضمانات المزوّد.

ما كنت سأقوله لنفسي في يوليو: صُغ القيد بدقة أكبر قبل أن تؤجّل. «عُد إليها حين يصدر iOS 27» شرط زمني. أما الشرط الحقيقي فكان «عُد إليها حين يتوفر نموذج قادر على استخراج النوايا بموثوقية ضمن حدّ خصوصية أقبل أن أُطلق عليه». هذان ليسا الشيء نفسه، والثاني يقودك إلى الإجابة الصحيحة أسرع.

كان النموذج الذي يعمل على الجهاز مفيدًا فعلًا في بقية التطبيق — بطاقات التحليلات، ومسح الإيصالات، والمصنِّف، كلها عملت عليه جيدًا — وفي الإصدار 2.0 على iOS 27 صارت تفضّل Private Cloud Compute أيضًا، مع النموذج الذي يعمل على الجهاز كبديل احتياطي. لمهمة واحدة محددة، وعند سقف موثوقية محدد، لم يكن كافيًا. هذا نقد أضيق مما تركته في يوليو، وهو النقد الدقيق.

بقلم Omar Al Homaidi · ZaatarLABS · @zaatarlabs