كل المشاريع/CUSTOMGPT — CRYPTO MARKET INTELLIGENCE

نظرة عامة

CustomGPT مساعدٌ لذكاء سوق العملات الرقمية: تطبيقُ محادثةٍ تُركَّب إجاباته، عند الطلب، من بيانات السوق الحيّة لا من ذاكرة النموذج. يسأل المتداول بلغةٍ عادية «ما معدّل التمويل على عقود BTC الآجلة؟» أو «أرِني تحرّكات الحيتان ونسبة المراكز الطويلة إلى القصيرة»، فيقرّر المساعد أيَّ دالّةٍ يستدعي من سبعٍ وستّين دالّةَ أداةٍ مُصرَّحًا بها، ويجلب الأرقام الحقيقية، ويُجري حساب المؤشّرات، ويجيب بمخطّطات وجداول.

وتحت المحادثة تجلس طبقةُ تكاملٍ تمتدّ على خمسة مزوّدين لبيانات السوق — تسعير الفوري والآجل، ومراكز المشتقّات، وبيانات القيمة السوقية المرجعية، والمقاييس على السلسلة، والمشاعر على الشبكات الاجتماعية — مُصرَّحًا بها في مخطّط دوالَّ واحد يستطيع نموذجٌ لغويّ أن يستدلّ عليه. وفوقها تجلس مساحةُ عملٍ بـStreamlit فيها تسجيل الدخول، وسجلُّ محادثةٍ لكلّ مستخدم، ورفعُ الملفّات والتصدير، يسندها مخزنٌ علائقيّ صغير.

انضممتُ مهندسًا بعقدٍ للدفعة الأخيرة. كان المنتج قائمًا، لكنّ عمل ثلاثة أشخاص كان موزّعًا على ثلاثة فروع متباعدة لم تعد تندمج، وكان جزءٌ كبير من سطح الأدوات إمّا يفشل فشلًا تامًّا وإمّا يعيد بياناتٍ لا يستطيع المساعد استعمالها. وكان تكليفي ضيّقًا محدّدًا: اجعله قاعدةَ شيفرةٍ واحدة، واجعل كلّ دالّة تعمل، وأثبِت ذلك.

التحدي

يفشل سطحُ الأدوات في النموذج اللغويّ فشلًا مختلفًا عن فشل واجهةٍ برمجية عادية، وأسوأ منه.

فحين تنكسر نقطةُ وصولٍ عادية يتلقّى المستدعي خطأً فيعالجه. أمّا حين تنكسر دالّةُ أداةٍ فإنّ المساعد يرتجل من حولها — فيجيب على أيّ حال، بنثرٍ واثق، بما استطاع الوصول إليه. ومن ثمّ فسطحُ بيانات سوقٍ بعضُه معطوب لا يُنتج أعطالًا ظاهرة؛ بل يُنتج إجاباتٍ ماليّة معقولة المظهر خاطئة المضمون. وهذا ما جعل «معظم نقاط الوصول تعمل» حالةً نهائية غير مقبولة.

وكان سطحُ التكامل واسعًا على غير المعتاد قياسًا إلى عمره: خمسة مزوّدين، لكلٍّ منهم مصادقتُه الخاصّة وحدودُ معدّله وترقيمُ صفحاته وأعرافُه في تسمية الرموز ومفرداتُه في التعبير عن الفشل. فالأصل الواحد يُكتب على نحوٍ مختلف عند كلّ مزوّد، وغيرُ واحدٍ منهم يردّ على طلبٍ خاطئ بـ200 وجسمٍ فارغ لا بخطأ — فلم يكن «قد أعاد شيئًا» دليلًا على شيء.

ثمّ إنّ الشيفرة كانت في ثلاثة مواضع في آنٍ واحد. فقد عمل ثلاثة مساهمين على التوازي على فروعٍ تباعدت إلى ما وراء الحدّ الذي تستطيع الأدوات عنده التوفيق بينها؛ تداخلت التواريخ، وحُرِّرت الدوالُّ نفسها على أنحاءٍ متعارضة في كلّ جانب، ولم تكن هناك حزمةُ اختبارات تُميّز الدمجَ الجيّد من الرديء. وكان الدمج على غير هدى يُخاطر بالتراجع في صمت عن إصلاح أحدهم — وهو أمرٌ على هذا السطح لا يبدو إلّا كأنّ شيئًا لم يقع البتّة.

تصميم النظام

كيف يعمل

01/04
01

السؤال يصير استدعاءَ بيانات

كيف تتحوّل اللغة العادية إلى رقمٍ حقيقيّ من السوق بدل تخمينٍ واثق.

  1. 1يسأل المتداول بلغةٍ عادية — عن معدّل تمويل، أو تحرّك حوت، أو مؤشّرٍ على زوجٍ من الأصول
  2. 2ويُعطى المساعد مخطّط الأدوات المُصرَّح به فيختار دالّةً ووسائطها
  3. 3ويُنفّذ النظام الخلفي ذلك الاستدعاء على المزوّد الذي يملك البيانات فعلًا
  4. 4وتُعاد النتيجة إلى المساعد ليرويها، والأرقام آتيةٌ من السوق لا من النموذج
02

خمسة مزوّدين، سطحٌ واحد

كيف تُجعَل خمسُ واجهاتٍ برمجية مختلفة شيئًا واحدًا في نظر الطبقة التي فوقها.

  1. 1يجلس كلُّ مزوّدٍ خلف غلافه الخاصّ الذي يملك مصادقته وترقيم صفحاته وحدود معدّله
  2. 2وتُطبَّع الرموز والوسائط، فيعني الأصل الواحد الشيء نفسه في كلّ موضع
  3. 3ويُطبَّع الفشل إلى شكلٍ واحد — فيصير النجاح الفارغ أو المشوب بخطأٍ كائنَ خطأٍ صريحًا
  4. 4فلا تحتاج الطبقةُ التي فوقها قطُّ إلى معرفة أيِّ مزوّدٍ أجاب — بل إلى معرفة هل أجاب أم لا
03

ثلاثة فروع تصير واحدًا

كيف وُفِّق بين عملٍ تباعد إلى ما وراء الدمج الآلي دون أن تضيع إصلاحات أحد.

  1. 1رُوجعت كلُّ دالّة متعارضة على الجانبين وحُسمت على أساس الجدارة، لا على أساس الملفّ ولا الفرع
  2. 2وطُوي فرعُ المساهم الثالث في مرورٍ صريحٍ خاصّ به، لا في المرور نفسه
  3. 3وأُعيد سبرُ الناتج المدموج على كلّ مزوّد قبل أن يُقال عن شيءٍ إنّه تمّ
  4. 4والنتيجة قاعدةُ شيفرةٍ واحدة، كلُّ دالّة فيها أفضلُ النسخ الثلاث التي كانت قائمة
04

برهانٌ لا طمأنة

كيف صار التسليم قابلًا للتحقّق بدل أن يكون مجرّد ادّعاء.

  1. 1يُسجّل مسبارُ الحالة ما يعيده كلُّ مزوّد لكلّ أصل، قبل الإصلاحات وبعدها
  2. 2وخمسون صياغةً بلغةٍ عادية، كلٌّ منها مقرونةٌ بالدالّة التي يجب أن تجيبها، تُستدعى حيًّا على مزوّديها
  3. 3وكلُّ تشغيلة تكتب على القرص مجموعة نتائج وملخّصًا موسومَين بالوقت
  4. 4وتقف التشغيلة الأخيرة عند خمسين من خمسين — والتشغيلة التي قبلها، عند تسعٍ وأربعين، ما تزال إلى جانبها، فيكون التدرّج قابلًا للتدقيق

أبرز الميزات

  • أسئلةٌ عن السوق بلغةٍ عادية يُجاب عنها من بياناتٍ حيّة عبر خمسة مزوّدين، والمساعد هو من يختار استدعاء الأداة الصحيح
  • سبعٌ وستّون دالّةَ أداةٍ مُصرَّحًا بها — تسعير الفوري والآجل، ودفاتر الأوامر، ومراكز المشتقّات، والمقاييس على السلسلة، والمشاعر على الشبكات الاجتماعية
  • تحليلٌ فنّي عند الطلب — المتوسّطات المتحرّكة، وRSI، وMACD، وATR، ونطاقات بولينجر، مع مخطّطات الشموع والمؤشّرات
  • سياقُ المشتقّات — تحرّكات الحيتان، والتصفيات، ومعدّلات التمويل، والعقود المفتوحة، ونِسَب المراكز الطويلة إلى القصيرة
  • ذكاءٌ من بيانات السلسلة — العناوين النشطة، وحجم المعاملات، وMVRV، وتدفّقات المنصّات، ونموّ الشبكة، ونشاط المطوّرين
  • ذكاءٌ من الشبكات الاجتماعية — الحجم الاجتماعي والهيمنة، وميزان المشاعر، واتّجاهات الموضوعات والكلمات، ودرجات التفاعل والترتيب
  • مساحةُ عملٍ بـStreamlit فيها تسجيل الدخول، وسجلُّ محادثةٍ لكلّ مستخدم، ورفعُ الملفّات والتصدير، فوق مخزنٍ علائقيّ صغير
  • سطحُ اختبارٍ مسجَّل — مسبارُ حالةٍ للمزوّدين وحزمةُ تغطيةٍ من خمسين سؤالًا تُستدعى حيًّا على المزوّدين، وكلّ تشغيلة تُكتب على القرص بصيغتَي JSON وCSV

Outcomes

  • نقلتُ سطح الأدوات من عطبٍ جزئيّ إلى نجاحٍ مسجَّل بخمسين من خمسين في حزمةٍ من خمسين سؤالًا تُستدعى حيًّا على المزوّدين
  • ووحّدتُ ثلاثة فروع متباعدة لثلاثة مساهمين في قاعدة شيفرةٍ واحدة، يدويًّا ودالّةً بدالّة، دون أن أتراجع في صمت عن عمل أحد
  • وواءمتُ مخطّط الأدوات المُصرَّح به مع التنفيذات، فأغلقتُ نمط الفشل الأخطر على سطح نموذجٍ لغويّ — جوابٌ واثق مبنيٌّ على استدعاءٍ لم يعمل حقًّا
  • ووضعتُ كلًّا من المزوّدين الخمسة خلف غلافٍ يُخفي مصادقته وعُرفه في تسمية الرموز وترقيم صفحاته — ويُبلّغ عن الفشل بالطريقة نفسها، فصار الاستدعاء الفاشل يفشل بدل أن يعيد نجاحًا فارغًا
  • وتركتُ التسليم قابلًا للتدقيق: مسبارُ حالةٍ للمزوّدين ومجموعاتُ نتائج موسومة بالوقت على القرص، فصارت حال النظام قابلة للتحقّق لا مجرّد ادّعاء
  • وأنجزتُ التكليف كلَّه داخل نافذةٍ من يومين، وكتبتُ أربعة عشر إيداعًا من إيداعات المستودع الثمانية عشر

أعمال أخرى

MVP100Hours preview
منصّة نموّ بالذكاء الاصطناعي

MVP100Hours

منصّة مدعومة بالذكاء الاصطناعي تمتدّ من العميل المحتمل حتى إتمام الصفقة — من رصد صامت للزوّار إلى تواصل صوتي ذاتي التشغيل بالذكاء الاصطناعي

عرض المشروع