تمرين - الاتصال ب Azure OpenAI

مكتمل

OpenAiService تحتوي الفئة على تنفيذ كعب الروتين لخدمة يمكنها إرسال مطالبات إلى مساعد الذكاء الاصطناعي وتحليل الاستجابات.

هناك بعض المتطلبات الرئيسية التي يجب معالجتها في هذا التمرين:

  • استيراد .NET SDK ل Azure OpenAI
  • إضافة نقطة نهاية Azure OpenAI والمفتاح إلى إعدادات التطبيق
  • تعديل فئة الخدمة مع أعضاء مختلفين ومثيل عميل

استيراد .NET SDK

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

  1. افتح محطة طرفية جديدة.

  2. استخدم dotnet add package لاستيراد الحزمة Azure.AI.OpenAI من NuGet لتحديد إصدار تجريبي من 1.0.0-beta.14.

    dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
    
  3. أنشئ مشروع .NET مرة أخرى.

    dotnet build
    
  4. أغلق المحطة الطرفية.

إضافة إعدادات التطبيق

في تطبيق .NET، من الشائع استخدام موفري التكوين لإدخال إعدادات جديدة في التطبيق الخاص بك. بالنسبة لهذا التطبيق، استخدم appsettings.Development.json الملف لتوفير أحدث القيم لنقطة نهاية ومفتاح Azure OpenAI.

  1. في جذر المشروع، أنشئ ملفا جديدا باسم appsettings. Development.json.

    هام

    على Linux، الملفات حساسة لحالة الأحرف. تسمى بيئة .NET لهذا المشروع Development ويجب أن يتطابق اسم الملف مع اسم البيئة هذا للعمل.

  2. داخل الملف، قم بإنشاء كائن JSON جديد مع خاصية عنصر نائب للإعدادات OpenAi .

    {
      "OpenAi": {            
      }
    }
    
  3. ضمن الخاصية OpenAi ، قم بإنشاء خاصيتين جديدتين ل Endpoint و Key. استخدم نقطة نهاية Azure OpenAI وإعدادات المفاتيح التي سجلتها سابقا في هذا المشروع.

    {
      "OpenAi": {
        "Endpoint": "<your-azure-openai-endpoint>",
        "Key": "<your-azure-openai-key>"
      }
    }
    

    بافتراض أن اسم حساب Azure OpenAI هو nybncrsna76fo-openai والمفتاح هو 4bf98cb194cdf0f9001eae3259a76ed8، يمكنك تكوين كائن JSON مثل هذا المثال.

    {
      "OpenAi": {
        "Endpoint": "https://nybncrsna76fo-openai.openai.azure.com/",
        "Key": "4bf98cb194cdf0f9001eae3259a76ed8"
      }
    }
    

    إشعار

    المفتاح في هذا المثال وهمي.

  4. حفظ appsettings. Development.json الملف.

إضافة الأعضاء المطلوبين ومثيل العميل

وأخيرا، قم بتنفيذ متغيرات الفئة المطلوبة لاستخدام عميل Azure OpenAI. في هذه الخطوة، نفذ بعض المطالبات الثابتة وأنشئ مثيلا جديدا للفئة OpenAIClient .

  1. افتح ملف Services/OpenAiService.cs .

  2. إضافة استخدام التوجيهات لمساحات Azure الأسماء و Azure.AI.OpenAI .

    using Azure;
    using Azure.AI.OpenAI;
    
  3. OpenAiService ضمن الفئة ، أضف متغيرا جديدا يسمى _client من النوع OpenAIClient.

    private readonly OpenAIClient _client;
    
  4. حدد كتلة نص ثابتة لإرسالها إلى مساعد الذكاء الاصطناعي قبل كل مطالبة بمتغير سلسلة جديد يسمى _systemPromptText.

    private readonly string _systemPrompt = @"
        You are an AI assistant that helps people find information.
        Provide concise answers that are polite and professional." + Environment.NewLine;
    
  5. حدد كتلة نص ثابتة ثانية لإرسالها إلى الذكاء الاصطناعي مع إرشادات حول كيفية تلخيص محادثة مع متغير سلسلة جديد يسمى _summarizePrompt.

    private readonly string _summarizePrompt = @"
        Summarize this prompt in one or two words to use as a label in a button on a web page.
        Do not use any punctuation." + Environment.NewLine;
    
  6. ضمن الدالة الإنشائية للفئة، أضف سطرين إضافيين من التعليمات البرمجية للتحقق مما إذا كانت نقطة النهاية أو المفتاح فارغة. استخدم ArgumentNullException.ThrowIfNullOrEmpty لطرح خطأ في وقت مبكر إذا كانت أي من هذه القيم فارغة.

    ArgumentNullException.ThrowIfNullOrEmpty(endpoint);
    ArgumentNullException.ThrowIfNullOrEmpty(key);
    

    تلميح

    عند تشغيل التطبيق، سيؤدي هذا إلى ظهور خطأ على الفور إذا لم يكن لأي من هذه الإعدادات قيمة صالحة مقدمة من خلال appsettings. Development.json الملف.

  7. بعد ذلك، خذ اسم النموذج الذي هو معلمة من الدالة الإنشائية واحفظه في _modelName المتغير.

    _modelName = modelName;
    
  8. وأخيرا، قم بإنشاء مثيل جديد للفئة OpenAIClient باستخدام نقطة النهاية لإنشاء Uri ومفتاح لإنشاء AzureKeyCredential.

    Uri uri = new(endpoint);
    AzureKeyCredential credential = new(key);
    _client = new(
        endpoint: uri,
        keyCredential: credential
    );
    
  9. احفظ ملف Services/OpenAiService.cs .

راجع عملك

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

  1. افتح محطة طرفية جديدة.

  2. إنشاء مشروع .NET.

    dotnet build
    
  3. لاحظ إخراج البنية وتحقق للتأكد من عدم وجود أي أخطاء في البنية.

    MSBuild version 17.5.1+f6fdcf537 for .NET
      Determining projects to restore...
      All projects are up-to-date for restore.
      cosmoschatgpt -> /workspaces/cosmosdb-chatgpt/bin/Debug/net8.0/cosmoschatgpt.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:02.93
    
  4. أغلق المحطة الطرفية.