دليل الإشراف على المحتوى باستخدام AI
يفحص Discuse النصوص والصور لاكتشاف الانطباع/السمّية، والرسائل المزعجة، واللغة غير المرغوب فيها، والكلمات المسيئة، والروابط، والصور الفاضحة، ثم يعيد نتيجة لكل فئة بحيث يمكن للكود لديك الموافقة على المحتوى أو وضع علامة عليه أو رفضه تلقائيًا. ترسل المحتوى إلى نقطة نهاية واحدة، POST https://api.discuse.com/api/v2/check، ثم تقرأ الدرجات المهيكلة التي تعود إليك. يشرح هذا الدليل آلية عمل عمليات الفحص، وأنماط الإشراف المرتبطة بها، وكيفية ربط Discuse API بسير العمل لديك.
ما المقصود بالإشراف على المحتوى باستخدام AI؟
يستخدم الإشراف على المحتوى باستخدام AI نماذج تعلّم الآلة لاكتشاف المحتوى الذي قد يكون ضارًا وتصنيفه تلقائيًا. فبينما يراجع المشرف البشري عنصرًا واحدًا في كل مرة، تمنح هذه النماذج المحتوى درجة تقييم فور وصوله، بحيث يمكن فحص المشاركات قبل أن تصل إلى المستخدمين الآخرين.
كيف يعمل؟
- إرسال المحتوى: أرسل النص و/أو عناوين URL للوسائط إلى moderation API.
- تشغيل الفحوصات: يشغّل API الفحوصات المفعّلة (المشاعر، اللغة، الرسائل المزعجة، الكلمات المسيئة، الصور، الروابط، مكافحة الفيروسات).
- تقييم كل فئة: يُرجع كل فحص درجات ووسم
hitيوضح ما إذا كان قد تجاوز الحد الذي ضبطته. - اتخاذ القرار: اقرأ
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];
الخطوات التالية
- تهيئة العتبات - اضبط الإشراف بدقة
- توسيع نطاق الإشراف على المحتوى - تعامل مع الأحجام الكبيرة
- تحليل النصوص - تعمّق في الإشراف على النصوص
- اكتشاف NSFW في الصور - حماية المحتوى المرئي