تمرين - الاتصال ب Azure OpenAI
OpenAiService
تحتوي الفئة على تنفيذ كعب الروتين لخدمة يمكنها إرسال مطالبات إلى مساعد الذكاء الاصطناعي وتحليل الاستجابات.
هناك بعض المتطلبات الرئيسية التي يجب معالجتها في هذا التمرين:
- استيراد .NET SDK ل Azure OpenAI
- إضافة نقطة نهاية Azure OpenAI والمفتاح إلى إعدادات التطبيق
- تعديل فئة الخدمة مع أعضاء مختلفين ومثيل عميل
استيراد .NET SDK
Azure.AI.OpenAI
توفر الحزمة على NuGet SDK مكتوبة للوصول إلى عمليات نشر نماذج مختلفة من نقطة نهاية حسابك.
افتح محطة طرفية جديدة.
استخدم
dotnet add package
لاستيراد الحزمةAzure.AI.OpenAI
من NuGet لتحديد إصدار تجريبي من1.0.0-beta.14
.dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
أنشئ مشروع .NET مرة أخرى.
dotnet build
أغلق المحطة الطرفية.
إضافة إعدادات التطبيق
في تطبيق .NET، من الشائع استخدام موفري التكوين لإدخال إعدادات جديدة في التطبيق الخاص بك. بالنسبة لهذا التطبيق، استخدم appsettings.Development.json
الملف لتوفير أحدث القيم لنقطة نهاية ومفتاح Azure OpenAI.
في جذر المشروع، أنشئ ملفا جديدا باسم appsettings. Development.json.
هام
على Linux، الملفات حساسة لحالة الأحرف. تسمى بيئة .NET لهذا المشروع Development ويجب أن يتطابق اسم الملف مع اسم البيئة هذا للعمل.
داخل الملف، قم بإنشاء كائن JSON جديد مع خاصية عنصر نائب للإعدادات
OpenAi
.{ "OpenAi": { } }
ضمن الخاصية
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" } }
إشعار
المفتاح في هذا المثال وهمي.
حفظ appsettings. Development.json الملف.
إضافة الأعضاء المطلوبين ومثيل العميل
وأخيرا، قم بتنفيذ متغيرات الفئة المطلوبة لاستخدام عميل Azure OpenAI. في هذه الخطوة، نفذ بعض المطالبات الثابتة وأنشئ مثيلا جديدا للفئة OpenAIClient
.
افتح ملف Services/OpenAiService.cs .
إضافة استخدام التوجيهات لمساحات
Azure
الأسماء وAzure.AI.OpenAI
.using Azure; using Azure.AI.OpenAI;
OpenAiService
ضمن الفئة ، أضف متغيرا جديدا يسمى_client
من النوعOpenAIClient
.private readonly OpenAIClient _client;
حدد كتلة نص ثابتة لإرسالها إلى مساعد الذكاء الاصطناعي قبل كل مطالبة بمتغير سلسلة جديد يسمى
_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;
حدد كتلة نص ثابتة ثانية لإرسالها إلى الذكاء الاصطناعي مع إرشادات حول كيفية تلخيص محادثة مع متغير سلسلة جديد يسمى
_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;
ضمن الدالة الإنشائية للفئة، أضف سطرين إضافيين من التعليمات البرمجية للتحقق مما إذا كانت نقطة النهاية أو المفتاح فارغة. استخدم
ArgumentNullException.ThrowIfNullOrEmpty
لطرح خطأ في وقت مبكر إذا كانت أي من هذه القيم فارغة.ArgumentNullException.ThrowIfNullOrEmpty(endpoint); ArgumentNullException.ThrowIfNullOrEmpty(key);
تلميح
عند تشغيل التطبيق، سيؤدي هذا إلى ظهور خطأ على الفور إذا لم يكن لأي من هذه الإعدادات قيمة صالحة مقدمة من خلال appsettings. Development.json الملف.
بعد ذلك، خذ اسم النموذج الذي هو معلمة من الدالة الإنشائية واحفظه في
_modelName
المتغير._modelName = modelName;
وأخيرا، قم بإنشاء مثيل جديد للفئة
OpenAIClient
باستخدام نقطة النهاية لإنشاءUri
ومفتاح لإنشاءAzureKeyCredential
.Uri uri = new(endpoint); AzureKeyCredential credential = new(key); _client = new( endpoint: uri, keyCredential: credential );
احفظ ملف Services/OpenAiService.cs .
راجع عملك
عند هذه النقطة، يجب أن يتضمن المنشئ منطقا كافيا لإنشاء مثيل عميل. نظرا لأن الفئة لا تفعل أي شيء مع العميل حتى الآن، فلا جدوى من تشغيل تطبيق الويب، ولكن هناك قيمة في إنشاء التطبيق للتأكد من أن التعليمات البرمجية الخاصة بك لا تحتوي على أي سهو أو أخطاء.
افتح محطة طرفية جديدة.
إنشاء مشروع .NET.
dotnet build
لاحظ إخراج البنية وتحقق للتأكد من عدم وجود أي أخطاء في البنية.
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
أغلق المحطة الطرفية.