تمديدًا لهذه الفكرة قليلاً، فإن السماح للمستخدمين بالتفاعل مع التطبيقات باستخدام اللغة الطبيعية هو تقريبًا حلمي فيما يتعلق بالذكاء الاصطناعي. مع Discourse ومكون Data Explorer الإضافي، قد يكون من الممكن الحصول على نتائج من مطالبات مثل “إرجاع قائمة بالمستخدمين الذين أبدوا اهتمامًا بالإشراف”. أو حتى أفضل، “إرسال دعوة إلى مجموعة community_moderation لجميع المستخدمين الذين أبدوا اهتمامًا بالإشراف”.
بالعودة إلى ما هو ممكن الآن:
من خلال الاختبار مع ChatGPT 3.0 و 3.5، حصلت على نتائج جيدة عند مطالبتها بإرجاع استعلام PostgreSQL ونسخ بنية الجداول التي أهتم بها في المطالبة. على سبيل المثال:
ملخص
أنا: قم بإرجاع استعلام postgresql يسرد جميع أسماء المستخدمين للمستخدمين الموجودين في مجموعة “community_moderators” لهيكل قاعدة البيانات التالي:
# == معلومات المخطط ==
#
# اسم الجدول: groups
#
# id :integer not null, primary key
# name :string not null
# == معلومات المخطط ==
#
# اسم الجدول: group_users
#
# id :integer not null, primary key
# group_id :integer not null
# == معلومات المخطط ==
#
# اسم الجدول: users
#
# id :integer not null, primary key
# username :string(60) not null
ChatGPT 3.5: بالتأكيد، إليك استعلام PostgreSQL يسرد جميع أسماء المستخدمين للمستخدمين الموجودين في مجموعة “community_moderators” بناءً على بنية قاعدة البيانات المقدمة:
SELECT u.username
FROM users u
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators';
يسترجع هذا الاستعلام أسماء المستخدمين من جدول users عن طريق ربطه بجدول group_users بمعرف المستخدم ثم ربطه بجدول groups بمعرف المجموعة. يقوم بتصفية النتائج لتشمل فقط أسماء المستخدمين للمستخدمين الموجودين في مجموعة “community_moderators”.
أنا: إليك بنية جداول المواضيع والمنشورات في التطبيق:
# == معلومات المخطط ==
#
# اسم الجدول: topics
#
# id :integer not null, primary key
# title :string not null
# == معلومات المخطط ==
#
# اسم الجدول: posts
#
# id :integer not null, primary key
# user_id :integer
# topic_id :integer not null
# post_number :integer not null
# raw :text not null
قم بإرجاع استعلام يسرد جميع معرفات المواضيع، ومعرفات المنشورات، وأسماء المستخدمين لجميع المنشورات التي أنشأها أعضاء مجموعة “community_moderators” والتي تشير إلى اهتمام الناشر بكيفية الإشراف على المناقشات المستقطبة.
ChatGPT 3.5: لتحقيق ذلك، ستحتاج إلى ربط جداول posts و topics و users و group_users بناءً على المخطط المقدم. إليك استعلام PostgreSQL يسترجع المعلومات المطلوبة:
SELECT t.id AS topic_id, p.id AS post_id, u.username
FROM posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators'
AND (p.raw ILIKE '%moderate%' OR p.raw ILIKE '%polarizing%' OR p.raw ILIKE '%discussion%');
يسترجع هذا الاستعلام topic_id و post_id و username لجميع المنشورات التي أنشأها أعضاء مجموعة “community_moderators” والتي تحتوي على كلمات مفتاحية معينة تشير إلى اهتمام بالإشراف على المناقشات المستقطبة. يتم استخدام عامل التشغيل ILIKE لمطابقة الأنماط غير الحساسة لحالة الأحرف في عمود raw في جدول posts.
يرجى ملاحظة أن هذا الاستعلام يفترض أن الكلمات المفتاحية التي قدمتها تشير إلى المنشورات المطلوبة. قد تحتاج إلى تعديل أو توسيع الكلمات المفتاحية بناءً على معاييرك المحددة.
أنا: اكتب استعلامًا يُرجع عدد المنشورات التي تم إنشاؤها في كل فترة أسبوعية منذ سبتمبر 2022، والتي أنشأها أعضاء مجموعة community_moderators والتي تشير إلى اهتمام بكيفية الإشراف على المناقشات المستقطبة.
ChatGPT 3.5: لتحقيق ذلك، يمكنك استخدام استعلام PostgreSQL التالي لإرجاع عدد المنشورات التي تم إنشاؤها في كل فترة أسبوعية منذ سبتمبر 2022، والتي أنشأها أعضاء مجموعة “community_moderators” والتي تشير إلى اهتمام بكيفية الإشراف على المناقشات المستقطبة:
SELECT
DATE_TRUNC('week', p.created_at) AS week_start,
COUNT(p.id) AS post_count
FROM
posts p
JOIN
users u ON p.user_id = u.id
JOIN
group_users gu ON u.id = gu.user_id
JOIN
groups g ON gu.group_id = g.id
WHERE
g.name = 'community_moderators'
AND (p.raw ILIKE '%moderate%'
OR p.raw ILIKE '%polarizing%'
OR p.raw ILIKE '%political%'
OR p.raw ILIKE '%contentious%'
OR p.raw ILIKE '%debate%'
OR p.raw ILIKE '%controversial%'
OR p.raw ILIKE '%discussion%')
AND p.created_at >= '2022-09-01' -- تاريخ البدء: سبتمبر 2022
GROUP BY
week_start
ORDER BY
week_start;
يقوم هذا الاستعلام بحساب عدد المنشورات التي أنشأها أعضاء مجموعة “community_moderators” والتي تحتوي على الكلمات المفتاحية المحددة في كل فترة أسبوعية منذ سبتمبر 2022. يقوم بتجميع النتائج حسب الأسبوع وترتيبها زمنيًا. يرجى التأكد من تعديل أسماء الأعمدة وعلاقات الجداول بناءً على مخطط قاعدة البيانات الفعلي الخاص بك.
تبدو النتائج جيدة بالنسبة لي وتمثل أنواع الاستعلامات التي استغرقت مني وقتًا طويلاً لكتابتها في الماضي. أفترض أنه سيكون من الممكن تدريب نموذج على بنية قاعدة بيانات Discourse بحيث يمكن ترك التفاصيل حول البنية خارج المطالبات.