تصفية المحتوى

هام

لا يتم تطبيق نظام تصفية المحتوى على المطالبات والإكمالات التي تتم معالجتها بواسطة نموذج الهمس في خدمة Azure OpenAI. تعرف على المزيد حول نموذج الهمس في Azure OpenAI.

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

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

بالإضافة إلى نظام تصفية المحتوى، تقوم خدمة Azure OpenAI بإجراء مراقبة للكشف عن المحتوى و/أو السلوكيات التي تقترح استخدام الخدمة بطريقة قد تنتهك شروط المنتج المعمول بها. لمزيد من المعلومات حول فهم وتخفيف المخاطر المرتبطة بتطبيقك، راجع ملاحظة الشفافية ل Azure OpenAI. لمزيد من المعلومات حول كيفية معالجة البيانات لتصفية المحتوى ومراقبة إساءة استخدامه، راجع البيانات والخصوصية والأمان لخدمة Azure OpenAI.

توفر الأقسام التالية معلومات حول فئات تصفية المحتوى ومستويات خطورة التصفية وقابليتها للتكوين وسيناريوهات واجهة برمجة التطبيقات التي سيتم النظر فيها في تصميم التطبيق وتنفيذه.

فئات تصفية المحتوى

يحتوي نظام تصفية المحتوى المدمج في خدمة Azure OpenAI على:

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

فئات المخاطر

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

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

* إذا كنت مالكا للمواد النصية وتريد إرسال محتوى نصي للحماية، فيرجى تقديم طلب.

دروع المطالبة

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

محتوى نصي

تحذير

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

محتوى الصورة

تحذير

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

قابلية التكوين (معاينة)

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

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

* فقط العملاء الذين تمت الموافقة عليهم لتصفية المحتوى المعدل لديهم التحكم الكامل في تصفية المحتوى ويمكنهم إيقاف تشغيل عوامل تصفية المحتوى جزئيا أو كليا. لا ينطبق عنصر تحكم تصفية المحتوى على عوامل تصفية المحتوى ل DALL-E (معاينة) أو GPT-4 Turbo مع الرؤية (معاينة). تطبيق لعوامل تصفية المحتوى المعدلة باستخدام هذا النموذج: مراجعة الوصول المحدود ل Azure OpenAI: تصفية المحتوى المعدل (microsoft.com).

يتحمل العملاء مسؤولية التأكد من أن التطبيقات التي تدمج Azure OpenAI تتوافق مع قواعد السلوك.

يتم إنشاء تكوينات تصفية المحتوى داخل مورد في Azure الذكاء الاصطناعي Studio، ويمكن إقرانها مع عمليات النشر. تعرف على المزيد حول قابلية التكوين هنا.

تفاصيل السيناريو

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

  • سترجع المطالبات المصنفة على فئة تمت تصفيتها ومستوى الخطورة خطأ HTTP 400.
  • لن ترجع مكالمات الإكمال غير المتدفق أي محتوى عند تصفية المحتوى. finish_reason سيتم تعيين القيمة إلى content_filter. في حالات نادرة ذات استجابات أطول، يمكن إرجاع نتيجة جزئية. في هذه الحالات، سيتم تحديث finish_reason.
  • بالنسبة لمكالمات إكمال الدفق، سيتم إرجاع المقاطع مرة أخرى إلى المستخدم عند اكتمالها. ستستمر الخدمة في الدفق حتى تصل إما إلى رمز إيقاف أو طول أو عند اكتشاف المحتوى المصنف في فئة تمت تصفيتها ومستوى الخطورة.

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

يوضح الجدول أدناه الطرق المختلفة التي يمكن أن تظهر بها تصفية المحتوى:

رمز استجابة HTTP سلوك الاستجابة
200 في الحالات التي يمر فيها كل الجيل بعوامل التصفية كما تم تكوينها، لا تتم إضافة تفاصيل con وضع الخيمة ration إلى الاستجابة. finish_reason سيكون لكل جيل إما توقف أو طول.

مثال على حمولة الطلب:

{
    "prompt":"Text example", 
    "n": 3,
    "stream": false
}

مثال على استجابة JSON:

{
    "id": "example-id",
    "object": "text_completion",
    "created": 1653666286,
    "model": "davinci",
    "choices": [
        {
            "text": "Response generated text",
            "index": 0,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

السيناريو: يطلب استدعاء واجهة برمجة التطبيقات استجابات متعددة (N>1) ويتم تصفية استجابة واحدة على الأقل

التعليمة البرمجية لاستجابة HTTP سلوك الاستجابة
200 سيكون للأجيال finish_reason التي تمت تصفيتها قيمة content_filter.

مثال على حمولة الطلب:

{
    "prompt":"Text example",
    "n": 3,
    "stream": false
}

مثال على استجابة JSON:

{
    "id": "example",
    "object": "text_completion",
    "created": 1653666831,
    "model": "ada",
    "choices": [
        {
            "text": "returned text 1",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        },
        {
            "text": "returned text 2",
            "index": 1,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

السيناريو: يتم إرسال مطالبة إدخال غير مناسبة إلى واجهة برمجة تطبيقات الإكمال (إما للبث أو عدم البث)

التعليمة البرمجية لاستجابة HTTP سلوك الاستجابة
400 يفشل استدعاء واجهة برمجة التطبيقات عندما تقوم المطالبة بتشغيل عامل تصفية محتوى كما تم تكوينه. تعديل المطالبة والمحاولة مرة أخرى.

مثال على حمولة الطلب:

{
    "prompt":"Content that triggered the filtering model"
}

مثال على استجابة JSON:

"error": {
    "message": "The response was filtered",
    "type": null,
    "param": "prompt",
    "code": "content_filter",
    "status": 400
}

السيناريو: إجراء مكالمة إكمال البث؛ لا يتم تصنيف أي محتوى إخراج على فئة تمت تصفيتها ومستوى الخطورة

التعليمة البرمجية لاستجابة HTTP سلوك الاستجابة
200 في هذه الحالة، سيتدفق الاستدعاء مرة أخرى مع الجيل finish_reason الكامل وسيكون إما "الطول" أو "الإيقاف" لكل استجابة تم إنشاؤها.

مثال على حمولة الطلب:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

مثال على استجابة JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670914,
    "model": "ada",
    "choices": [
        {
            "text": "last part of generation",
            "index": 2,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

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

التعليمة البرمجية لاستجابة HTTP سلوك الاستجابة
200 بالنسبة إلى فهرس جيل معين، تتضمن المجموعة الأخيرة من الجيل قيمة غير خالية finish_reason . القيمة هي content_filter عند تصفية الجيل.

مثال على حمولة الطلب:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

مثال على استجابة JSON:

 {
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670515,
    "model": "ada",
    "choices": [
        {
            "text": "Last part of generated text streamed back",
            "index": 2,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

السيناريو: لا يعمل نظام تصفية المحتوى عند الانتهاء

التعليمة البرمجية لاستجابة HTTP سلوك الاستجابة
200 إذا كان نظام تصفية المحتوى معزولا أو غير قادر على إكمال العملية في الوقت المناسب، فسيظل طلبك مكتملا دون تصفية المحتوى. يمكنك تحديد أنه لم يتم تطبيق التصفية من خلال البحث عن رسالة خطأ في content_filter_result الكائن.

مثال على حمولة الطلب:

{
    "prompt":"Text example",
    "n": 1,
    "stream": false
}

مثال على استجابة JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1652294703,
    "model": "ada",
    "choices": [
        {
            "text": "generated text",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null,
            "content_filter_result": {
                "error": {
                    "code": "content_filter_error",
                    "message": "The contents are not filtered"
                }
            }
        }
    ]
}

تعليقات توضيحية

عوامل تصفية المحتوى

عند تمكين التعليقات التوضيحية كما هو موضح في قصاصة التعليمات البرمجية أدناه، يتم إرجاع المعلومات التالية عبر واجهة برمجة التطبيقات للفئات الكراهية والإنصاف والجنسي والعنف وإيذاء الذات:

  • فئة تصفية المحتوى (الكراهية والجنسية والعنف self_harm)
  • مستوى الخطورة (آمن أو منخفض أو متوسط أو مرتفع) داخل كل فئة محتوى
  • حالة التصفية (صواب أو خطأ).

نماذج اختيارية

يمكن تمكين النماذج الاختيارية في التعليق التوضيحي (إرجاع المعلومات عند وضع علامة على المحتوى، ولكن لم تتم تصفيته) أو وضع التصفية (إرجاع المعلومات عند وضع علامة على المحتوى وتصفيته).

عند تمكين التعليقات التوضيحية كما هو موضح في قصاصات التعليمات البرمجية أدناه، يتم إرجاع المعلومات التالية بواسطة واجهة برمجة التطبيقات للنماذج الاختيارية:

النموذج المخرجات
الفرار تم الكشف عنه (صواب أو خطأ)،
تمت تصفيته (صواب أو خطأ)
الهجمات غير المباشرة تم الكشف عنه (صواب أو خطأ)،
تمت تصفيته (صواب أو خطأ)
نص مادة محمية تم الكشف عنه (صواب أو خطأ)،
تمت تصفيته (صواب أو خطأ)
التعليمات البرمجية للمواد المحمية تم الكشف عن (صواب أو خطأ)،
تمت تصفيته (صواب أو خطأ)،
مثال اقتباس لمستودع GitHub العام حيث تم العثور على قصاصة برمجية،
ترخيص المستودع

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

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

الفئة 2024-02-01 GA معاينة 2024-04-01 معاينة 2023-10-01 معاينة 2023-06-01
اكره
العنف
الجنسي
إيذاء النفس
Prompt Shield لهجمات الهروب من السجن
Prompt Shield للهجمات غير المباشرة
نص مادة محمية
التعليمات البرمجية للمواد المحمية
قائمة حظر الألفاظ النابية
قائمة حظر مخصصة
# os.getenv() for the endpoint and key assumes that you are using environment variables.

import os
from openai import AzureOpenAI
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-03-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") 
    )

response = client.completions.create(
    model="gpt-35-turbo-instruct", # model = "deployment_name".
    prompt="{Example prompt where a severity level of low is detected}" 
    # Content that is detected at severity level medium or high is filtered, 
    # while content detected at severity level low isn't filtered by the content filters.
)

print(response.model_dump_json(indent=2))

المخرجات

{ 
  "choices": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "protected_material_code": { 
          "citation": { 
            "URL": " https://github.com/username/repository-name/path/to/file-example.txt", 
            "license": "EXAMPLE-LICENSE" 
          }, 
          "detected": true,
          "filtered": false 
        }, 
        "protected_material_text": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "finish_reason": "stop", 
      "index": 0, 
      "message": { 
        "content": "Example model response will be returned ", 
        "role": "assistant" 
      } 
    } 
  ], 
  "created": 1699386280, 
  "id": "chatcmpl-8IMI4HzcmcK6I77vpOJCPt0Vcf8zJ", 
  "model": "gpt-35-turbo-instruct", 
  "object": "text.completion",
  "usage": { 
    "completion_tokens": 40, 
    "prompt_tokens": 11, 
    "total_tokens": 417 
  },  
  "prompt_filter_results": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "jailbreak": { 
          "detected": false, 
          "filtered": false 
        }, 
        "profanity": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "prompt_index": 0 
    } 
  ]
} 

للحصول على تفاصيل حول نقاط نهاية واجهة برمجة تطبيقات REST للاستدلال ل Azure OpenAI وكيفية إنشاء الدردشة والإكمال، يرجى اتباع الإرشادات المرجعية لواجهة برمجة تطبيقات REST لخدمة Azure OpenAI. يتم إرجاع التعليقات التوضيحية لجميع السيناريوهات عند استخدام أي إصدار معاينة لواجهة برمجة التطبيقات بدءا من 2023-06-01-preview، بالإضافة إلى إصدار 2024-02-01واجهة برمجة تطبيقات GA .

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

{
    "error": {
        "message": "The response was filtered due to the prompt triggering Azure Content management policy. 
                   Please modify your prompt and retry. To learn more about our content filtering policies
                   please read our documentation: https://go.microsoft.com/fwlink/?linkid=21298766",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400,
        "innererror": {
            "code": "ResponsibleAIPolicyViolation",
            "content_filter_result": {
                "hate": {
                    "filtered": true,
                    "severity": "high"
                },
                "self-harm": {
                    "filtered": true,
                    "severity": "high"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered":true,
                    "severity": "medium"
                }
            }
        }
    }
}

تضمين المستند في المطالبات

أحد الجوانب الرئيسية لمقاييس الذكاء الاصطناعي المسؤولة في Azure OpenAI هو نظام أمان المحتوى. يعمل هذا النظام جنبا إلى جنب مع نموذج GPT الأساسي لمراقبة أي مخالفات في إدخال النموذج وإخراجه. يتم تحسين أدائه عندما يمكنه التمييز بين العناصر المختلفة لمطالبتك مثل إدخال النظام وإدخال المستخدم وإخراج مساعد الذكاء الاصطناعي.

للحصول على قدرات الكشف المحسنة، يجب تنسيق المطالبات وفقا للأساليب الموصى بها التالية.

واجهة برمجة تطبيقات إكمال الدردشة

يتم تنظيم واجهة برمجة تطبيقات إكمال الدردشة حسب التعريف. ويتكون من قائمة بالرسائل، كل منها له دور معين.

سيقوم نظام السلامة بتحليل هذا التنسيق المنظم وتطبيق السلوك التالي:

  • في أحدث محتوى "المستخدم"، سيتم الكشف عن الفئات التالية من مخاطر RAI:
    • اكره
    • الجنسي
    • العنف
    • إيذاء النفس
    • الهروب من السجن (اختياري)

هذا مثال على صفيف الرسائل:

{"role": "system", "content": "Provide some context and/or instructions to the model."}, 
{"role": "user", "content": "Example question goes here."}, 
{"role": "assistant", "content": "Example answer goes here."}, 
{"role": "user", "content": "First question/message for the model to actually respond to."} 

تضمين المستندات في المطالبة

بالإضافة إلى الكشف عن محتوى المستخدم الأخير، يدعم Azure OpenAI أيضا الكشف عن مخاطر محددة داخل مستندات السياق عبر Prompt Shields – الكشف عن الهجوم الفوري غير المباشر. يجب تحديد أجزاء الإدخال التي هي مستند (على سبيل المثال، موقع الويب المسترد والبريد الإلكتروني وما إلى ذلك) باستخدام محدد المستند التالي.

<documents> 
*insert your document content here* 
</documents>

عند القيام بذلك، تتوفر الخيارات التالية للكشف عن المستندات ذات العلامات:

  • في كل محتوى "مستند" معلم، اكتشف الفئات التالية:
    • الهجمات غير المباشرة (اختياري)

فيما يلي مثال على صفيف رسائل إكمال الدردشة:

{"role": "system", "content": "Provide some context and/or instructions to the model, including document context. \"\"\" <documents>\n*insert your document content here*\n<\\documents> \"\"\""}, 

{"role": "user", "content": "First question/message for the model to actually respond to."} 

هروب JSON

عند وضع علامة على المستندات غير المرغوب فيها للكشف، يجب أن يكون محتوى المستند مهربا من JSON لضمان التحليل الناجح بواسطة نظام أمان Azure OpenAI.

على سبيل المثال، راجع نص البريد الإلكتروني التالي:

Hello Josè, 

I hope this email finds you well today.

مع هروب JSON، فإنه يقرأ:

Hello Jos\u00E9,\nI hope this email finds you well today. 

النص الذي تم الهروب منه في سياق إكمال الدردشة سيقرأ:

{"role": "system", "content": "Provide some context and/or instructions to the model, including document context. \"\"\" <documents>\n Hello Jos\\u00E9,\\nI hope this email finds you well today. \n<\\documents> \"\"\""}, 

{"role": "user", "content": "First question/message for the model to actually respond to."}

دفق المحتوى

يصف هذا القسم تجربة وخيارات تدفق محتوى Azure OpenAI. مع الموافقة، لديك خيار تلقي المحتوى من واجهة برمجة التطبيقات عند إنشائه، بدلا من انتظار أجزاء من المحتوى التي تم التحقق منها لتمرير عوامل تصفية المحتوى.

الإعداد الافتراضي

يتم دمج نظام تصفية المحتوى وتمكينه بشكل افتراضي لجميع العملاء. في سيناريو البث الافتراضي، يتم تخزين محتوى الإكمال مؤقتا، ويتم تشغيل نظام تصفية المحتوى على المحتوى المخزن مؤقتا، و - اعتمادا على تكوين تصفية المحتوى - يتم إرجاع المحتوى إلى المستخدم إذا لم ينتهك نهج تصفية المحتوى (الإعداد الافتراضي ل Microsoft أو تكوين مستخدم مخصص)، أو يتم حظره على الفور وإرجاع خطأ تصفية المحتوى، دون إرجاع محتوى الإكمال الضار. تتكرر هذه العملية حتى نهاية الدفق. يتم فحص المحتوى بالكامل وفقا لنهج تصفية المحتوى قبل إرجاعه إلى المستخدم. لا يتم إرجاع المحتوى إلى الرمز المميز في هذه الحالة، ولكن في "مجموعات المحتوى" لحجم المخزن المؤقت المعني.

عامل تصفية معدل غير متزامن

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

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

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

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

الموافقة على تصفية المحتوى المعدلة مطلوبة للوصول إلى عامل التصفية المعدل غير المتزامن. يمكن العثور على التطبيق هنا. لتمكينه في Azure OpenAI Studio، اتبع دليل كيفية تصفية المحتوى لإنشاء تكوين تصفية محتوى جديد، وحدد عامل تصفية معدل غير متزامن في قسم Streaming.

مقارنة أوضاع تصفية المحتوى

مقارنة دفق - افتراضي دفق - عامل تصفية معدل غير متزامن
‏الحالة التوفر العام معاينة عامة
الاستحقاق كل العملاء تمت الموافقة على العملاء لتصفية المحتوى المعدل
كيفية التمكين تمكين افتراضيا، لا يلزم اتخاذ أي إجراء يمكن للعملاء المعتمدين لتصفية المحتوى المعدل تكوينه مباشرة في Azure OpenAI Studio (كجزء من تكوين تصفية المحتوى، المطبق على مستوى النشر)
طريقة التوفر والتوافر النص; جميع نماذج GPT النص; جميع نماذج GPT باستثناء gpt-4-vision
تجربة البث يتم تخزين المحتوى مؤقتا وإرجاعه في مجموعات زمن انتقال صفري (لا يوجد تخزين مؤقت، يتم تشغيل عوامل التصفية بشكل غير متزامن)
إشارة تصفية المحتوى إشارة تصفية فورية إشارة التصفية المتأخرة (بزيادات تصل إلى 1000 حرف تقريبا)
تكوينات تصفية المحتوى يدعم الإعداد الافتراضي وأي إعداد تصفية يحدده العميل (بما في ذلك النماذج الاختيارية) يدعم الإعداد الافتراضي وأي إعداد تصفية يحدده العميل (بما في ذلك النماذج الاختيارية)

التعليقات التوضيحية ونماذج الاستجابات

رسالة التعليق التوضيحي المطالبة

هذا هو نفس التعليقات التوضيحية الافتراضية.

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "prompt_filter_results": [ 
        { 
            "prompt_index": 0, 
            "content_filter_results": { ... } 
        } 
    ], 
    "choices": [], 
    "usage": null 
} 

رسالة الرمز المميز للإكمال

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

data: { 
    "id": "chatcmpl-7rAJvsS1QQCDuZYDDdQuMJVMV3x3N", 
    "object": "chat.completion.chunk", 
    "created": 1692905411, 
    "model": "gpt-35-turbo", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "delta": { 
                "content": "Color" 
            } 
        } 
    ], 
    "usage": null 
} 

رسالة التعليق التوضيحي

سيكون حقل النص دائما سلسلة فارغة، مما يشير إلى عدم وجود رموز مميزة جديدة. ستكون التعليقات التوضيحية ذات صلة فقط بالرموز المميزة المرسلة بالفعل. قد تكون هناك رسائل تعليقات توضيحية متعددة تشير إلى نفس الرموز المميزة.

"start_offset" و "end_offset" هي إزاحات ذات دقة منخفضة في النص (مع 0 في بداية المطالبة) لوضع علامة على النص الذي يتعلق به التعليق التوضيحي.

"check_offset" يمثل مقدار النص الذي تمت إدارته بالكامل. إنه حد أدنى حصري لقيم التعليقات "end_offset" التوضيحية المستقبلية. إنه غير متناقص.

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "content_filter_results": { ... }, 
            "content_filter_raw": [ ... ], 
            "content_filter_offsets": { 
                "check_offset": 44, 
                "start_offset": 44, 
                "end_offset": 198 
            } 
        } 
    ], 
    "usage": null 
} 

نموذج تدفق الاستجابة (تمرير عوامل التصفية)

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

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "What is color?"}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_annotations":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Color"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" is"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" a"}}],"usage":null} 

... 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":44,"start_offset":44,"end_offset":198}}],"usage":null} 

... 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":"stop","delta":{}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":506,"start_offset":44,"end_offset":571}}],"usage":null} 

data: [DONE] 

نموذج تدفق الاستجابة (محظور بواسطة عوامل التصفية)

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "Tell me the lyrics to \"Hey Jude\"."}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Hey"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" Jude"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":","}}],"usage":null} 

... 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35- 

turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" better"}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":"content_filter","content_filter_results":{"protected_material_text":{"detected":true,"filtered":true}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: [DONE] 

هام

عند تشغيل تصفية المحتوى لمطالبة وتلقي "status": 400 كجزء من الاستجابة، ستكون هناك رسوم على هذا الطلب حيث تم تقييم المطالبة من قبل الخدمة. ستحدث الرسوم أيضا عند "status":200 تلقي مع "finish_reason": "content_filter". في هذه الحالة لم يكن لدى المطالبة أي مشكلات، ولكن تم الكشف عن الإكمال الذي تم إنشاؤه بواسطة النموذج لانتهاك قواعد تصفية المحتوى التي تؤدي إلى تصفية الإكمال.

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

كجزء من تصميم التطبيق الخاص بك، ضع في اعتبارك أفضل الممارسات التالية لتقديم تجربة إيجابية مع تطبيقك مع تقليل الأضرار المحتملة:

  • حدد الطريقة التي تريد بها التعامل مع السيناريوهات التي يرسل فيها المستخدمون مطالبات تحتوي على محتوى مصنف على فئة تمت تصفيتها ومستوى الخطورة أو إساءة استخدام التطبيق الخاص بك بطريقة أخرى.
  • finish_reason تحقق لمعرفة ما إذا كان قد تمت تصفية الإكمال.
  • تحقق من عدم وجود كائن خطأ في content_filter_result (مما يشير إلى عدم تشغيل عوامل تصفية المحتوى).
  • إذا كنت تستخدم نموذج التعليمات البرمجية للمادة المحمية في وضع التعليق التوضيحي، فعرض عنوان URL للاقتباس عند عرض التعليمات البرمجية في التطبيق الخاص بك.

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