البحث في المدونة

العودة لجميع المقالات
مطور أبيكس المعزز بالذكاء الاصطناعي

غمامة الـ 50 ألف توكن: ليه رمي ملفات الـ APEX الخام للذكاء الاصطناعي بيحرق فلوسك ع الفاضي؟ 💸🙈

الجزء الأول من سلسلة "مطور APEX المدعوم بالذكاء الاصطناعي". ليه ملفات f100.sql بتخنق نماذج الـ LLMs، وإزاي تحول كودك لصيغة خفيفة وسريعة توفر 99% من التوكنز!

فهرس المحتويات
  1. غمامة الـ 50 ألف توكن: ليه رمي ملفات الـ APEX الخام للذكاء الاصطناعي بيحرق فلوسك ع الفاضي؟ 💸🙈
  2. ⚡ الخلاصة في كلمتين (TL;DR)
  3. 🔍 وهم “يا عم ارمي له ملف الـ SQL وخلاص!”
  4. 🔬 تشريح ملف التصدير: إيه اللي مستخبي جوه f100.sql؟
  5. الـ 150 ألف سطر دول عبارة عن إيه أصلاً؟
  6. 📚 التشبيه البلدي: بتدور على مقادير كيكة في قانون الضرائب!
  7. 💸 الاقتصاديات المخفية: التوكنز، وقت الاستجابة، وفقدان التركيز في النص
  8. 1. لغة الأرقام الصادمة
  9. 2. متلازمة “الضياع في الزحمة” (Lost in the Middle)
  10. 3. فخ الملف المكسور غير القابل للاستيراد
  11. 🛠️ القواعد الذهبية التلاتة لكود APEX جاهز للذكاء الاصطناعي
  12. القاعدة 1: تقسيم الكود على مستوى الصفحات (Page-Level Granularity)
  13. القاعدة 2: تنظيف دوشة الـ Hexadecimal بلغة مقروءة للبشر
  14. القاعدة 3: رسم خريطة الاعتماديات المعمارية بوضوح
  15. 📦 بداية جاهزة وسريعة: قالب مشروع APEX المفتوح
  16. 🚀 إيه اللي مستنينا في الجزء الثاني؟

🇬🇧 English Version: Read the original article in English here.

غمامة الـ 50 ألف توكن: ليه رمي ملفات الـ APEX الخام للذكاء الاصطناعي بيحرق فلوسك ع الفاضي؟ 💸🙈

الجزء الأول من سلسلة “مطور APEX المدعوم بالذكاء الاصطناعي”.


⚡ الخلاصة في كلمتين (TL;DR)

إنك تدي لـ AI Coding Assistant ملف تصدير Oracle APEX بصيغة الـ SQL الخام، ده بالظبط عامل زي ما تطلب من صاحبك يدور لك على وصفة كحك العيد السرية بتاعة جدتك.. بس مديله يدور جوه موسوعة قانون الضرائب المكونة من 5000 صفحة ومكتوبة بخط منمنم وقوانين معقدة!

صاحبك (الذكاء الاصطناعي) هيحرق لك رصيد التوكنز كله في سؤالين تلاتة، وهيفوّت تماماً شرط التحقق (Validation) اللي أنت بتدور عليه في الصفحة، وفي الآخر هيهبد لك كود PL/SQL خيالي ممكن يفرمت داتابيز الـ Production بتاعتك!

في الدليل ده، هنشرح بالتفصيل ليه ملفات تصدير APEX الضخمة (Monolithic) بتخنق نماذج الـ LLM، والضوضاء المعمارية المخفية اللي بتنفخ فواتير الـ API بتاعتك، والاستراتيجيات الأساسية اللي تقدر تطبقها فوراً في أي مشروع لبناء دورات عمل ذكية وسريعة زي الصاروخ.


🔍 وهم “يا عم ارمي له ملف الـ SQL وخلاص!”

تخيل المشهد ده—واللي بيحصل بالحرف مع 99% من مطوري Oracle APEX أول ما يبدأوا يجربوا أدوات الذكاء الاصطناعي التوليدي:

عندك تطبيق شغال، وليكن تطبيق 100. حابب تخلي مساعد الذكاء الاصطناعي (Claude أو GPT أو Gemini) يساعدك تبني ميزة بسيطة:

“يا عم الذكاء الاصطناعي، بص كدة على تطبيقي. في صفحة 12، لما اليوزر يدخل نسبة خصم أكبر من 20%، اطلب موافقة المدير قبل ما ينشئ الأوردر.”

ولأن Oracle APEX بتصدر التطبيقات على شكل ملفات SQL، أول فكرة بتيجي في بالك بتكون بديهية ومنطقية جداً: “الله! ما هي أبيكس أصلاً مبنية على SQL من تحت، خليني أشغل أمر apex export -applicationid 100، وأرفع ملف f100.sql ده جوه شات الـ AI أو الـ IDE، وسيبه بقى يعيش ويبهرني!”

بعد 5 ثواني بس، الواقع بيصدمك بالقلم:

  1. انفجار التوكنز (Token Explosion): عداد التوكنز بتاعك ينط فجأة من صفر لـ 65,000 وحتى 180,000 توكن عشان سؤال واحد بس!
  2. شلل السياق (Context Paralysis): الـ AI بيفضل متنح 45 ثانية وهو بيطحن آلاف السطور من الدوال الداخلية، وأرقام الـ Hexadecimal، وسكربتات إنشاء الـ Workspaces.
  3. كارثة التهييس (Hallucination Disaster): بدل ما يديك Process نظيف أو Dynamic Action محترم، الموديل بيرد عليك بكود PL/SQL غريب ومخترع أعمدة مش موجودة أصلاً في جداولك، وبيحاول يعدل جداول المحرك الداخلية لأبيكس (WWV_FLOW_STEPS)!

ليه ده بيحصل كل مرة بدون استثناء؟ لأن ملف التصدير بتاع APEX مكنش معمول أصلاً عشان تقراه عين بشرية.. ولا عشان تقراه نماذج اللغة!


🔬 تشريح ملف التصدير: إيه اللي مستخبي جوه f100.sql؟

عشان تفهم ليه الذكاء الاصطناعي بيفشل الفشل الذريع ده لما يشوف ملف الـ Export، لازم نبص بعينينا على اللي جوه f100.sql.

أوراكل أبيكس لما بتصدر تطبيق، مش بتطلع لك مواصفات وصفية واضحة (Declarative Specification) للشاشات والتقارير. هي في الحقيقة بتولد سكربت تثبيت إجرائي (Imperative Installation Script) معمول مخصوص عشان يعيد حقن سطور الداتا جوه جداول محرك أبيكس الداخلي (APEX_260100 / WWV_FLOW).

بص كدة على العينة دي اللي بتمثل مجرد حقل نصي واحد في صفحة:

prompt --application/pages/page_00012
begin
wwv_flow_imp_page.create_page_item(
  p_id=>wwv_flow_imp.id(9817239182736192)
 ,p_name=>'P12_DISCOUNT_PCT'
 ,p_item_sequence=>30
 ,p_item_plug_id=>wwv_flow_imp.id(9817211100293812)
 ,p_prompt=>'Discount %'
 ,p_source=>'DISCOUNT_PCT'
 ,p_source_type=>'DB_COLUMN'
 ,p_display_as=>'NATIVE_NUMBER_FIELD'
 ,p_cSize=>30
 ,p_cMaxlength=>5
 ,p_tag_attributes=>'class="apex-item-number"'
 ,p_begin_on_new_line=>'Y'
 ,p_colspan=>null
 ,p_rowspan=>null
 ,p_label_alignment=>'RIGHT'
 ,p_field_alignment=>'LEFT-CENTER'
 ,p_field_template=>wwv_flow_imp.id(9817001928374611)
 ,p_is_persistent=>'Y'
 ,p_attribute_01=>'0'
 ,p_attribute_02=>'100'
 ,p_attribute_03=>'1'
);
end;
/

اضرب بقى الكود ده في 40 حقل، و 15 ريجين (Region)، و 12 أكشن ديناميكي (Dynamic Action)، و 8 بروسيسز (Processes)، وعلى مدار 50 صفحة في التطبيق. فجأة هتلاقي نفسك باصص على أكتر من 150,000 سطر من الحشو المعقد!

الـ 150 ألف سطر دول عبارة عن إيه أصلاً؟

  • 90% سباكة داخلية لمحرك أبيكس: نداءات إجرائية غامضة (wwv_flow_imp_page, wwv_flow_imp_shared)، أرقام ID عشوائية بالهيكس، إحداثيات محاذاة الشاشة، ومؤشرات الـ Templates.
  • 8% لزق وتنسيق عناصر: كلاسات CSS، وإحداثيات الشاشة، وترتيب العرض.
  • فقط 2% هو منطق البيزنس الحقيقي (Actual Business Logic): السطرين الصغيرين بتوع كود الـ PL/SQL أو الـ SQL Query اللي أنت أصلاً كنت عايز الـ AI يراجعهم ويعدل فيهم!

لما ترمي الملف ده لـ LLM، أنت بتجبره يصرف 98% من تركيزه وطاقته الاستيعابية بس عشان يفلتر الدوشة دي!


📚 التشبيه البلدي: بتدور على مقادير كيكة في قانون الضرائب!

تخيل عينت شيف حلويات عالمي عشان يراجع معاك مقادير تورتة شيكولاتة:

  • الطريقة العاقلة: بتديه ورقة مقادير شيك في صفحة واحدة: كوبايتين دقيق، 3 بيضات، كوباية سكر، ونص ساعة في الفرن. الشيف هيبص في ثانية ويقولك: “أنت نسيت البيكنج باودر ورشة الملح!”.
  • طريقة ملف الـ APEX الخام: بدل ورقة المقادير، تروح تديله:
    1. كود البناء والمواصفات القياسية لمبنى المطبخ.
    2. الدوائر الكهربائية والأسلاك لفرن البوتاجاز.
    3. كشف شحن من 200 صفحة فيه أرقام مسلسلة لكل مضرب بيض ومعلقة.
    4. ومستخبي في صفحة 347 سطر بيقول: p_ingredient => 'SUGAR', p_qty => 1.

الشيف هيتجنن، ويضيع تلات ساعات يقرا في أسلاك الكهرباء، وفي الآخر هيهبد لك نصيحة ملهاش علاقة بالحلويات: “اتأكد بس إن القاطع الكهربائي 240 فولت ميفصلش وأنت بتضرب البيض!”

ده بالظبط اللي بيحس بيه الـ AI لما تديله f100.sql!


💸 الاقتصاديات المخفية: التوكنز، وقت الاستجابة، وفقدان التركيز في النص

رمي الملفات الضخمة دي مش بس بيطلع إجابات تعبانة—ده بينفض جيبك وبيموت سرعة التطوير.

1. لغة الأرقام الصادمة

تعالوا نقارن بين الطريقتين لتطبيق APEX متوسط الحجم:

المقياس الملف الضخم المجمع (f100.sql) التنسيق المجزأ النظيف (Modular) الفرق
عدد السطور ~120,000 سطر ~80 سطر لكل صفحة أصغر 1,500 مرة
استهلاك التوكنز ~55,000 – 90,000 توكن ~350 – 800 توكن توفير 99% من التوكنز
التكلفة لكل 10 أسئلة ~$3.50 – $7.00 دولار ~$0.02 – $0.05 سنت سنتات مقابل دولارات
وقت الرد (Latency) 25 – 45 ثانية انتظار 2 – 4 ثواني بس أسرع 10 مرات
نسبة التهييس والهبد عالية جداً (>60%) تكاد تنعدم (<2%) إجابات دقيقة زي السيف

2. متلازمة “الضياع في الزحمة” (Lost in the Middle)

أبحاث الذكاء الاصطناعي أثبتت مراراً ظاهرة “منحنى الانتباه على شكل حرف U”: الموديل بيركز جداً في أول الـ Prompt وفي آخره، لكن في النص الانتباه بيقع في بئر عميق! لما شرط الـ SQL بتاعك يكون مدفون في وسط 40 ألف توكن من سباكة أبيكس، الموديل بينسى تماماً أنت سألته عن إيه.

3. فخ الملف المكسور غير القابل للاستيراد

لو سبت الـ AI يعدل مباشرة في f100.sql، الكارثة قادمة لا محالة:

  • فصلة منقوطة ناقصة أو كوتيشن طار من كود wwv_flow_imp هيخلي أبيكس ترفض استيراد التطبيق كله!
  • لو الـ AI بدّل رقم ID عشوائي (مثلاً غير 9817239182736192 لـ 9817239182736199)، عناصر كاملة هتختفي من الـ Page Designer أو تتربط في صفحات تانية غلط!

🛠️ القواعد الذهبية التلاتة لكود APEX جاهز للذكاء الاصطناعي

عشان تخلي شغلك سريع وذكي، التزم بالتلات مبادئ دول في أي مشروع:

القاعدة 1: تقسيم الكود على مستوى الصفحات (Page-Level Granularity)

ممنوع نهائياً تبعت التطبيق كله للـ AI. استخدم أدوات تقسيم التصدير لفصل كل صفحة في ملف مستقل. لما تسأل عن صفحة 12، الـ Agent ميشوفش غير صفحة 12 بس.

القاعدة 2: تنظيف دوشة الـ Hexadecimal بلغة مقروءة للبشر

الذكاء الاصطناعي بيفهم مفاهيم ومنطق وكلام—مبيفهمش شفرات Hexadecimal. تحويل صفحات أبيكس لصيغة نظيفة ومقروءة (زي لغة APEXlang / .apx) بيشيل 95% من دوشة السباكة مع الحفاظ على المنطق والتقسيم بنسبة 100%.

القاعدة 3: رسم خريطة الاعتماديات المعمارية بوضوح

صفحة أبيكس مش عايشة لوحدها في الصحراء؛ هي بتتعامل مع جداول و Views و Packages. بدل ما ترمي كل أكواد الداتابيز في الشات، ادي للـ Agent خريطة علاقات واضحة عشان يسحب بس الجدول أو الـ Package اللي محتاجه بالظبط.

[!NOTE] مش محتاج أدوات مدفوعة عشان تبدأ تطبق المبادئ دي النهاردة. مجرد استخدام أمر التصدير المقسم في SQLcl عبر lb generate-apex أو apex export -split هي خطوة أولى ممتازة يقدر أي فريق يبدأ بيها فوراً في أي ريبو!


📦 بداية جاهزة وسريعة: قالب مشروع APEX المفتوح

رغم إنك تقدر تكتب سكربتاتك الخاصة عشان تقسم وتنظم التصدير، مش لازم تخترع العجلة من الصفر.

لو بتدور على هيكل مستودع جاهز ومجرب بيطبق نفس المعايير دي بالحرف—مع التصدير الذري، والتقسيم النظيف، وقواعد الـ Agents—تقدر تبص على APEX Project Template المفتوح المصدر بالكامل.


🚀 إيه اللي مستنينا في الجزء الثاني؟

دلوقتي بعد ما عرفنا ليه التصدير المجمع بيفشل، يا ترى شكل كود APEX النظيف والجاهز للذكاء الاصطناعي عامل إزاي؟

في الجزء الثاني (“من الكتلة الصماء للتقسيم الذكي: ليه ملفات APEXlang بتغير قواعد اللعبة؟”)، هنتعرف على لغة APEXlang (.apx): إزاي تحويل التصدير لملفات مقروءة بيغير تماماً طريقتك أنت والـ AI في قراءة وتعديل وتتبع كود أبيكس في Git!

نشوفكم في الجزء الثاني! 🚀✨


كتبه: أحمد شريف (Ahmed Sherif).

أحمد شريف
أحمد شريف / ash2osh

أدلة وشروحات وملاحظات هندسية.