لقد جربت ذلك. النتائج مبعثرة. تجربة مثيرة للاهتمام هي تزويد GPT-3.5 بنسخة مصغرة مشروحة من مخطط قاعدة بيانات Discourse فقط لاختبار قدرتها على SQL. أدرك أن هذا غير فعال من حيث الرموز، ولكنه قابل للقراءة:
مخطط مصغر
# == معلومات المخطط
#
# اسم الجدول: users
#
# id :integer not null, primary key
# username :string(60) not null
# created_at :datetime not null
#
# اسم الجدول: groups
#
# id :integer not null, primary key
# name :string not null
# created_at :datetime not null
#
# اسم الجدول: group_users
#
# id :integer not null, primary key
# group_id :integer not null
# user_id :integer not null
#
# اسم الجدول: posts
#
# id :integer not null, primary key
# user_id :integer
# topic_id :integer not null
# deleted_at :datetime (يقوم التطبيق بحذف المشاركات "بشكل ناعم". عند حذف مشاركة، يتم تعيين خاصية `deleted_at` الخاصة بها إلى :datetime. ما لم يُطلب صراحةً إرجاع المشاركات المحذوفة، تأكد من أن عمود `deleted_at` هو `NOT NULL` عند كتابة استعلامات تطلب بيانات متعلقة بالمشاركات.)
#
# اسم الجدول: topics
#
# id :integer not null, primary key
# title :string not null
# category_id :integer
# created_at :datetime not null
# user_id :integer (معرف المستخدم الذي أنشأ الموضوع)
# deleted_at :datetime (يقوم التطبيق بحذف المواضيع "بشكل ناعم". عند حذف موضوع، يتم تعيين خاصية `deleted_at` الخاصة به إلى :datetime. ما لم يُطلب صراحةً إرجاع المواضيع المحذوفة، تأكد من أن عمود `deleted_at` هو `NOT NULL` عند كتابة استعلامات تطلب بيانات متعلقة بالمواضيع.)
#
# اسم الجدول: categories
#
# id :integer not null, primary key
# name :string(50) not null
حتى الآن، النتائج التي أحصل عليها مثيرة للإعجاب. هذا يجعلني أفكر في أن المشكلة يمكن حلها فقط عن طريق توفير مخطط مشروح في الموجه.
من باب التسلية، سألته عن أنواع الاستعلامات التي يمكن أن يتوقع أن يواجه صعوبة فيها:
قيود GPT-3.5
- الاستعلامات الهرمية: الاستعلامات التي تتضمن هياكل بيانات هرمية مثل العلاقات المتكررة يمكن أن تكون معقدة. على سبيل المثال، الاستعلام عن علاقات الأصل والفرع ضمن تسلسل هرمي للفئات.
- الاستعلامات الزمنية: الاستعلامات التي تتضمن بيانات تعتمد على الوقت، مثل حساب الاتجاهات التاريخية أو تحليل البيانات على فترات زمنية محددة، قد تتطلب بناء جملة SQL أكثر تعقيدًا.
- دوال النافذة: بينما استخدمت دوال النافذة في استعلامات سابقة، فإن الاستخدامات الأكثر تقدمًا لدوال النافذة للمهام التحليلية المعقدة قد تكون صعبة.
- الاستعلامات الجغرافية المكانية: قواعد البيانات المكانية والاستعلام بناءً على البيانات الجغرافية، مثل العثور على مواقع قريبة أو علاقات مكانية معقدة، قد تكون معقدة.
- التجميعات المعقدة: التجميعات المتقدمة التي تتضمن مستويات متعددة من التجميع والحسابات قد تتطلب معرفة SQL أكثر تعقيدًا.
- استعلامات التحسين: كتابة استعلامات محسّنة للغاية تتضمن الفهارس، وضبط الاستعلام، وتحسينات الأداء يمكن أن تكون معقدة.
- الخوارزميات المخصصة: قد يكون تنفيذ الخوارزميات المخصصة أو المنطق داخل استعلام SQL صعبًا بسبب تعقيد المنطق المتضمن.
- عمليات الربط المعقدة: قد تتطلب شروط الربط المعقدة أو دمج عمليات ربط متعددة دراسة متأنية وربما بناء جملة SQL أكثر تعقيدًا.
- الاستعلامات الفرعية والاستعلامات الفرعية المرتبطة: بينما يمكنني التعامل مع الاستعلامات الفرعية، فإن الاستعلامات الفرعية المعقدة للغاية أو المتداخلة بعمق قد تكون أكثر صعوبة.
- التحويل المحوري وغير المحوري: يمكن أن يصبح تحويل البيانات بين التنسيقات الواسعة والطويلة (التحويل المحوري وغير المحوري) معقدًا في سيناريوهات معينة.
حيث أواجه مشاكل هو محاولة إزالة الغموض عن مخطط قاعدة البيانات الكامل. على سبيل المثال، إيجاد طريقة لشرح جدول user_actions. مجرد تقديم تعريفات لرموز action_type الخاصة به لا يكفي. يبدأ في تخمين user_id و target_user_id و acting_user_id.
الاستعلامات الأكثر طلبًا لا تستخدم معظم الجداول والأعمدة في قاعدة البيانات. إذا تمت إضافة الذكاء الاصطناعي إلى مستكشف البيانات، فقد يكون من المفيد النظر في وجود أوضاع “أساسية” و “متقدمة”. يمكن للوضع الأساسي توفير موجه يغطي معظم حالات الاستخدام. يمكن للوضع المتقدم السماح للمستخدمين بتحديد المعلومات التي يتم تعيينها في الموجه.
قد يكون من المثير للاهتمام العمل بشكل عكسي من بعض طلبات الاستعلامات على البيانات الوصفية، لمعرفة ما يلزم توفيره للموجه لتمكين GPT-3.5 من إنشاء الاستعلام بنجاح.