مع ChatGPT 3.5، أحصل على نتائج غير متوقعة عند تقديم المخطط الكامل. على سبيل المثال، يحاول باستمرار العثور على مؤلف الموضوع في جدول topic_users.
أحصل على نتائج ناجحة من خلال تقييد المعلومات في المطالبة بالجدول والأعمدة المطلوبة فقط لكتابة الاستعلام. أيضًا، من خلال إضافة بعض المعلومات الإضافية حول كيفية استخدام الأعمدة. على سبيل المثال:
# اسم الجدول: user_actions
#
# id :integer not null, primary key
# action_type :integer not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
# user_id :integer not null (المستخدم الذي سيتم نسب الإجراء إليه)
# target_topic_id :integer
# acting_user_id :integer (المستخدم الذي نفذ الإجراء، على سبيل المثال، يمكن لمستخدم من الطاقم تنفيذ إجراء نيابة عن مستخدم عادي)
# created_at :datetime not null
طريقة أخرى للنظر في جعل هذا يعمل مع إضافة Data Explorer هي جعل المستخدمين ملء نموذج يُنشأ ديناميكيًا يسرد البيانات التي يبحثون عنها، والشروط التي يريدون تطبيقها على البيانات. يمكن إنشاء المطالبة برمجياً بواسطة Discourse، ثم إرسالها إلى نموذج اللغة الكبير (LLM) لكتابة الاستعلام.
تعديل: @jordan-violet، قد تكون هذه نقطة انطلاق مفيدة. إليك مخطط جزئي مُعلق يعمل معي. يعمل بشكل جيد طالما أنني أقيد استعلاماتي بحيث يمكن الإجابة عليها من خلال المخطط المقدم. لقد أضفت تفاصيل إضافية إلى المخطط لتوضيح النقاط التي تبدو أنها تربك ChatGPT. العيب الواضح في هذا النهج هو أن المخطط المعلق بالكامل سيتجاوز حد الرموز (tokens) الخاص بـ ChatGPT 3.5. لقد قمت بتضمين بعض المعلومات في المخطط يمكن حذفها لتقليل عدد الرموز المستخدمة.
ملخص
# == Schema Information
#
# Table name: application_requests
#
# id :integer not null, primary key
# date :date not null
# req_type :integer not null ("http_total"=>0,"http_2xx"=>1,"http_background"=>2,"http_3xx"=>3,"http_4xx"=>4,"http_5xx"=>5,"page_view_crawler"=>6,"page_view_logged_in"=>7,"page_view_anon"=>8,"page_view_logged_in_mobile"=>9,"page_view_anon_mobile"=>10,"api"=>11,"user_api"=>12)
# count :integer default(0), not null
#
# Table name: users
#
# id :integer not null, primary key
# username :string(60) not null
# created_at :datetime not null
# updated_at :datetime not null
# name :string (الاسم الحقيقي للمستخدم)
# last_posted_at :datetime
# active :boolean default(FALSE), not null
# username_lower :string(60) not null
# last_seen_at :datetime
# admin :boolean default(FALSE), not null
# trust_level :integer not null
# approved :boolean default(FALSE), not null
# approved_by_id :integer
# approved_at :datetime
# previous_visit_at :datetime
# suspended_at :datetime
# suspended_till :datetime
# date_of_birth :date
# ip_address :inet
# moderator :boolean default(FALSE)
# title :string
# locale :string(10)
# primary_group_id :integer
# registration_ip_address :inet
# staged :boolean default(FALSE), not null
# first_seen_at :datetime
# silenced_till :datetime
#
# Table name: topics
#
# id :integer not null, primary key
# title :string not null
# last_posted_at :datetime
# created_at :datetime not null
# updated_at :datetime not null
# views :integer default(0), not null
# posts_count :integer default(0), not null
# user_id :integer (معرف المستخدم الذي أنشأ الموضوع)
# last_post_user_id :integer not null (معرف المستخدم الذي أنشأ آخر منشور في الموضوع)
# reply_count :integer default(0), not null
# deleted_at :datetime
# highest_post_number :integer default(0), not null
# like_count :integer default(0), not null
# category_id :integer
# visible :boolean default(TRUE), not null
# moderator_posts_count :integer default(0), not null
# closed :boolean default(FALSE), not null
# archived :boolean default(FALSE), not null
# bumped_at :datetime not null
# archetype :string default("regular"), not null (يمكن تعيينه إما إلى "regular" أو "private_message")
# slug :string
# deleted_by_id :integer (معرف المستخدم الذي حذف الموضوع)
# participant_count :integer default(1)
# word_count :integer
# excerpt :string
# highest_staff_post_number :integer default(0), not null
#
# Table name: posts
#
# id :integer not null, primary key
# user_id :integer (معرف المستخدم الذي أنشأ المنشور)
# topic_id :integer not null
# post_number :integer not null (يحدد ترتيب المنشور داخل موضوعه)
# raw :text not null (محتوى المنشور)
# created_at :datetime not null
# updated_at :datetime not null
# reply_to_post_number :integer (رقم المنشور الذي يُعد هذا المنشور ردًا عليه)
# reply_count :integer default(0), not null
# deleted_at :datetime
# like_count :integer default(0), not null
# bookmark_count :integer default(0), not null
# reads :integer default(0), not null (عدد مرات قراءة المنشور)
# post_type :integer default(1), not null (:regular=>1, :moderator_action=>2, :small_action=>3, :whisper=>4)
# last_editor_id :integer (معرف المستخدم الذي قام بتحرير المنشور آخر مرة)
# hidden :boolean default(FALSE), not null
# hidden_reason_id :integer (:flag_threshold_reached=>1,:flag_threshold_reached_again=>2,:new_user_spam_threshold_reached=>3,:flagged_by_tl3_user=>4,:email_spam_header_found=>5,:flagged_by_tl4_user=>6,:email_authentication_result_header=>7,:imported_as_unlisted=>8)
# edit_reason :string
# word_count :integer
# wiki :boolean default(FALSE), not null
#
# Table name: categories
#
# id :integer not null, primary key
# name :string(50) not null
# topic_id :integer (معرف الموضوع المستخدم لوصف الفئة)
# topic_count :integer default(0), not null
# created_at :datetime not null
# updated_at :datetime not null
# user_id :integer not null (معرف المستخدم الذي أنشأ الموضوع)
# topics_year :integer default(0)
# topics_month :integer default(0)
# topics_week :integer default(0)
# slug :string not null
# description :text
# text_color :string(6) default("FFFFFF"), not null
# read_restricted :boolean default(FALSE), not null
# auto_close_hours :float
# post_count :integer default(0), not null
# latest_post_id :integer
# latest_topic_id :integer
# position :integer
# parent_category_id :integer
# posts_year :integer default(0)
# posts_month :integer default(0)
# posts_week :integer default(0)
# topics_day :integer default(0)
# posts_day :integer default(0)
#
# Table name: groups
#
# id :integer not null, primary key
# name :string not null
# created_at :datetime not null
# automatic :boolean default(FALSE), not null
# user_count :integer default(0), not null
# title :string
# bio_raw :text (وصف المجموعة)
# allow_membership_requests :boolean default(FALSE), not null
# full_name :string
# visibility_level :integer default(0), not null (من يمكنه رؤية المجموعة :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
# messageable_level :integer default(0) (من يمكنه مراسلة المجموعة :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
# mentionable_level :integer default(0) (من يمكنه ذكر المجموعة :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
# members_visibility_level :integer default(0), not null (من يمكنه رؤية أعضاء المجموعة :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#
# Table name: group_users
#
# id :integer not null, primary key
# group_id :integer not null
# user_id :integer not null
# created_at :datetime not null
#
# Table name: user_actions
#
# id :integer not null, primary key
# action_type :integer not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
# user_id :integer not null (المستخدم الذي سيتم نسب الإجراء إليه)
# target_topic_id :integer
# target_post_id :integer
# target_user_id :integer (على سبيل المثال، معرف المستخدم الذي تم الإعجاب بمنشوره)
# acting_user_id :integer (المستخدم الذي نفذ الإجراء، على سبيل المثال، يمكن لمستخدم من الطاقم تنفيذ إجراء نيابة عن مستخدم عادي)
# created_at :datetime not null
# updated_at :datetime not null
#
# Table name: topic_views
#
# topic_id :integer not null
# viewed_at :date not null
# user_id :integer (سيتم تعيينه إذا تم عرض الموضوع بواسطة مستخدم مسجل الدخول)
# ip_address :inet (سيتم تعيينه إذا تم عرض الموضوع بواسطة مستخدم مجهول)
#
# Table name: user_visits
#
# id :integer not null, primary key
# user_id :integer not null
# visited_at :date not null
# posts_read :integer default(0)
# mobile :boolean default(FALSE) (سيتم تعيينه إلى TRUE إذا قام المستخدم بزيارة عبر جهاز محمول)
# time_read :integer default(0), not null (القيمة المعادة هي عدد ثوانٍ الزيارة)
إليك رابطًا لجلسة دردشة جربت فيها ذلك: ChatGPT
إذا كنت ترغب في تجربة توسيع هذه القائمة، فإن أسهل طريقة للقيام بذلك هي نسخ المخطط من أسفل النموذج الذي تهتم به، مباشرةً من كود Discourse: discourse/app/models at main · discourse/discourse · GitHub.