الانتقال إلى المحتوى الرئيسي
إذا كان تطبيقك يبث، فأنت بحاجة إلى إجابة واحدة مباشرة قبل أن تثق بسياسة محتوى: ما الذي يُفرض فعلاً على استجابة SSE. حاجز الحماية الذي يفحص استجابة كاملة سهل التفكير فيه؛ أما حاجز الحماية الذي عليه التصرف بناءً على الـ deltas وهي تُدفَع إلى المتصفح فليس كذلك. هذه الصفحة هي مصفوفة تغطية حواجز الحماية على البث — كل إجراء، عبر مرحلتي المدخلات والمخرجات، على حركة المرور المبثوثة وغير المبثوثة — مكتوبة لتكون دقيقة حول كيفية تصرف كل خلية على البث المباشر. للمحرك الكامل — كل نوع قاعدة وحقل ومسار — انظر حواجز الحماية. لآليات كيفية قطع البث، انظر القواعد الآمنة على البث.

1. سؤال تغطية حواجز الحماية على البث

تحمل قاعدة حاجز الحماية مرحلة (input أو output أو both) وإجراءً — أحد خمسة: block أو mask أو flag أو annotate أو spotlight. تقرر المرحلة متى تشغّل البوابة القاعدة؛ ويقرر الإجراء ماذا تفعل. المكان الوحيد الذي يغيّر فيه البث شكل الإجابة هو مرحلة output — لأنها المرحلة الوحيدة التي تعيد فيها البوابة توجيه البايتات إلى عميلك وهي تصل، دون فرصة للاحتفاظ بكامل الحمولة أولاً. لذا تحوي المصفوفة خليتين يهمّ فيهما البث، وهما تتصرفان بشكل مختلف: block على المخرجات مفروض بالكامل على البث (يقطعه الماسح)، لكن mask على المخرجات مفروض على الاستجابات غير المبثوثة فقط. على الاستجابة المبثوثة، لا يزال الماسح يكشف المطابقة ويمكنه التصرف بناءً على قرار حجب، لكنه لا يعيد كتابة النص المُخفى في البث اليوم — إخفاء المخرجات ضمن البث مخطط له.
المدخلات ليست أبداً المشكلة. قواعد مرحلة المدخلات تعمل قبل النموذج — تفحص البوابة (وللـ mask، تعيد كتابة) طلبك، ثم تعيد توجيه النسخة المُنظَّفة للأعلى. سواء كانت الاستجابة ستُبث أم لا، فهذا غير ذي صلة؛ الطلب حمولة كاملة تحتفظ بها البوابة كاملة. فحص المدخلات مباشر بالكامل، بما في ذلك الإخفاء، على كل طلب.

2. مصفوفة التغطية

اقرأ هذا من أعلى إلى أسفل. كل خلية حجب مباشرة، بما في ذلك البث — لكن output + mask + streaming هي الخلية الوحيدة التي لا تُفرض بعد في البث: قاعدة mask تنقّح استجابة غير مبثوثة، وعلى استجابة مبثوثة تكشف المطابقة دون إعادة كتابة الـ delta (إخفاء المخرجات ضمن البث مخطط له).
المرحلة · الإجراءغير مبثوثمبثوث
input · blockيرفض الطلبيرفض الطلب
input · maskيعيد كتابة الطلبيعيد كتابة الطلب
output · blockيرفض الاستجابةيقطع البث
output · maskينقّح الاستجابةيكشف المطابقة؛ لا ينقّح ضمن البث (خارطة الطريق)
أي · flagيسجّل فقطيسجّل فقط
يُلحق annotate وspotlight ملاحظة (أو يلفّ النص المطابق) دون رفض حركة المرور وهما إجراءان لمرحلة المدخلات عملياً، فلا يغيّران خليتي المخرجات/البث أعلاه؛ يسجّلان مطابقة كأي قاعدة أخرى.
تفحص قواعد مرحلة المدخلات الطلب قبل تشغيل النموذج الأعلى. يقصّر block الاستدعاء (HTTP 400 guardrail_blocked، قبل القياس، فلا يكلّف أي حصة). يعيد mask كتابة الحقول المطابقة في المطالبة في مكانها — النص المُنظَّف هو ما يذهب للأعلى، ولا يرى النموذج الأصل أبداً. لا شيء من هذا يعتمد على ما إذا كانت الاستجابة تُبث.
على استجابة غير مبثوثة، تُفحص الإجابة كاملة قبل إرجاعها — يظهر الحجب كـ HTTP 400 guardrail_blocked. على استجابة مبثوثة، يراقب ماسح بث الـ deltas وهي تتدفق؛ وعندما تُطلق قاعدة حجب فإنه يقطع البث — يختم الماسح، ويصدر إشعار استبدال قصيراً بدلاً من البقية، ويغلق قناة SSE قبل أن يصل أي محتوى محجوب إلى العميل. ولأن ترويسات 200 لـ SSE قد خرجت بحلول ذلك الوقت، لا يستطيع حجب البث إعادة 400: يسلّم الحجب كـ delta نهائي ضمن النطاق بدلاً من خطأ HTTP.
على استجابة غير مبثوثة، تعيد قاعدة mask كتابة الإجابة — مثلاً يصبح البريد الإلكتروني [EMAIL] — والنص المُنظَّف هو ما يحصل عليه عميلك. على استجابة مبثوثة، لا يزال ماسح البث يكشف المطابقة ويحسب الإخفاء، لكنه لا يعيد توجيه النص المُخفى إلى الـ delta — يُهمَل المخرَج المُخفى ويُتصرَّف بناءً على قرار حجب فقط. لذا فإن قاعدة mask لا تنقّح استجابة مبثوثة اليوم؛ إخفاء المخرجات ضمن البث مخطط له. إذا احتجت إبقاء معلومات PII خارج استجابة مبثوثة الآن، فألّف القاعدة كـ block (يقطع الماسح البث عند المطابقة) أو افحص بشكل غير مبثوث.
قاعدة flag لا تغيّر حركة المرور أبداً — تسجّل مطابقة وتمرر البايتات. لا تغيّر المرحلة والبث سلوكها. استخدمها لقياس معدل إطلاق قاعدة قبل ترقيتها إلى block.
السطر الوحيد الذي يجب تذكّره: block على المخرجات مفروض مباشرة على كلا النقلين — بما في ذلك البث — وإخفاء المدخلات مباشر دائماً. mask على المخرجات ينقّح الاستجابات غير المبثوثة فقط؛ وعلى البث يكشف المطابقة لكنه لا يعيد كتابة الـ delta بعد (إخفاء المخرجات ضمن البث مخطط له). لإبقاء معلومات PII خارج استجابة مبثوثة اليوم، ألّف القاعدة كـ block أو افحص بشكل غير مبثوث.

3. مثال ملموس واحد — أبقِ PII خارج استجابة مبثوثة

لنقل إن النموذج يمكنه إظهار بريد إلكتروني لعميل من سياق RAG، وتطبيقك يبث. mask على المخرجات لا ينقّح ضمن البث اليوم (إخفاء المخرجات ضمن البث مخطط له) — لذا لإبقاء PII خارج استجابة مبثوثة، ألّف قاعدة المخرجات كـ block: يقتل الماسح البث لحظة ظهور مطابقة. (mask على المخرجات ينقّح فعلاً على استجابة غير مبثوثة.) تحرير السياسة إجراء إداري على جلسة وحدة التحكم لديك (مبوّب لـ Developer+)؛ ومفتاح الترحيل sk-orca-... يرسل فقط حركة مرور /v1/* ولا يحرّر السياسة أبداً.
  • افتح /console/guardrails، New guardrail، سمّه stream-pii-out.
  • أضف قاعدة واحدة:
    • النوع: كشف PII
    • المرحلة: output
    • الإجراء: block ← يقطع البث عند المطابقة؛ وعلى البث mask يكشف فقط (ينقّح الاستجابات غير المبثوثة)
  • احفظ، ثم اربطه على /console/token عبر قائمة Guardrail المنسدلة للمفتاح.
الآن استدعِ البوابة بـ stream: true، تماماً كما كان من قبل:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "stream": true,
    "messages": [
      {"role": "user", "content": "Email the customer from the record above"}
    ]
  }'
إذا طابق delta، يقطع الماسح البث، ويصدر إشعار استبدال، ويغلق القناة — لا يستقبل العميل البقية أبداً. وإذا كانت الاستجابة نظيفة، يتدفق كل delta دون مساس.
حجب البث يوقف كل شيء بعد المطابقة، لكنه لا يستطيع إلغاء إرسال البايتات المدفوعة بالفعل قبل وصول المطابقة. إذا كانت سياستك تتطلب ألا يصل ولو بايت مخالف واحد إلى العميل أبداً، فافحص الطلب بشكل غير مبثوث، حيث يُحتفظ بالإجابة كاملة حتى تجيزها السياسة.

4. PII Shield عبر المصفوفة

الإعداد المسبق PII Shield هو قاعدة pii واحدة، إجراؤها mask، مرحلتها both. أسقطها على المصفوفة وتكون التغطية تماماً ما تتوقعه من §2:
  • مرحلة المدخلات — مباشرة بالكامل، مبثوثة أو لا. يُخفى الطلب قبل أن يراه النموذج (القيمة الرئيسية لإخفاء المدخلات).
  • مرحلة المخرجات، غير مبثوث — تُخفى الإجابة قبل إرجاعها.
  • مرحلة المخرجات، مبثوث — يكشف ماسح البث المطابقة لكنه لا يعيد كتابة الـ delta اليوم، فلا يصل الشكل المُخفى إلى عميل مبثوث (إخفاء المخرجات ضمن البث مخطط له).
لذا فإن إعداد mask المسبق لا يغطي PII خارج استجابة مبثوثة بمفرده. لإبقاء PII خارج استجابة مبثوثة، ألّف تلك القاعدة كـ block (أو استدعِ بشكل غير مبثوث) ليُقطع البث عند المطابقة. انظر PII Shield و صيغ الإخفاء.

5. ماذا يكلّف حجب البث

يحمل حجب البث نفس المحاسبة كأي حجب مخرجات — فالنموذج قد عمل بالفعل، لذا تتولى البوابة عنك ردّ المبلغ:
  • على استجابة غير مبثوثة، يعيد الاستدعاء HTTP 400 guardrail_blocked مسمّياً حاجز الحماية والقاعدة التي أُطلقت. على استجابة مبثوثة، تكون ترويسات 200 لـ SSE قد خرجت بالفعل على السلك، لذا يصل الحجب كـ delta استبدال نهائي ضمن النطاق وإغلاق قناة نظيف بدلاً من 400.
  • لا تُحاسَب أي حصة. يُطلق حجب المدخلات قبل القياس؛ وحجب المخرجات (مبثوث أو لا) يردّ الحصة المستهلكة مسبقاً بمجرد رفض الاستجابة. في كلتا الحالتين لا يدفع المستدعي شيئاً.
  • يُعلَّم الطلب بـ skip-retry — إعادة تشغيل نفس المطالبة ستحجب مجدداً فحسب، فلن تحرق البوابة إعادة محاولة على قناة أخرى.
كل قاعدة مخرجات تُطلق تسجّل أيضاً مطابقة في تغذية Matches لمساحة العمل (GET /api/guardrail/match، مفتوحة لأي Member)؛ تُلتقط السلسلة الفرعية المطابقة فقط عندما يكون مفتاح Log raw content لحاجز الحماية مفعّلاً (مُطفأ افتراضياً). التفاصيل الكاملة في خطأ guardrail_blocked وتغذية المطابقات.

6. أثبت مزيج المرحلة/الإجراء قبل أن تشحن

لا تخمّن أي خلية من المصفوفة تنطبق على سياستك — تحقق منها. تعمل كلتا الأداتين على جلسة وحدة التحكم لديك عبر واجهة الإدارة البرمجية:

علامة التبويب Test

لكل محرر حاجز حماية علامة تبويب Test: الصق عينة، اختر المرحلة، وشغّل السياسة الحالية بدون استدعاء للأعلى وبدون حصة. شاهد الحكم، ولقواعد mask، النص المُصيَّر. الـ sandbox الاختباري مبوّب لـ Developer+ (يمكنه إطلاق استدعاءات judge/grounding مدفوعة وطلبات تكامل صادرة).

علامة التبويب Eval

تسجّل علامة التبويب Eval حاجز حماية مقابل مجموعات JSONL مُرفقة أو مخصصة — مفيدة لتأكيد أن قاعدة حجب تلتقط تسريباً معروفاً قبل ربط مفتاح. تشغيل تقييم يحتاج فقط وصول قراءة (viewer+).
انظر الاختبار والتقييم و ضبط الإيجابيات الكاذبة للتعمق.

7. إلى أين تذهب بعد ذلك

القواعد الآمنة على البث

كيف يقطع الماسح بث SSE في منتصفه، وكيف تؤلّف سياسة تصمد على حركة المرور المبثوثة.

مرحلة المخرجات

فحص استجابة النموذج — block مقابل mask، ردّ الحصة، والترسيخ السياقي.

مرحلة المدخلات

فحص الطلب قبل النموذج — بما في ذلك الإخفاء، مبثوثاً أو لا.

الإجراءات

block وmask وflag وannotate وspotlight بتعمق — متى يكون كل منها القرار الصحيح.
حواجز الحماية — كل نوع قاعدة وحقل ومسار، بما في ذلك الترسيخ السياقي وLLM judge.