ذكاء اصطناعي ديسكورسي - آثار الويب

ما هي القطع الأثرية للذكاء الاصطناعي؟

القطع الأثرية للذكاء الاصطناعي هي أدوات قوية تسمح للمستخدمين بإنشاء وتضمين والتفاعل مع مكونات ديناميكية قائمة على الويب مباشرة داخل منشور Discourse. يمكن أن تحتوي هذه المكونات على HTML و CSS و JavaScript مخصصة، مما يتيح مجموعة متنوعة من حالات الاستخدام مثل:

  • تضمين اختبارات تفاعلية أو نماذج.
  • تصور البيانات برسومات ورسوم متحركة غنية.
  • دمج تطبيقات أو أدوات ويب خفيفة الوزن.
  • أداة للتعرف على أطر عمل الويب ومكتبات JavaScript والمزيد.

تعزز القطع الأثرية للذكاء الاصطناعي منشورات Discourse بسلاسة عن طريق إضافة التفاعلية مع ضمان تجربة تصفح آمنة.


إعدادات الموقع

يمكن للمسؤولين تكوين العديد من الإعدادات:

1. تمكين الميزة

  • الإعداد: discourse_ai_enabled
    • تأكد من تمكين هذا الإعداد العام لكي تعمل القطع الأثرية للذكاء الاصطناعي.

2. أوضاع الأمان

  • الإعداد: ai_artifact_security
    • الخيارات:
      • disabled: تعطيل نظام القطع الأثرية
      • lax: تظهر القطع الأثرية تلقائيًا في المنشورات دون الحاجة إلى تفاعل المستخدم.
      • strict: يجب على المستخدمين تنشيط القطع الأثرية بشكل صريح في متصفحهم عن طريق النقر فوق زر “عرض” أو “تشغيل”. يوصى بهذا الإعداد للبيئات التي تهتم بالأمان. (الافتراضي)

3. الوصول إلى منشئ القطع الأثرية

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

استخدام القطع الأثرية للذكاء الاصطناعي في المنشورات

يتم إنشاء القطع الأثرية تلقائيًا بواسطة شخصية منشئ القطع الأثرية عند الطلب.

<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>

تم إنشاء القطعة الأثرية أعلاه باستخدام GPT-4o ومكتبة anime.js

بمجرد إنشائها، تكون خاصة بك وبشخصية منشئ القطع الأثرية. يمكن للمستخدمين الذين يمكنهم مشاركة محادثات الذكاء الاصطناعي (أولئك الذين ينتمون إلى ai bot public sharing allowed groups) أيضًا جعل القطعة الأثرية عامة عن طريق مشاركة المحادثة.

بمجرد المشاركة، يمكنك استخدام ترميز HTML التالي لعرضها في منشور:

<div class="ai-artifact" data-ai-artifact-version="3" data-ai-artifact-id="71"></div>

(حيث الإصدار ومعرف القطعة الأثرية هما القطعة الأثرية المعتمدة الخاصة بك)

اعتبارات الأمان

نظرًا لأن القطع الأثرية للذكاء الاصطناعي يمكنها تنفيذ HTML و CSS و JavaScript مكتوبة خصيصًا، فقد نفذت Discourse ضمانات قوية:

1. العزل في iFrames

  • يتم عرض القطع الأثرية داخل حاويات iframe معزولة مع سمات sandbox لتقييد العمليات غير الآمنة المحتملة مثل:
    • البرمجة النصية عبر المواقع.
    • الوصول إلى مواقع أو واجهات برمجة تطبيقات خارجية.

2. سياسة أمان المحتوى (CSP)

3. وضع الأمان

  • الوضع الصارم: يوصى به للبيئات التي لا يتم فيها الوثوق بالقطع الأثرية بالكامل. سيحتاج المستخدمون إلى تنشيط القطع الأثرية يدويًا في متصفحهم قبل عرضها.

4. الوصول والأذونات

  • القطع الأثرية مرئية فقط لـ:
    • منشئها.
    • المستخدمين الذين لديهم الأذونات الصحيحة لعرض المنشور المرتبط (مثل الرسائل الخاصة).
  • يجب تمييز القطع الأثرية العامة بشكل صريح على أنها كذلك عن طريق مشاركة محادثة الذكاء الاصطناعي.

5. حدود الطول

  • يتم تحديد حجم HTML و CSS و JavaScript في القطعة الأثرية بـ 64 كيلوبايت لكل منها. يضمن هذا بقاء المكونات خفيفة الوزن وعدم إثقال كاهل المستخدمين أو الأنظمة.

تخزين القطع الأثرية

يمكن للقطع الأثرية على الويب تخزين بيانات لكل مستخدم اختياريًا. للقيام بذلك، أشر إلى منشئ القطعة الأثرية بـ “استخدام تخزين المستخدم” أو ما شابه.

يسمح هذا النظام بتخزين أزواج المفاتيح والقيم:

  • خاص (مرئي فقط للمسؤولين ومستخدمين محددين)
  • عام (مرئي لجميع المستخدمين بما في ذلك المجهولين)

تتم حماية أزواج المفاتيح والقيم ضد المنشور الذي نشأت منه القطعة الأثرية، ومع ذلك، إذا شاركت قطعة أثرية بشكل عام، فسيُسمح للجميع بإضافة مفاتيح.

للتحكم في التخزين، يمكنك استخدام الإعدادات المخفية:

  • ai_artifact_kv_value_max_length (العناصر الافتراضية قد تكون 5000 حرف أو أقصر فقط)
  • ai_artifact_max_keys_per_user_per_artifact (الافتراضي 100)

أسئلة متكررة

من يمكنه إنشاء القطع الأثرية للذكاء الاصطناعي؟

افتراضيًا، يمكن للموظفين فقط (مثل المسؤولين أو المشرفين) إنشاء القطع الأثرية من خلال شخصية منشئ القطع الأثرية. تبسط هذه الشخصية عملية تصميم أدوات الويب التفاعلية باستخدام HTML و CSS و JavaScript.

ماذا يحدث إذا نقرت على قطعة أثرية؟

  • في الوضع المرن، تظهر القطع الأثرية تلقائيًا.
  • في الوضع الصارم، يؤدي النقر فوق زر “تشغيل” إلى تنشيط القطعة الأثرية ويسمح بتحميلها في متصفحك.

هل القطع الأثرية للذكاء الاصطناعي آمنة؟

نعم. تعمل القطع الأثرية للذكاء الاصطناعي في بيئات خاضعة للرقابة الصارمة:

  • يتم عزلها ولا يمكنها التفاعل مع تطبيق Discourse أو سياق المستخدم مباشرة، إلا عبر مراسلة iframe.
  • يمنحك الوضع الصارم التحكم في التنشيط.
  • القطع الأثرية خاصة افتراضيًا، تحتاج إلى المشاركة بنشاط لمنح وصول عام.

هل يمكنني رؤية الكود المصدري للقطع الأثرية؟

نعم. عندما يقوم Discourse AI بإنشاء القطع الأثرية، فإنه يتضمن الترميز الكامل و CSS و JavaScript.

ما هي نماذج اللغات الكبيرة المدعومة؟

يمكن إنشاء القطع الأثرية باستخدام أي نموذج لغة كبير قمت بتكوينه، ومع ذلك، تتخصص نماذج اللغات الكبيرة المختلفة وتكون مضبوطة بشكل أدق لإنشاء القطع الأثرية.

لقد شهدنا نتائج جيدة مع o3، و Anthropic Claude Sonnet 3.7 - 4.0، و GPT-4.1، و Gemini Pro 2.5 والمزيد. بشكل عام، ستؤدي النماذج الأكثر تقدمًا أداءً أفضل.

هناك جانب كبير من التجربة والخطأ مع إنشاء القطع الأثرية، والتجريب هو المفتاح.

21 إعجابًا

سيكون من الرائع أن يكون لدينا تحكم أكثر دقة في خصوصية القطع الأثرية بحيث يمكن مشاركتها مع مجموعات معينة فقط. يشبه إلى حد كبير كيف تعمل أذونات الفئات حاليًا :smiley:

أعتقد أنه إذا قمت بإضافة المجموعة إلى الرسائل الخاصة بالبوت فقد ينجح الأمر؟

إعجاب واحد (1)

سأقوم بتجربته والإبلاغ عن النتائج هنا. لدي حالة استخدام متخصصة تتطلب أن تكون القطع الأثرية متاحة فقط لمجموعة واحدة في فئة خاصة واحدة

إعجاب واحد (1)

لذلك قمت بوضع علامة على روبوت Web Artifact Creator في موضوع جديد في فئة خاصة يمكن للمجموعة الوصول إليها حتى يتمكن من إنشاء قطعة أثرية لا يمكنني أنا وتلك المجموعة المحددة رؤيتها. ومع ذلك، فإن نافذة iframe للقطعة الأثرية تعرض فقط الرسالة الافتراضية “عذرًا! هذه الصفحة غير موجودة أو خاصة.” التي تظهر عندما لا يمتلك المستخدم حق الوصول إلى صفحة معينة.

لذلك قمت بإنشاء استعلام مستكشف بيانات للتحقق من من يمكنه رؤية الموضوع، ويظهر المستخدمون في تلك المجموعة الذين يجب أن يكونوا قادرين على رؤية القطعة الأثرية أنهم قادرون على رؤيتها وفقًا لقاعدة البيانات.

لذا ربما يكون هذا خطأ؟

استعلام SQL الخاص بي
-- [params]
-- int :artifact_id = 22

WITH artifact_info AS (
  SELECT 
    a.id,
    a.user_id as creator_id,
    a.post_id,
    p.topic_id,
    t.category_id,
    t.archetype,
    c.read_restricted,
    t.title as topic_title
  FROM ai_artifacts a
  LEFT JOIN posts p ON a.post_id = p.id
  LEFT JOIN topics t ON p.topic_id = t.id
  LEFT JOIN categories c ON t.category_id = c.id
  WHERE a.id = :artifact_id
),
users_with_access AS (
  -- Creator always has access
  SELECT 
    ai.creator_id as user_id,
    'Creator' as access_reason
  FROM artifact_info ai
  
  UNION
  
  -- Users with access to private messages
  SELECT 
    tau.user_id,
    'Private Message Access' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_users tau ON ai.topic_id = tau.topic_id
  WHERE ai.archetype = 'private_message'
  
  UNION
  
  -- Group members with access to private messages
  SELECT 
    gu.user_id,
    'Private Message Group Access' as access_reason
  FROM artifact_info ai
  JOIN topic_allowed_groups tag ON ai.topic_id = tag.topic_id
  JOIN group_users gu ON tag.group_id = gu.group_id
  WHERE ai.archetype = 'private_message'
  
  UNION
  
  -- Users with access to restricted categories
  SELECT 
    gu.user_id,
    'Category Group Access' as access_reason
  FROM artifact_info ai
  JOIN category_groups cg ON ai.category_id = cg.category_id
  JOIN group_users gu ON cg.group_id = gu.group_id
  WHERE ai.read_restricted = true
    AND ai.archetype != 'private_message'
    AND cg.permission_type IN (1, 2) -- full access or create/reply/see
  
  UNION
  
  -- All users if topic is public (not restricted and not private message)
  SELECT 
    u.id as user_id,
    'Public Access' as access_reason
  FROM artifact_info ai
  CROSS JOIN users u
  WHERE (ai.read_restricted = false OR ai.read_restricted IS NULL)
    AND (ai.archetype != 'private_message' OR ai.archetype IS NULL)
    AND u.active = true
)

SELECT 
  u.id as user_id,
  u.username,
  u.name,
  u.trust_level,
  uwa.access_reason,
  ai.topic_title
FROM users_with_access uwa
JOIN users u ON uwa.user_id = u.id
CROSS JOIN artifact_info ai
WHERE u.active = true
ORDER BY u.username