التشغيل السريع: الكشف عن الأرضية (معاينة)

اتبع هذا الدليل لاستخدام Azure الذكاء الاصطناعي Content خزينة ty Groundedness detection للتحقق مما إذا كانت استجابات النص لنماذج اللغات الكبيرة (LLMs) متأثرة بالمواد المصدر التي يوفرها المستخدمون.

المتطلبات الأساسية

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • بمجرد حصولك على اشتراك Azure، أنشئ مورد Content خزينة ty في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. أدخل اسما فريدا لموردك، وحدد اشتراكك، وحدد مجموعة موارد، والمنطقة المدعومة (شرق الولايات المتحدة 2، وغرب الولايات المتحدة، والسويد الوسطى)، ومستوى التسعير المدعوم. وبعد ذلك، حدد إنشاء.
    • يستغرق المورد بضع دقائق للتوزيع. بعد ذلك، انتقل إلى المورد الجديد. في الجزء الأيمن، ضمن Resource Management، حدد API Keys and Endpoints. انسخ إحدى قيم مفتاح الاشتراك ونقطة النهاية إلى موقع مؤقت لاستخدامه لاحقا.
  • (اختياري) إذا كنت ترغب في استخدام ميزة المنطق ، قم بإنشاء مورد خدمة Azure OpenAI مع توزيع نموذج GPT.
  • cURL أو Python مثبت.

التحقق من الأرضية دون المنطق

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

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

  1. استبدل <endpoint> بعنوان URL لنقطة النهاية المقترنة بالمورد الخاص بك.

  2. استبدل <your_subscription_key> بأحد مفاتيح المورد الخاص بك.

  3. بشكل اختياري، استبدل "query" الحقول أو "text" في النص الأساسي بالنص الخاص بك الذي تريد تحليله.

    curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview' \
    --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      "domain": "Generic",
      "task": "QnA",
      "qna": {
           "query": "How much does she currently get paid per hour at the bank?"
      },
      "text": "12/hour",
      "groundingSources": [
        "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. IF they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**."
      ],
      "reasoning": false
    }'
    
  4. افتح موجه الأوامر وقم بتشغيل الأمر cURL.

لاختبار مهمة تلخيص بدلا من مهمة الإجابة على الأسئلة (QnA)، استخدم نموذج نص JSON التالي:

{
    "domain": "Medical",
    "task": "Summarization",
    "text": "Ms Johnson has been in the hospital after experiencing a stroke.",
    "groundingSources": ["Our patient, Ms. Johnson, presented with persistent fatigue, unexplained weight loss, and frequent night sweats. After a series of tests, she was diagnosed with Hodgkin’s lymphoma, a type of cancer that affects the lymphatic system. The diagnosis was confirmed through a lymph node biopsy revealing the presence of Reed-Sternberg cells, a characteristic of this disease. She was further staged using PET-CT scans. Her treatment plan includes chemotherapy and possibly radiation therapy, depending on her response to treatment. The medical team remains optimistic about her prognosis given the high cure rate of Hodgkin’s lymphoma."],
    "reasoning": false
}

يجب تضمين الحقول التالية في عنوان URL:

الاسم مطلوبة ‏‏الوصف النوع
إصدار واجهة برمجة التطبيقات المطلوب هذا هو إصدار واجهة برمجة التطبيقات الذي سيتم استخدامه. الإصدار الحالي هو: api-version=2024-02-15-preview. مثال: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview السلسلة‬

يتم تعريف المعلمات في نص الطلب في هذا الجدول:

Name ‏‏الوصف النوع
المجال (اختياري) MEDICAL أو GENERIC. القيمة الافتراضية: GENERIC. التعداد
المهمه (اختياري) نوع المهمة: QnA، . Summarization القيمة الافتراضية: Summarization. التعداد
qna (اختياري) يحتفظ ببيانات QnA عندما يكون نوع المهمة هو QnA. السلسلة‬
- query (اختياري) يمثل هذا السؤال في مهمة QnA. حد الحرف: 7500. السلسلة‬
text (مطلوب) نص إخراج LLM المطلوب فحصه. حد الحرف: 7500. السلسلة‬
مصادر الأساس (مطلوب) يستخدم صفيفا من مصادر الترسيخ للتحقق من صحة النص الذي تم إنشاؤه الذكاء الاصطناعي. يمكن تحليل ما يصل إلى 55000 حرف من مصادر الترسيخ في طلب واحد. صفيف سلسلة
المنطق (اختياري) تحديد ما إذا كنت تريد استخدام ميزة المنطق. القيمة الافتراضية هي false. إذا ، trueتحتاج إلى إحضار موارد Azure OpenAI GPT-4 Turbo الخاصة بك لتوفير شرح. كن حذرا: استخدام المنطق يزيد من وقت المعالجة. Boolean

تفسير استجابة واجهة برمجة التطبيقات

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

{
    "ungroundedDetected": true,
    "ungroundedPercentage": 1,
    "ungroundedDetails": [
        {
            "text": "12/hour."
        }
    ]
}

يتم تعريف كائنات JSON في الإخراج هنا:

Name ‏‏الوصف النوع
لم يتم الكشف عن مكانه يشير إلى ما إذا كان النص يعرض غير مؤرض. Boolean
مركز غير مؤرض تحديد نسبة النص المحدد على أنه غير مؤرض، يتم التعبير عنه كرقم بين 0 و1، حيث يشير 0 إلى عدم وجود محتوى غير مؤرض ويشير 1 إلى محتوى غير مؤرض بالكامل. Float
علامات تعريف غير مؤرضة يوفر رؤى حول محتوى غير مؤرض بأمثلة ونسب مئوية محددة. صفيف
-text النص المحدد غير مؤرض. السلسلة‬

التحقق من الأساس مع المنطق

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

إحضار توزيع GPT الخاص بك

تلميح

في الوقت الحالي، نحن ندعم فقط موارد Azure OpenAI GPT-4 Turbo ولا ندعم أنواع GPT الأخرى. يمكن نشر موارد GPT-4 Turbo في أي منطقة؛ ومع ذلك، نوصي بأن تكون موجودة في نفس المنطقة مثل موارد أمان المحتوى لتقليل زمن الانتقال المحتمل.

لاستخدام مورد Azure OpenAI GPT4-Turbo لتمكين ميزة المنطق، استخدم الهوية المدارة للسماح لمورد المحتوى خزينة ty بالوصول إلى مورد Azure OpenAI:

  1. تمكين الهوية المدارة لمحتوى Azure الذكاء الاصطناعي خزينة ty.

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

    لقطة شاشة لمورد هوية المحتوى خزينة ty في مدخل Microsoft Azure.

  2. تعيين دور للهوية المدارة.

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

    لقطة شاشة لإضافة تعيين الدور في مدخل Microsoft Azure.

    اختر دور المستخدم أو المساهم.

    لقطة شاشة لمدخل Azure مع عرض أدوار المساهم والمستخدم في قائمة.

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

في طلبك إلى واجهة برمجة تطبيقات الكشف عن الأرضية، قم بتعيين معلمة "reasoning" النص الأساسي إلى true، وقم بتوفير المعلمات الأخرى المطلوبة:

 {
  "reasoning": true,
  "llmResource": {
    "resourceType": "AzureOpenAI",
    "azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
    "azureOpenAIDeploymentName": "<your_deployment_name>"
  }
}

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

  1. استبدل <endpoint> بعنوان URL لنقطة النهاية المقترنة بالمورد الخاص بك.

  2. استبدل <your_subscription_key> بأحد مفاتيح المورد الخاص بك.

  3. بشكل اختياري، استبدل "query" الحقول أو "text" في النص الأساسي بالنص الخاص بك الذي تريد تحليله.

    curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-02-15-preview' \
    --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      "domain": "Generic",
      "task": "QnA",
      "qna": {
           "query": "How much does she currently get paid per hour at the bank?"
      },
      "text": "12/hour",
      "groundingSources": [
        "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. IF they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**."
      ],
      "reasoning": true,
      "llmResource": {
            "resourceType": "AzureOpenAI",
            "azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
            "azureOpenAIDeploymentName": "<your_deployment_name>"
    }'
    
  4. افتح موجه الأوامر وقم بتشغيل الأمر cURL.

يتم تعريف المعلمات في نص الطلب في هذا الجدول:

Name ‏‏الوصف النوع
المجال (اختياري) MEDICAL أو GENERIC. القيمة الافتراضية: GENERIC. التعداد
المهمه (اختياري) نوع المهمة: QnA، . Summarization القيمة الافتراضية: Summarization. التعداد
qna (اختياري) يحتفظ ببيانات QnA عندما يكون نوع المهمة هو QnA. السلسلة‬
- query (اختياري) يمثل هذا السؤال في مهمة QnA. حد الحرف: 7500. السلسلة‬
text (مطلوب) نص إخراج LLM المطلوب فحصه. حد الحرف: 7500. السلسلة‬
مصادر الأساس (مطلوب) يستخدم صفيفا من مصادر الترسيخ للتحقق من صحة النص الذي تم إنشاؤه الذكاء الاصطناعي. يمكن تحليل ما يصل إلى 55000 حرف من مصادر الترسيخ في طلب واحد. صفيف سلسلة
المنطق (اختياري) تعيين إلى true، تستخدم الخدمة موارد Azure OpenAI لتوفير شرح. كن حذرا: استخدام المنطق يزيد من وقت المعالجة ويتحمل رسوما إضافية. Boolean
llmResource (مطلوب) إذا كنت ترغب في استخدام مورد Azure OpenAI GPT4-Turbo الخاص بك لتمكين المنطق، أضف هذا الحقل وقم بتضمين الحقول الفرعية للموارد المستخدمة. السلسلة‬
- resourceType تحديد نوع المورد المستخدم. حاليا يسمح فقط AzureOpenAI. نحن ندعم فقط موارد Azure OpenAI GPT-4 Turbo ولا ندعم أنواع GPT الأخرى. يمكن نشر موارد GPT-4 Turbo في أي منطقة؛ ومع ذلك، نوصي بأن تكون موجودة في نفس المنطقة مثل موارد أمان المحتوى لتقليل زمن الانتقال المحتمل. التعداد
- azureOpenAIEndpoint عنوان URL لنقطة النهاية لخدمة Azure OpenAI. السلسلة‬
- azureOpenAIDeploymentName اسم نشر GPT المحدد المراد استخدامه. السلسلة‬

تفسير استجابة واجهة برمجة التطبيقات

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

{
    "ungroundedDetected": true,
    "ungroundedPercentage": 1,
    "ungroundedDetails": [
        {
            "text": "12/hour.",
            "offset": {
                "utf8": 0,
                "utf16": 0,
                "codePoint": 0
            },
            "length": {
                "utf8": 8,
                "utf16": 8,
                "codePoint": 8
            },
            "reason": "None. The premise mentions a pay of \"10/hour\" but does not mention \"12/hour.\" It's neutral. "
        }
    ]
}

يتم تعريف كائنات JSON في الإخراج هنا:

Name ‏‏الوصف النوع
لم يتم الكشف عن مكانه يشير إلى ما إذا كان النص يعرض غير مؤرض. Boolean
مركز غير مؤرض تحديد نسبة النص المحدد على أنه غير مؤرض، يتم التعبير عنه كرقم بين 0 و1، حيث يشير 0 إلى عدم وجود محتوى غير مؤرض ويشير 1 إلى محتوى غير مؤرض بالكامل. Float
علامات تعريف غير مؤرضة يوفر رؤى حول محتوى غير مؤرض بأمثلة ونسب مئوية محددة. صفيف
-text النص المحدد غير مؤرض. السلسلة‬
-offset كائن يصف موضع النص غير مؤرض في ترميز مختلف. السلسلة‬
- offset > utf8 موضع الإزاحة للنص غير الموضعي في ترميز UTF-8. رقم صحيح
- offset > utf16 موضع الإزاحة للنص غير الموضعي في ترميز UTF-16. رقم صحيح
- offset > codePoint موضع الإزاحة للنص غير الموضعي من حيث نقاط التعليمات البرمجية Unicode. رقم صحيح
-length كائن يصف طول النص غير مؤرض في ترميز مختلف. (utf8، utf16، codePoint)، على غرار الإزاحة. ‏‏الكائن
- length > utf8 طول النص غير مؤرض في ترميز UTF-8. رقم صحيح
- length > utf16 طول النص غير مؤرض في ترميز UTF-16. رقم صحيح
- length > codePoint طول النص غير مؤرض من حيث نقاط التعليمات البرمجية Unicode. رقم صحيح
-reason يقدم تفسيرات للكشف عن عدم وجود أرض. السلسلة‬

تنظيف الموارد

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

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

اجمع بين الكشف عن الأرض وميزات أمان LLM الأخرى مثل Prompt Shields.