Skip to main content
التوثيق
مركز التعلّم

أتقن إشراف المحتوى عبر أدلة شاملة، وشروحات عملية، ووثائق API

روابط سريعة

دليل الإشراف على المحتوى باستخدام AI

يفحص Discuse النصوص والصور لاكتشاف الانطباع/السمّية، والرسائل المزعجة، واللغة غير المرغوب فيها، والكلمات المسيئة، والروابط، والصور الفاضحة، ثم يعيد نتيجة لكل فئة بحيث يمكن للكود لديك الموافقة على المحتوى أو وضع علامة عليه أو رفضه تلقائيًا. ترسل المحتوى إلى نقطة نهاية واحدة، POST https://api.discuse.com/api/v2/check، ثم تقرأ الدرجات المهيكلة التي تعود إليك. يشرح هذا الدليل آلية عمل عمليات الفحص، وأنماط الإشراف المرتبطة بها، وكيفية ربط Discuse API بسير العمل لديك.

ما المقصود بالإشراف على المحتوى باستخدام AI؟

يستخدم الإشراف على المحتوى باستخدام AI نماذج تعلّم الآلة لاكتشاف المحتوى الذي قد يكون ضارًا وتصنيفه تلقائيًا. فبينما يراجع المشرف البشري عنصرًا واحدًا في كل مرة، تمنح هذه النماذج المحتوى درجة تقييم فور وصوله، بحيث يمكن فحص المشاركات قبل أن تصل إلى المستخدمين الآخرين.

كيف يعمل؟

  1. إرسال المحتوى: أرسل النص و/أو عناوين URL للوسائط إلى moderation API.
  2. تشغيل الفحوصات: يشغّل API الفحوصات المفعّلة (المشاعر، اللغة، الرسائل المزعجة، الكلمات المسيئة، الصور، الروابط، مكافحة الفيروسات).
  3. تقييم كل فئة: يُرجع كل فحص درجات ووسم hit يوضح ما إذا كان قد تجاوز الحد الذي ضبطته.
  4. اتخاذ القرار: اقرأ has_violations (ودرجات كل فحص على حدة) للموافقة أو وضع علامة للمراجعة أو الرفض.

مع Discuse، يبدو الطلب على النحو التالي:

const response = await fetch('https://api.discuse.com/api/v2/check', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': process.env.DISCUSE_API_KEY
  },
  body: JSON.stringify({
    content: { text: 'message to check', image_urls: ['https://...'] },
    settings: { check_sentiment: true, check_spam: true, check_images: true }
  })
});
const result = await response.json(); // { has_violations, results: { sentiment, spamfinder, images, ... }, usage }

ما الذي يغطيه كل فحص في Discuse؟

الفحص (مفتاح settings) ما يغطيه أهم حقول النتيجة
check_sentiment السلبية، السمية، الألفاظ النابية، التهديدات، الإهانات في النص sentiment.is_toxic, sentiment.toxicity, sentiment.score, sentiment.hit
check_spam تصنيف النص كرسالة مزعجة spamfinder.label, spamfinder.confidence, spamfinder.is_spam, spamfinder.hit
check_language ما إذا كان النص يطابق اللغة المتوقعة language.language, language.confidence, language.hit
check_badwords مطابقات قائمة مخصصة بالكلمات المسيئة badwords.hit, badwords.matched_words
check_images الصور الصريحة في عناوين URL للصور images.porn, images.sexual, images.neutral, images.hit
check_links سمعة الروابط links.status, links.hit
check_antivirus البرمجيات الخبيثة في عناوين URL للمستندات/الملفات antivirus.status, antivirus.hit

كل مفتاح تفعيل هو قيمة منطقية. أما الحدود الرقمية التي تحوّل الدرجة إلى hit فتُضبط لكل مشروع من لوحة التحكم، ولا تُمرَّر مع كل طلب — راجع دليل ضبط الحدود.

فوائد الإشراف بالذكاء الاصطناعي

قابلية التوسّع

يعالج AI كميات من المحتوى لا تستطيع الفرق البشرية مجاراتها. يعيد استدعاء API واحد النتائج خلال أجزاء من الثانية، لذا يواكب الإشراف وتيرة المشاركات بدلًا من التراكم خلف طابور المراجعة. اقرن الفحوصات الآلية بطابور بشري للحالات الحدّية (كما سيأتي أدناه).

السرعة

تتيح لك الفحوصات الفورية مراجعة المحتوى قبل نشره:

// Pre-moderation: Check content before publishing
async function publishPost(content) {
  const moderation = await checkContent(content);

  if (moderation.has_violations) {
    return { published: false, reason: moderation.message };
  }

  // Content passes moderation
  return await saveAndPublish(content);
}

الاتساق

يطبّق AI القواعد نفسها على كل المحتوى على نحو موحّد، من دون تعب أو تفاوت بين المراجعين. القرارات قابلة للتكرار: فالمدخل نفسه، مع عتبات المشروع نفسها، ينتج أعلام hit نفسها، مما يجعل إنفاذ السياسات قابلًا للتدقيق.

بنية الإشراف

سير عمل الإشراف المسبق

User Submits → AI Check → Decision
                 ↓
    ┌───────────┼───────────┐
    ↓           ↓           ↓
  Allow      Review       Block
    ↓           ↓           ↓
 Publish   Human Queue   Reject

سير عمل الإشراف اللاحق

User Submits → Publish → AI Check → Action
                           ↓
              ┌────────────┼────────────┐
              ↓            ↓            ↓
            Safe       Borderline    Violation
              ↓            ↓            ↓
           Keep       Flag/Review    Remove

النهج الهجين (موصى به)

تعيّن استجابة Discuse القيمة has_violations بمجرد أن يتجاوز أي فحص مفعّل الحدّ المهيأ له، وتعرض الدرجات الأساسية لكل فئة حتى تتمكن من إضافة نطاق الثقة الخاص بك فوقها:

async function moderateContent(content) {
  const result = await checkContent(content);

  // Build a confidence figure from the scores you care about.
  // e.g. the toxicity score and the spam classifier confidence.
  const confidence = Math.max(
    result.results?.sentiment?.toxicity ?? 0,
    result.results?.spamfinder?.confidence ?? 0,
    result.results?.images?.porn ?? 0
  );

  // High confidence: automate.
  if (confidence > 0.95) {
    return result.has_violations
      ? { action: 'auto_remove', reason: result.message }
      : { action: 'auto_approve' };
  }

  // Medium confidence: route to a human.
  if (confidence > 0.5) {
    await addToReviewQueue(content, result);
    return { action: 'pending_review' };
  }

  // Low confidence: approve, keep watching.
  return { action: 'approve_with_monitoring' };
}

تنفيذ الإشراف باستخدام AI

الخطوة 1: حدّد سياستك

قرّر ما هو المحتوى المقبول وكيفية التعامل مع كل فئة قبل استدعاء API. في Discuse، يوجد الحدّ الرقمي لكل فئة ضمن إعدادات مشروعك (لوحة التحكم)، لذلك تربط سياسة تطبيقك نتيجة API بإجراء معيّن بدلًا من إعادة تحديد الحدّ:

const MODERATION_POLICY = {
  // What to do when a given Discuse check reports a hit.
  // Thresholds themselves are configured per project in the dashboard.
  actions: {
    sentiment: 'block',   // toxic / threatening text
    spam: 'block',
    badwords: 'flag',
    images: 'block',      // explicit imagery
    links: 'flag'
  }
};

الخطوة 2: دمج API

أرسل المحتوى وعمليات الفحص التي تريد تفعيلها لهذا الطلب. كل مفتاح تبديل check_* هو قيمة منطقية اختيارية تتجاوز الإعداد الافتراضي للمشروع في هذا الاستدعاء:

async function checkContent(content) {
  const response = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({
      content: {
        text: content.text,
        image_urls: content.images
      },
      settings: {
        check_sentiment: true,
        check_spam: true,
        check_images: true
      }
    })
  });

  if (!response.ok) {
    throw new Error(`Discuse API returned ${response.status}`);
  }
  return response.json();
}

الخطوة 3: تطبيق القرارات

اربط كل فحص يُبلغ عن hit بالإجراء الذي حدّدته:

function applyModerationDecision(result) {
  const r = result.results || {};

  if (r.sentiment?.hit) return { action: MODERATION_POLICY.actions.sentiment, category: 'sentiment' };
  if (r.spamfinder?.hit) return { action: MODERATION_POLICY.actions.spam, category: 'spam' };
  if (r.images?.hit)    return { action: MODERATION_POLICY.actions.images, category: 'images' };
  if (r.badwords?.hit)  return { action: MODERATION_POLICY.actions.badwords, category: 'badwords' };
  if (r.links?.hit)     return { action: MODERATION_POLICY.actions.links, category: 'links' };

  return { action: 'allow' };
}

الخطوة 4: التعامل مع الحالات الطرفية

async function handleModerationResult(content, result) {
  switch (result.action) {
    case 'block':
      await notifyUser(content.author, 'content_blocked', result);
      await logModeration(content, result);
      return false;

    case 'flag':
      await addToReviewQueue(content, result);
      await publishWithWarning(content);
      return true;

    case 'allow':
      await publish(content);
      return true;

    default:
      // Unknown action - fail safe by blocking
      await logError('unknown_moderation_action', result);
      return false;
  }
}

أفضل الممارسات

ابدأ بحذر، ثم عدّل بمرور الوقت

ابدأ بحدود أكثر صرامة للمشروع، ثم خفّفها مع قياس النتائج الإيجابية الخاطئة. في Discuse، تُعدّ هذه الحدود إعدادات خاصة بالمشروع، لذا يتم ضبطها من لوحة التحكم (أو عبر API تحديث الإعدادات)، وليس ضمن كل طلب. راجع دليل ضبط الحدود لمعرفة سير العمل.

احتفظ بقائمة انتظار للمراجعة البشرية

ينبغي أن يعزّز AI الحكم البشري في الحالات الحدّية، لا أن يستبدله:

async function processReviewQueue() {
  const items = await getReviewQueue();

  for (const item of items) {
    // Present to human reviewer with AI context
    const reviewUI = {
      content: item.content,
      ai_scores: item.moderation_result,
      similar_decisions: await getSimilarPreviousDecisions(item)
    };

    // Human makes final decision
    const decision = await presentToReviewer(reviewUI);

    // Log for model improvement
    await logHumanDecision(item, decision);
  }
}

راقب وحسّن

تتبّع المقاييس الأساسية لتحسين نظام الإشراف لديك:

const METRICS = {
  // Accuracy metrics
  false_positive_rate: 'Content incorrectly blocked',
  false_negative_rate: 'Harmful content missed',

  // Operational metrics
  average_response_time: 'API latency',
  review_queue_depth: 'Human review backlog',

  // User impact
  appeal_rate: 'Users appealing decisions',
  appeal_success_rate: 'Appeals overturned'
};

تعامل مع الاعتراضات بسلاسة

عندما يقدّم مستخدم اعتراضًا، وجّه العنصر إلى مراجع بشري بدلًا من إعادة اتخاذ القرار تلقائيًا. امنح المراجع درجات Discuse الأصلية وسجل المستخدم كسياق:

async function handleAppeal(contentId, userId) {
  const original = await getContentWithModeration(contentId);

  await addToReviewQueue(contentId, {
    type: 'appeal',
    original_decision: original.moderation, // Discuse `results` saved at decision time
    author_history: await getAuthorHistory(userId)
  });

  return { status: 'pending', message: 'Under review' };
}

لا يحتوي API نفسه على معلمة "context" أو "author history" لكل طلب — فالسياق أمر تطبّقه من جانبك عند اختيار الحدود وتوجيه العناصر للمراجعة.

الأخطاء الشائعة

الإفراط في الاعتماد على AI

أتمتة كل قرار تعني أتمتة كل خطأ. أبقِ العنصر البشري حاضرًا في:

  • القرارات السياقية المعقّدة
  • المحتوى عالي المخاطر (قانوني، سلامة)
  • الاستئنافات والحالات الاستثنائية

تجاهل السياق

قد تكون الكلمات نفسها مؤذية أو مقبولة بحسب السياق:

"I'm going to kill it at this interview!" // Positive
"I'm going to kill you"                    // Threat

يقيّم Discuse كل رسالة على حدة؛ ولا يوفّر معامل "context" على مستوى الطلب. طبّق السياق من جانبك: اختر عتبات أكثر صرامة أو أكثر تساهلًا لكل موضع (منشور عام مقابل رسالة مباشرة)، ووجّه حالات hit الحدّية إلى المراجعة البشرية.

الضبط ثم النسيان

تتطلّب إدارة المحتوى ضبطًا مستمرًا:

  • راقب معدلات النتائج الإيجابية/السلبية الخاطئة
  • حدّث العتبات بناءً على البيانات
  • راجع أنماط المحتوى الجديدة
  • أعد تدريب النماذج أو حدّثها

تطبيق غير متّسق

طبّق السياسة وفق القاعدة، لا وفق هوية الناشر. اجعل العتبات مستندة إلى مستوى ثقة موثّق بدلًا من الاستثناءات الارتجالية:

// Avoid: per-person exceptions
if (user.isInfluencer) { /* lenient */ }

// Prefer: thresholds keyed to a documented trust level,
// configured the same way for everyone in that level.
const action = MODERATION_POLICY.actions[category];

الخطوات التالية

كتبه فريق Discuse · آخر تحديث June 2026

مقالات ذات صلة

تكوين عتبات الاكتشاف

وازن بين النتائج الإيجابية الكاذبة والسلبية الكاذبة لحالة الاستخدام لديك

توسيع نطاق إدارة المحتوى

أنماط معمارية لإدارة المحتوى عالي الحجم