مشاركة عبر


التشغيل السريع: بدء استخدام إكمال الدردشة مع Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models

استخدم هذه المقالة للبدء في استخدام Azure OpenAI.

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

  • اشتراك Azure - أنشئ اشتراكاً مجاناً.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع توزيع النماذج gpt-4o أو gpt-4o-mini . نوصي باستخدام أنواع توزيع النماذج القياسية أو العالمية للاستكشاف الأولي. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

انتقل إلى Azure الذكاء الاصطناعي Foundry

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

من Azure الذكاء الاصطناعي Foundry، حدد Chat playground.

ملعب

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

لقطة شاشة لصفحة Chat playground.

الإعداد

يمكنك استخدام القائمة المنسدلة *Prompt samples لتحديد بعض أمثلة رسائل النظام المحملة مسبقا للبدء.

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

في أي وقت أثناء استخدام ملعب الدردشة، يمكنك تحديد عرض التعليمات البرمجية لمشاهدة عينات التعليمات البرمجية Python و curl وjson التي تم ملؤها مسبقا استنادا إلى جلسة الدردشة الحالية وتحديدات الإعدادات. يمكنك بعد ذلك أخذ هذه التعليمة البرمجية وكتابة تطبيق لإكمال نفس المهمة التي تقوم بها حاليا مع الملعب.

جلسة عمل الدردشة

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

حدد الزر مسح الدردشة لحذف محفوظات المحادثات الحالية.

إعدادات المفتاح

الاسم الوصف
نشر اسم النشر المقترن بنموذج معين.
إضافة بياناتك
المعلمات المعلمات المخصصة التي تغير استجابات النموذج. عند البدء نوصي باستخدام الإعدادات الافتراضية لمعظم المعلمات
درجة الحرَارة يتحكم في العشوائية. يعني خفض درجة الحرارة أن النموذج ينتج ردودًا أكثر تكرارًا وحسمًا. يؤدي ارتفاع درجة الحرارة إلى المزيد من الردود غير المتوقعة أو الإبداعية. حاول ضبط درجة الحرارة أو Top P ولكن ليس كليهما.
الحد الأقصى للاستجابة (الرموز المميزة) تعيين حد لعدد الرموز المميزة لكل استجابة نموذج. تدعم واجهة برمجة التطبيقات على أحدث النماذج بحد أقصى 128000 رمز مميز مشترك بين المطالبة (بما في ذلك رسالة النظام والأمثلة ومحفوظات الرسائل واستعلام المستخدم) واستجابة النموذج. يتكون الرمز المميّزالواحد من أربعة أحرف تقريبًا للنص الإنجليزي النموذجي.
أعلى p على غرار درجة الحرارة، يتحكم هذا في العشوائية ولكنه يستخدم أسلوبا مختلفا. يؤدي خفض Top P إلى تضييق تحديد الرمز المميّز للنموذج إلى رموز ممّيزة مرجحة. تتيح زيادة Top P للنموذج الاختيار من بين الرموز المميّزة مع احتمالية عالية ومنخفضة. حاول ضبط درجة الحرارة أو Top P ولكن ليس كليهما.
إيقاف التسلسلات تسلسل الإيقاف يجعل النموذج ينهي استجابته عند النقطة المطلوبة. تنتهي استجابة النموذج قبل التسلسل المحدد، لذلك لن تحتوي على نص تسلسل الإيقاف. بالنسبة إلى GPT-35-Turbo، يضمن استخدام <|im_end|> أن استجابة النموذج لا تنشئ استعلام مستخدم متابعة. يمكنك تضمين ما يصل إلى أربعة تسلسلات توقف.

عرض التعليمات البرمجية

بمجرد تجربة الدردشة مع النموذج، حدد الزر /< عرض التعليمات البرمجية>. سيعطيك هذا إعادة عرض التعليمات البرمجية خلف المحادثة بأكملها حتى الآن:

لقطة شاشة لتجربة عرض التعليمات البرمجية.

فهم بنية المطالبة

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

يوفر دليل كيفية إكمال الدردشة مقدمة متعمقة في بنية المطالبة الجديدة وكيفية استخدام نماذج إكمال الدردشة بشكل فعال.

استخدام نموذجك

بمجرد أن تكون راضيا عن التجربة، يمكنك نشر تطبيق ويب مباشرة من المدخل عن طريق تحديد الزر Deploy to .

لقطة شاشة تعرض زر توزيع النموذج في المدخل.

يمنحك هذا الخيار إما النشر إلى تطبيق ويب مستقل، أو copilot في Copilot Studio (معاينة) إذا كنت تستخدم بياناتك الخاصة على النموذج.

على سبيل المثال، إذا اخترت نشر تطبيق ويب:

في المرة الأولى التي تقوم فيها بنشر تطبيق ويب، يجب عليك تحديد إنشاء تطبيق ويب جديد. اختر اسما للتطبيق، والذي سيصبح جزءا من عنوان URL للتطبيق. على سبيل المثال، https://<appname>.azurewebsites.net.

حدد الاشتراك ومجموعة الموارد والموقع وخطة التسعير للتطبيق المنشور. لتحديث تطبيق موجود، حدد نشر إلى تطبيق ويب موجود واختر اسم التطبيق السابق من القائمة المنسدلة.

إذا اخترت نشر تطبيق ويب، فشاهد الاعتبارات المهمة لاستخدامه.

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

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

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

|

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • .NET 7 SDK
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4o نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

الإعداد

  1. أنشئ مجلدا chat-quickstart جديدا وانتقل إلى مجلد التشغيل السريع باستخدام الأمر التالي:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. إنشاء تطبيق وحدة تحكم جديد باستخدام الأمر التالي:

    dotnet new console
    
  3. قم بتثبيت مكتبة عميل OpenAI .NET باستخدام الأمر dotnet add package :

    dotnet add package Azure.AI.OpenAI --prerelease
    
  4. للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، قم بتثبيت حزمة Azure.Identity مع:

    dotnet add package Azure.Identity
    
  5. للمصادقة بدون مفتاح الموصى بها باستخدام معرف Microsoft Entra، سجل الدخول إلى Azure باستخدام الأمر التالي:

    az login
    

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

تشغيل التشغيل السريع

يستخدم نموذج التعليمات البرمجية في هذا التشغيل السريع معرف Microsoft Entra للمصادقة بدون مفتاح الموصى بها. إذا كنت تفضل استخدام مفتاح API، يمكنك استبدال DefaultAzureCredential الكائن بعنصر AzureKeyCredential .

AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

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

دون تدفق الاستجابة

لتشغيل التشغيل السريع، اتبع الخطوات التالية:

  1. استبدل محتويات بالتعليمات Program.cs البرمجية التالية وقم بتحديث قيم العنصر النائب بقيمك الخاصة.

    using Azure;
    using Azure.Identity;
    using OpenAI.Assistants;
    using Azure.AI.OpenAI;
    using OpenAI.Chat;
    using static System.Environment;
    
    string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/";
    string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>";
    
    // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 
    //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
    
    // This must match the custom deployment name you chose for your model
    ChatClient chatClient = openAIClient.GetChatClient("gpt-4o");
    
    ChatCompletion completion = chatClient.CompleteChat(
        [
            new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
            new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
            new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
            new UserChatMessage("Do other Azure services support this too?")
        ]);
    
    Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");
    
  2. قم بتشغيل التطبيق باستخدام الأمر التالي:

    dotnet run
    

المخرجات

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, several Azure services support customer-managed keys (CMK)! This lets ye take the wheel and secure yer data with encryption keys stored in Azure Key Vault. Services such as Azure Machine Learning, Azure Cognitive Search, and others also offer CMK fer data protection. Always check the specific service's documentation fer the latest updates, as features tend to shift swifter than the tides, aye!

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

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

لتشغيل التشغيل السريع، اتبع الخطوات التالية:

  1. استبدل محتويات بالتعليمات Program.cs البرمجية التالية وقم بتحديث قيم العنصر النائب بقيمك الخاصة.

    using Azure;
    using Azure.Identity;
    using OpenAI.Assistants;
    using Azure.AI.OpenAI;
    using OpenAI.Chat;
    using static System.Environment;
    
    string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/";
    string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>";
    
    // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 
    //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
    
    // This must match the custom deployment name you chose for your model
    ChatClient chatClient = openAIClient.GetChatClient("gpt-4o");
    
    var chatUpdates = chatClient.CompleteChatStreamingAsync(
        [
            new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
            new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
            new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
            new UserChatMessage("Do other Azure services support this too?")
        ]);
    
    await foreach(var chatUpdate in chatUpdates)
    {
        if (chatUpdate.Role.HasValue)
        {
            Console.Write($"{chatUpdate.Role} : ");
        }
    
        foreach(var contentPart in chatUpdate.ContentUpdate)
        {
            Console.Write(contentPart.Text);
        }
    }
    
  2. قم بتشغيل التطبيق باستخدام الأمر التالي:

    dotnet run
    

المخرجات

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, many Azure services support customer-managed keys (CMK)! This lets ye take the wheel and secure yer data with encryption keys stored in Azure Key Vault. Services such as Azure Machine Learning, Azure Cognitive Search, and others also offer CMK fer data protection. Always check the specific service's documentation fer the latest updates, as features tend to shift swifter than the tides, aye!

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

حزمة التعليمات البرمجية | المصدر (Go)عينات|

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • Go 1.21.0 أو أعلى مثبت محليا.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4 نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

الإعداد

  1. أنشئ مجلدا chat-quickstart جديدا وانتقل إلى مجلد التشغيل السريع باستخدام الأمر التالي:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. للمصادقة بدون مفتاح الموصى بها باستخدام معرف Microsoft Entra، سجل الدخول إلى Azure باستخدام الأمر التالي:

    az login
    

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

تشغيل التشغيل السريع

يستخدم نموذج التعليمات البرمجية في هذا التشغيل السريع معرف Microsoft Entra للمصادقة بدون مفتاح الموصى بها. إذا كنت تفضل استخدام مفتاح API، يمكنك استبدال NewDefaultAzureCredential التنفيذ ب NewKeyCredential.

azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)

لتشغيل النموذج:

  1. إنشاء ملف جديد باسم chat_completions_keyless.go. انسخ التعليمات البرمجية التالية في ملف chat_completions_keyless.go .

    package main
    
    import (
    	"context"
    	"fmt"
    	"log"
    	"os"
    
    	"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
    	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    )
    
    func main() {
    	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
    	modelDeploymentID := "gpt-4o"
        maxTokens:= int32(400)
    
    	credential, err := azidentity.NewDefaultAzureCredential(nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	client, err := azopenai.NewClient(
    		azureOpenAIEndpoint, credential, nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	// This is a conversation in progress.
    	// All messages, regardless of role, count against token usage for this API.
    	messages := []azopenai.ChatRequestMessageClassification{
    		// System message sets the tone and rules of the conversation.
    		&azopenai.ChatRequestSystemMessage{
    			Content: azopenai.NewChatRequestSystemMessageContent(
    				"You are a helpful assistant."),
    		},
    
    		// The user asks a question
    		&azopenai.ChatRequestUserMessage{
    			Content: azopenai.NewChatRequestUserMessageContent(
    				"Can I use honey as a substitute for sugar?"),
    		},
    
    		// The reply would come back from the model. You
    		// add it to the conversation so we can maintain context.
    		&azopenai.ChatRequestAssistantMessage{
    			Content: azopenai.NewChatRequestAssistantMessageContent(
    				"Yes, you can use use honey as a substitute for sugar."),
    		},
    
    		// The user answers the question based on the latest reply.
    		&azopenai.ChatRequestUserMessage{
    			Content: azopenai.NewChatRequestUserMessageContent(
    				"What other ingredients can I use as a substitute for sugar?"),
    		},
    
    		// From here you can keep iterating, sending responses back from the chat model.
    	}
    
    	gotReply := false
    
    	resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
    		// This is a conversation in progress.
    		// All messages count against token usage for this API.
    		Messages: messages,
    		DeploymentName: &modelDeploymentID,
    		MaxTokens: &maxTokens,
    	}, nil)
    
    	if err != nil {
    		// Implement application specific error handling logic.
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	for _, choice := range resp.Choices {
    		gotReply = true
    
    		if choice.ContentFilterResults != nil {
    			fmt.Fprintf(os.Stderr, "Content filter results\n")
    
    			if choice.ContentFilterResults.Error != nil {
    				fmt.Fprintf(os.Stderr, "  Error:%v\n", choice.ContentFilterResults.Error)
    			}
    
    			fmt.Fprintf(os.Stderr, "  Hate: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Hate.Severity, *choice.ContentFilterResults.Hate.Filtered)
    			fmt.Fprintf(os.Stderr, "  SelfHarm: sev: %v, filtered: %v\n", *choice.ContentFilterResults.SelfHarm.Severity, *choice.ContentFilterResults.SelfHarm.Filtered)
    			fmt.Fprintf(os.Stderr, "  Sexual: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Sexual.Severity, *choice.ContentFilterResults.Sexual.Filtered)
    			fmt.Fprintf(os.Stderr, "  Violence: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Violence.Severity, *choice.ContentFilterResults.Violence.Filtered)
    		}
    
    		if choice.Message != nil && choice.Message.Content != nil {
    			fmt.Fprintf(os.Stderr, "Content[%d]: %s\n", *choice.Index, *choice.Message.Content)
    		}
    
    		if choice.FinishReason != nil {
    			// The conversation for this choice is complete.
    			fmt.Fprintf(os.Stderr, "Finish reason[%d]: %s\n", *choice.Index, *choice.FinishReason)
    		}
    	}
    
    	if gotReply {
    		fmt.Fprintf(os.Stderr, "Received chat completions reply\n")
    	}
    
    }
    
  2. قم بتشغيل الأمر التالي لإنشاء وحدة نمطية Go جديدة:

     go mod init chat_completions_keyless.go
    
  3. قم بتشغيل go mod tidy لتثبيت التبعيات المطلوبة:

    go mod tidy
    
  4. قم بتشغيل الأمر التالي لتشغيل العينة:

     go run chat_completions_keyless.go
    

المخرجات

يبدو إخراج نموذج التعليمات البرمجية مشابها لما يلي:

Content filter results
  Hate: sev: safe, filtered: false
  SelfHarm: sev: safe, filtered: false
  Sexual: sev: safe, filtered: false
  Violence: sev: safe, filtered: false
Content[0]: There are many alternatives to sugar that you can use, depending on the type of recipe you’re making and your dietary needs or taste preferences. Here are some popular sugar substitutes:

---

### **Natural Sweeteners**  
1. **Honey**
   - Sweeter than sugar and adds moisture, with a distinct flavor.
   - Substitution: Use ¾ cup honey for 1 cup sugar, and reduce the liquid in your recipe by 2 tablespoons. Lower the baking temperature by 25°F to prevent over-browning.

2. **Maple Syrup**
   - Adds a rich, earthy sweetness with a hint of maple flavor.
   - Substitution: Use ¾ cup syrup for 1 cup sugar. Reduce liquids by 3 tablespoons.

3. **Agave Nectar**
   - Sweeter and milder than honey, it dissolves well in cold liquids.
   - Substitution: Use ⅔ cup agave for 1 cup sugar. Reduce liquids in the recipe slightly.

4. **Molasses**
   - A byproduct of sugar production with a robust, slightly bitter flavor.
   - Substitution: Use 1 cup of molasses for 1 cup sugar. Reduce liquid by ¼ cup and consider combining it with other sweeteners due to its strong flavor.

5. **Coconut Sugar**
   - Made from the sap of coconut palms, it has a rich, caramel-like flavor.
   - Substitution: Use it in a 1:1 ratio for sugar.

6. **Date Sugar** (or Medjool Dates)
   - Made from ground, dried dates, or blended into a puree, offering a rich, caramel taste.
   - Substitution: Use 1:1 for sugar. Adjust liquid in recipes if needed.

---

### **Calorie-Free or Reduced-Calorie Sweeteners**
1. **Stevia**
   - A natural sweetener derived from stevia leaves, hundreds of
Finish reason[0]: length
Received chat completions reply

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub

رمز | المصدر Artifact (Maven) | عينات | استرداد الجيل المعزز (RAG) قالب | دردشة المؤسسة IntelliJ IDEA

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

  • أداة إنشاء Gradleأو مدير تبعية آخر.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4 نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

الإعداد

  1. أنشئ مجلدا chat-quickstart جديدا وانتقل إلى مجلد التشغيل السريع باستخدام الأمر التالي:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. قم بتثبيت Apache Maven. ثم قم بتشغيل mvn -v لتأكيد التثبيت الناجح.

  3. أنشئ ملفا جديدا pom.xml في جذر مشروعك، وانسخ التعليمات البرمجية التالية فيه:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
         <groupId>com.azure.samples</groupId>
         <artifactId>quickstart-dall-e</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <build>
             <sourceDirectory>src</sourceDirectory>
             <plugins>
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.7.0</version>
                 <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
                 </configuration>
             </plugin>
             </plugins>
         </build>
         <dependencies>    
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-ai-openai</artifactId>
                 <version>1.0.0-beta.10</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-core</artifactId>
                 <version>1.53.0</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-identity</artifactId>
                 <version>1.15.1</version>
             </dependency>
             <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-simple</artifactId>
                 <version>1.7.9</version>
             </dependency>
         </dependencies>
     </project>
    
  4. تثبيت Azure OpenAI SDK والتبعيات.

    mvn clean dependency:copy-dependencies
    
  5. للمصادقة بدون مفتاح الموصى بها باستخدام معرف Microsoft Entra، سجل الدخول إلى Azure باستخدام الأمر التالي:

    az login
    

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

تشغيل التطبيق

يستخدم نموذج التعليمات البرمجية في هذا التشغيل السريع معرف Microsoft Entra للمصادقة بدون مفتاح الموصى بها. إذا كنت تفضل استخدام مفتاح API، يمكنك استبدال DefaultAzureCredential الكائن بعنصر AzureKeyCredential .

OpenAIClient client = new OpenAIClientBuilder()
    .endpoint(endpoint)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildAsyncClient();

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

  1. إنشاء ملف جديد باسم Quickstart.java في نفس الدليل الجذر للمشروع.

  2. انسخ التعليمات البرمجية التالية إلى Quickstart.java:

    import com.azure.ai.openai.OpenAIClient;
    import com.azure.ai.openai.OpenAIClientBuilder;
    import com.azure.ai.openai.models.ChatChoice;
    import com.azure.ai.openai.models.ChatCompletions;
    import com.azure.ai.openai.models.ChatCompletionsOptions;
    import com.azure.ai.openai.models.ChatRequestAssistantMessage;
    import com.azure.ai.openai.models.ChatRequestMessage;
    import com.azure.ai.openai.models.ChatRequestSystemMessage;
    import com.azure.ai.openai.models.ChatRequestUserMessage;
    import com.azure.ai.openai.models.ChatResponseMessage;
    import com.azure.ai.openai.models.CompletionsUsage;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.core.util.Configuration;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class QuickstartEntra {
    
        public static void main(String[] args) {
    
            String endpoint = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT");
            String deploymentOrModelId = "gpt-4o";
    
            // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    
            OpenAIClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new DefaultAzureCredentialBuilder().build())
                .buildClient();
    
            List<ChatRequestMessage> chatMessages = new ArrayList<>();
            chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant."));
            chatMessages.add(new ChatRequestUserMessage("Can I use honey as a substitute for sugar?"));
            chatMessages.add(new ChatRequestAssistantMessage("Yes, you can use use honey as a substitute for sugar."));
            chatMessages.add(new ChatRequestUserMessage("What other ingredients can I use as a substitute for sugar?"));    
    
            ChatCompletions chatCompletions = client.getChatCompletions(deploymentOrModelId, new ChatCompletionsOptions(chatMessages));
    
            System.out.printf("Model ID=%s is created at %s.%n", chatCompletions.getId(), chatCompletions.getCreatedAt());
            for (ChatChoice choice : chatCompletions.getChoices()) {
                ChatResponseMessage message = choice.getMessage();
                System.out.printf("Index: %d, Chat Role: %s.%n", choice.getIndex(), message.getRole());
                System.out.println("Message:");
                System.out.println(message.getContent());
            }
    
            System.out.println();
            CompletionsUsage usage = chatCompletions.getUsage();
            System.out.printf("Usage: number of prompt token is %d, "
                    + "number of completion token is %d, and number of total tokens in request and response is %d.%n",
                usage.getPromptTokens(), usage.getCompletionTokens(), usage.getTotalTokens());
        }
    }
    
  3. تشغيل تطبيق وحدة التحكم الجديد لإنشاء صورة:

    javac Quickstart.java -cp ".;target\dependency\*"
    java -cp ".;target\dependency\*" Quickstart
    

المخرجات

Model ID=chatcmpl-BDgC0Yr8YNhZFhLABQYfx6QfERsVO is created at 2025-03-21T23:35:52Z.
Index: 0, Chat Role: assistant.
Message:
If you're looking to replace sugar in cooking, baking, or beverages, there are several alternatives you can use depending on your tastes, dietary needs, and the recipe. Here's a list of common sugar substitutes:

### **Natural Sweeteners**
1. **Honey**
   - Sweeter than sugar, so you may need less.
   - Adds moisture to recipes.
   - Adjust liquids and cooking temperature when baking to avoid over-browning.

2. **Maple Syrup**
   - Provides a rich, complex flavor.
   - Can be used in baking, beverages, and sauces.
   - Reduce the liquid content slightly in recipes.

3. **Agave Syrup**
   - Sweeter than sugar and has a mild flavor.
   - Works well in drinks, smoothies, and desserts.
   - Contains fructose, so use sparingly.

4. **Date Sugar or Date Paste**
   - Made from dates, it's a whole-food sweetener with fiber and nutrients.
   - Great for baked goods and smoothies.
   - May darken recipes due to its color.

5. **Coconut Sugar**
   - Similar in taste and texture to brown sugar.
   - Less refined than white sugar.
   - Slightly lower glycemic index, but still contains calories.

6. **Molasses**
   - Dark, syrupy byproduct of sugar refining.
   - Strong flavor; best for specific recipes like gingerbread or BBQ sauce.

### **Artificial Sweeteners**
1. **Stevia**
   - Extracted from the leaves of the stevia plant.
   - Virtually calorie-free and much sweeter than sugar.
   - Available as liquid, powder, or granulated.

2. **Erythritol**
   - A sugar alcohol with few calories and a clean, sweet taste.
   - Doesn?t caramelize like sugar.
   - Often blended with other sweeteners.

3. **Xylitol**
   - A sugar alcohol similar to erythritol.
   - Commonly used in baking and beverages.
   - Toxic to pets (especially dogs), so handle carefully.

### **Whole Fruits**
1. **Mashed Bananas**
   - Natural sweetness works well in baking.
   - Adds moisture to recipes.
   - Can replace sugar partially or fully depending on the dish.

2. **Applesauce (Unsweetened)**
   - Adds sweetness and moisture to baked goods.
   - Reduce other liquids in the recipe accordingly.

3. **Pureed Dates, Figs, or Prunes**
   - Dense sweetness with added fiber and nutrients.
   - Ideal for energy bars, smoothies, and baking.

### **Other Options**
1. **Brown Rice Syrup**
   - Less sweet than sugar, with a mild flavor.
   - Good for granola bars and baked goods.

2. **Yacon Syrup**
   - Extracted from the root of the yacon plant.
   - Sweet and rich in prebiotics.
   - Best for raw recipes.

3. **Monk Fruit Sweetener**
   - Natural sweetener derived from monk fruit.
   - Often mixed with erythritol for easier use.
   - Provides sweetness without calories.

### **Tips for Substitution**
- Sweeteners vary in sweetness, texture, and liquid content, so adjust recipes accordingly.
- When baking, reducing liquids or fats slightly may be necessary.
- Taste test when possible to ensure the sweetness level matches your preference.

Whether you're seeking healthier options, low-calorie substitutes, or simply alternatives for flavor, these sugar substitutes can work for a wide range of recipes!

Usage: number of prompt token is 60, number of completion token is 740, and number of total tokens in request and response is 800.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

نموذج البيانات الاصطناعية للتعليمات البرمجية | المصدر (Maven) |

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • الإصدار الحالي من Java Development Kit (JDK)
  • أداة Spring Boot CLI
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4 نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد. يفترض هذا المثال أن اسم النشر الخاص بك يطابق اسم النموذج gpt-4

الإعداد

قم باسترداد المفتاح ونقطة النهاية

لإجراء مكالمة بنجاح مقابل Azure OpenAI، تحتاج إلى نقطة نهاية ومفتاح.

اسم المتغير القيمة
ENDPOINT يمكن العثور على نقطة نهاية الخدمة في قسم Keys & Endpoint عند فحص المورد الخاص بك من مدخل Microsoft Azure. بدلا من ذلك، يمكنك العثور على نقطة النهاية عبر صفحة Deployments في مدخل Azure الذكاء الاصطناعي Foundry. مثال على نقطة النهاية هو: https://docs-test-001.openai.azure.com/.
API-KEY يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2.

انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على قسم Keys & Endpoint في قسم Resource Management . انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1 أو KEY2. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.

لقطة شاشة لواجهة مستخدم النظرة العامة لمورد Azure OpenAI في مدخل Microsoft Azure مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

متغيرات البيئة

إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.

هام

استخدم مفاتيح واجهة برمجة التطبيقات بحذر. لا تقم بتضمين مفتاح API مباشرة في التعليمات البرمجية الخاصة بك، ولا تنشره بشكل عام. إذا كنت تستخدم مفتاح API، فخزنه بأمان في Azure Key Vault. لمزيد من المعلومات حول استخدام مفاتيح واجهة برمجة التطبيقات بشكل آمن في تطبيقاتك، راجع مفاتيح واجهة برمجة التطبيقات باستخدام Azure Key Vault.

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

ملاحظة

يقوم Spring الذكاء الاصطناعي افتراضيا بتسمية النموذج إلى gpt-35-turbo. من الضروري فقط توفير SPRING_AI_AZURE_OPENAI_MODEL القيمة إذا قمت بنشر نموذج باسم مختلف.

export SPRING_AI_AZURE_OPENAI_API_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE"
export SPRING_AI_AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
export SPRING_AI_AZURE_OPENAI_MODEL="REPLACE_WITH_YOUR_MODEL_NAME_HERE"

إنشاء تطبيق Spring جديد

إنشاء مشروع Spring جديد.

في نافذة Bash، قم بإنشاء دليل جديد لتطبيقك، وانتقل إليه.

mkdir ai-chat-demo && cd ai-chat-demo

بادر بتشغيل الأمر spring init من دليل العمل خاصتك. ينشئ هذا الأمر بنية دليل قياسية لمشروع Spring الخاص بك بما في ذلك ملف مصدر فئة Java الرئيسي وملف pom.xml المستخدم لإدارة المشاريع المستندة إلى Maven.

spring init -a ai-chat-demo -n AIChat --force --build maven -x

تشبه الملفات والمجلدات التي تم إنشاؤها البنية التالية:

ai-chat-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aichatdemo/
    |                   |-- AiChatApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aichatdemo/
                        |-- AiChatApplicationTests.java

تحرير تطبيق Spring

  1. تحرير ملف pom.xml.

    من جذر دليل المشروع، افتح ملف pom.xml في المحرر المفضل لديك أو IDE واستبدل الملف بالمحتوى التالي:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>3.3.4</version>
          <relativePath/> <!-- lookup parent from repository -->
       </parent>
       <groupId>com.example</groupId>
       <artifactId>ai-chat-demo</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <name>AIChat</name>
       <description>Demo project for Spring Boot</description>
       <properties>
          <java.version>17</java.version>
          <spring-ai.version>1.0.0-M5</spring-ai.version>
       </properties>
       <dependencies>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
          </dependency>
          <dependency>
             <groupId>org.springframework.ai</groupId>
             <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
          </dependency>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
          </dependency>
       </dependencies>
       <dependencyManagement>
          <dependencies>
             <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
             </dependency>
          </dependencies>
       </dependencyManagement>
       <build>
          <plugins>
             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
          </plugins>
       </build>
       <repositories>
          <repository>
             <id>spring-milestones</id>
             <name>Spring Milestones</name>
             <url>https://repo.spring.io/milestone</url>
             <snapshots>
                <enabled>false</enabled>
             </snapshots>
          </repository>
       </repositories>
    
    </project>
    
  2. من المجلد src/main/java/com/example/aichatdemo، افتح AiChatApplication.java في المحرر المفضل لديك أو IDE والصقها في التعليمات البرمجية التالية:

    package com.example.aichatdemo;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.ai.chat.client.ChatClient;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class AiChatApplication {
    
       private static final Logger log = LoggerFactory.getLogger(AiChatApplication.class);
    
       public static void main(String[] args) {
          SpringApplication.run(AiChatApplication.class, args);
       }
    
       @Bean
       CommandLineRunner commandLineRunner(ChatClient.Builder builder) {
          return args -> {
             var chatClient = builder.build();
             log.info("Sending chat prompts to AI service. One moment please...");
             String response = chatClient.prompt()
                   .user("What was Microsoft's original internal codename for the project that eventually became Azure?")
                   .call()
                   .content();
    
             log.info("Response: {}", response);
          };
       }
    }
    

    هام

    للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة الأمان هذه.

  3. انتقل مرة أخرى إلى المجلد الجذر للمشروع، وقم بتشغيل التطبيق باستخدام الأمر التالي:

    ./mvnw spring-boot:run
    

المخرجات

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.3.4)

2025-03-14T13:35:30.145-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Starting AiChatApplication using Java 23.0.2 with PID 93252 (/Users/vega/dev/msft/spring-ai-samples/ai-chat-demo/target/classes started by vega in /Users/vega/dev/msft/spring-ai-samples/ai-chat-demo)
2025-03-14T13:35:30.146-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : No active profile set, falling back to 1 default profile: "default"
2025-03-14T13:35:30.500-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Started AiChatApplication in 0.445 seconds (process running for 0.633)
2025-03-14T13:35:30.501-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Sending chat prompts to AI service. One moment please...
2025-03-14T13:35:31.950-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Response: Microsoft's original internal codename for the project that eventually became Azure was "Project Red Dog." This initiative ultimately led to the development and launch of the Microsoft Azure cloud computing platform.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub

التعليمات البرمجية | المصدرالحزمة (npm) | العينات

ملاحظة

يستخدم هذا الدليل أحدث حزمة OpenAI npm التي تدعم الآن Azure OpenAI بشكل كامل. إذا كنت تبحث عن أمثلة التعليمات البرمجية ل Azure OpenAI JavaScript SDK القديم، فلا تزال متوفرة حاليا في هذا المستودع.

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • إصدارات LTS من Node.js
  • Azure CLI المستخدم للمصادقة بدون كلمة مرور في بيئة تطوير محلية، قم بإنشاء السياق الضروري عن طريق تسجيل الدخول باستخدام Azure CLI.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4 توزيع نموذج سلسلة. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

الإعداد

  1. أنشئ مجلدا chat-quickstart جديدا وانتقل إلى مجلد التشغيل السريع باستخدام الأمر التالي:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. package.json أنشئ باستخدام الأمر التالي:

    npm init -y
    
  3. تثبيت مكتبة عميل OpenAI ل JavaScript باستخدام:

    npm install openai
    
  4. للمصادقة الموصى بها بدون كلمة مرور:

    npm install @azure/identity
    

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

تنبيه

لاستخدام المصادقة بدون مفتاح الموصى بها مع SDK، تأكد من عدم AZURE_OPENAI_API_KEY تعيين متغير البيئة.

إنشاء نموذج تطبيق

  1. index.js إنشاء الملف باستخدام التعليمات البرمجية التالية:

    const { AzureOpenAI } = require("openai");
    const { 
      DefaultAzureCredential, 
      getBearerTokenProvider 
    } = require("@azure/identity");
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-05-01-preview";
    const deployment = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o"; //This must match your deployment name.
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    async function main() {
    
      const client = new AzureOpenAI({ endpoint, apiKey, azureADTokenProvider, deployment });
      const result = await client.chat.completions.create({
        messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "Does Azure OpenAI support customer managed keys?" },
        { role: "assistant", content: "Yes, customer managed keys are supported by Azure OpenAI?" },
        { role: "user", content: "Do other Azure services support this too?" },
        ],
        model: "",
      });
    
      for (const choice of result.choices) {
        console.log(choice.message);
      }
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
    module.exports = { main };
    
  2. سجل الدخول إلى Azure باستخدام الأمر التالي:

    az login
    
  3. قم بتشغيل ملف JavaScript.

    node index.js
    

المخرجات

== Chat Completions Sample ==
{
  content: 'Yes, several other Azure services also support customer managed keys for enhanced security and control over encryption keys.',
  role: 'assistant'
}

ملاحظة

إذا تلقيت الخطأ: حدث خطأ: OpenAIError: apiKey الوسيطتان و azureADTokenProvider حصريتان بشكل متبادل؛ يمكن تمرير وسيطة واحدة فقط في كل مرة. قد تحتاج إلى إزالة متغير بيئة موجود مسبقا لمفتاح API من النظام الخاص بك. على الرغم من أن نموذج التعليمات البرمجية لمعرف Microsoft Entra لا يشير صراحة إلى متغير بيئة مفتاح API، إذا كان موجودا على النظام الذي ينفذ هذه العينة، فلا يزال يتم إنشاء هذا الخطأ.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

التعليمات البرمجية | المصدرالحزمة (npm) | العينات

ملاحظة

يستخدم هذا الدليل أحدث حزمة OpenAI npm التي تدعم الآن Azure OpenAI بشكل كامل. إذا كنت تبحث عن أمثلة التعليمات البرمجية ل Azure OpenAI JavaScript SDK القديم، فلا تزال متوفرة حاليا في هذا المستودع.

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • إصدارات LTS من Node.js
  • TypeScript
  • Azure CLI المستخدم للمصادقة بدون كلمة مرور في بيئة تطوير محلية، قم بإنشاء السياق الضروري عن طريق تسجيل الدخول باستخدام Azure CLI.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع gpt-4 توزيع نموذج سلسلة. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

الإعداد

  1. أنشئ مجلدا chat-quickstart جديدا وانتقل إلى مجلد التشغيل السريع باستخدام الأمر التالي:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. package.json أنشئ باستخدام الأمر التالي:

    npm init -y
    
  3. package.json قم بتحديث إلى ECMAScript باستخدام الأمر التالي:

    npm pkg set type=module
    
  4. تثبيت مكتبة عميل OpenAI ل JavaScript باستخدام:

    npm install openai
    
  5. للمصادقة الموصى بها بدون كلمة مرور:

    npm install @azure/identity
    

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

تنبيه

لاستخدام المصادقة بدون مفتاح الموصى بها مع SDK، تأكد من عدم AZURE_OPENAI_API_KEY تعيين متغير البيئة.

إنشاء نموذج تطبيق

  1. index.ts إنشاء الملف باستخدام التعليمات البرمجية التالية:

    import { AzureOpenAI } from "openai";
    import { 
      DefaultAzureCredential, 
      getBearerTokenProvider 
    } from "@azure/identity";
    import type {
      ChatCompletion,
      ChatCompletionCreateParamsNonStreaming,
    } from "openai/resources/index";
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-08-01-preview";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini"; //This must match your deployment name.
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    
    function createMessages(): ChatCompletionCreateParamsNonStreaming {
      return {
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          {
            role: "user",
            content: "Does Azure OpenAI support customer managed keys?",
          },
          {
            role: "assistant",
            content: "Yes, customer managed keys are supported by Azure OpenAI?",
          },
          { role: "user", content: "Do other Azure services support this too?" },
        ],
        model: "",
      };
    }
    async function printChoices(completion: ChatCompletion): Promise<void> {
      for (const choice of completion.choices) {
        console.log(choice.message);
      }
    }
    export async function main() {
      const client = getClient();
      const messages = createMessages();
      const result = await client.chat.completions.create(messages);
      await printChoices(result);
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
  2. tsconfig.json قم بإنشاء الملف لتبديل التعليمات البرمجية TypeScript ونسخ التعليمات البرمجية التالية ل ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. تحويل من TypeScript إلى JavaScript.

    tsc
    
  4. قم بتشغيل التعليمات البرمجية باستخدام الأمر التالي:

    node index.js
    

المخرجات

== Chat Completions Sample ==
{
  content: 'Yes, several other Azure services also support customer managed keys for enhanced security and control over encryption keys.',
  role: 'assistant'
}

ملاحظة

إذا تلقيت الخطأ: حدث خطأ: OpenAIError: apiKey الوسيطتان و azureADTokenProvider حصريتان بشكل متبادل؛ يمكن تمرير وسيطة واحدة فقط في كل مرة. قد تحتاج إلى إزالة متغير بيئة موجود مسبقا لمفتاح API من النظام الخاص بك. على الرغم من أن نموذج التعليمات البرمجية لمعرف Microsoft Entra لا يشير صراحة إلى متغير بيئة مفتاح API، إذا كان موجودا على النظام الذي ينفذ هذه العينة، فلا يزال يتم إنشاء هذا الخطأ.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

حزمة التعليمات البرمجية | المصدر للمكتبة (PyPi) | استرداد قالب دردشة المؤسسة للجيل المعزز (RAG) |

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • Python 3.8 أو إصدار أحدث.
  • مكتبات Python التالية: os.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع النماذج gpt-35-turbo أو gpt-4 الموزعة. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

تثبيت مكتبة عميل OpenAI Python باستخدام:

pip install openai

ملاحظة

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

قم باسترداد المفتاح ونقطة النهاية

لإجراء مكالمة بنجاح مقابل Azure OpenAI، تحتاج إلى نقطة نهاية ومفتاح.

اسم المتغير القيمة
ENDPOINT يمكن العثور على نقطة نهاية الخدمة في قسم Keys & Endpoint عند فحص المورد الخاص بك من مدخل Microsoft Azure. بدلا من ذلك، يمكنك العثور على نقطة النهاية عبر صفحة Deployments في مدخل Azure الذكاء الاصطناعي Foundry. مثال على نقطة النهاية هو: https://docs-test-001.openai.azure.com/.
API-KEY يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2.

انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على قسم Keys & Endpoint في قسم Resource Management . انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1 أو KEY2. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.

لقطة شاشة لواجهة مستخدم النظرة العامة لمورد Azure OpenAI في مدخل Microsoft Azure مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

متغيرات البيئة

إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.

هام

نوصي بمصادقة معرف Microsoft Entra مع الهويات المدارة لموارد Azure لتجنب تخزين بيانات الاعتماد مع التطبيقات التي تعمل في السحابة.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

إنشاء تطبيق Python جديد

  1. إنشاء ملف Python جديد باسم ⁧⁩quickstart.py. ثم افتحه في المحرر أو IDE المُفضل لديك.

  2. استبدل التعليمات البرمجية التالية بمحتويات quickstart.py.

تحتاج إلى تعيين model المتغير إلى اسم النشر الذي اخترته عند نشر نماذج GPT-3.5-Turbo أو GPT-4. سيؤدي إدخال اسم النموذج إلى حدوث خطأ ما لم تختص باسم نشر مطابق لاسم النموذج الأساسي.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure services support this too?"}
    ]
)

print(response.choices[0].message.content)

هام

للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة الأمان هذه.

  1. قم بتشغيل التطبيق باستخدام الأمر على python ملف التشغيل السريع:

    python quickstart.py
    

المخرجات

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Yes, most of the Azure services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.",
        "role": "assistant"
      }
    }
  ],
  "created": 1679001781,
  "id": "chatcmpl-6upLpNYYOx2AhoOYxl9UgJvF4aPpR",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 39,
    "prompt_tokens": 58,
    "total_tokens": 97
  }
}
Yes, most of the Azure services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.

فهم بنية الرسالة

تم تحسين نماذج GPT-35-Turbo وGPT-4 للعمل مع المدخلات المنسقة كمحادثة. يمرر messages المتغير صفيفا من القواميس بأدوار مختلفة في المحادثة التي يحددها النظام والمستخدم والمساعد. يمكن استخدام رسالة النظام لإعداد النموذج الأولي من خلال تضمين سياق أو إرشادات حول كيفية استجابة النموذج.

يوفر دليل الكيفية GPT-35-Turbo وGPT-4 مقدمة متعمقة في خيارات التواصل مع هذه النماذج الجديدة.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

مواصفات واجهة برمجة تطبيقات REST |

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

  • اشتراك Azure - أنشئ اشتراكاً مجاناً.
  • مورد Azure OpenAI في Azure الذكاء الاصطناعي Foundry Models مع النماذج gpt-35-turbo أو gpt-4 الموزعة. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

قم باسترداد المفتاح ونقطة النهاية

لإجراء مكالمة بنجاح مقابل Azure OpenAI، تحتاج إلى نقطة نهاية ومفتاح.

اسم المتغير القيمة
ENDPOINT يمكن العثور على نقطة نهاية الخدمة في قسم Keys & Endpoint عند فحص المورد الخاص بك من مدخل Microsoft Azure. بدلا من ذلك، يمكنك العثور على نقطة النهاية عبر صفحة Deployments في مدخل Azure الذكاء الاصطناعي Foundry. مثال على نقطة النهاية هو: https://docs-test-001.openai.azure.com/.
API-KEY يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2.

انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على قسم Keys & Endpoint في قسم Resource Management . انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1 أو KEY2. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.

لقطة شاشة لواجهة مستخدم النظرة العامة لمورد Azure OpenAI في مدخل Microsoft Azure مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

متغيرات البيئة

إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.

هام

نوصي بمصادقة معرف Microsoft Entra مع الهويات المدارة لموارد Azure لتجنب تخزين بيانات الاعتماد مع التطبيقات التي تعمل في السحابة.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

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

في bash shell، قم بتشغيل الأمر التالي. ستحتاج إلى استبدال gpt-35-turbo باسم النشر الذي اخترته عند نشر نماذج GPT-35-Turbo أو GPT-4. سيؤدي إدخال اسم النموذج إلى حدوث خطأ ما لم تختص باسم نشر مطابق لاسم النموذج الأساسي.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo/chat/completions?api-version=2024-02-01 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure services support this too?"}]}'

سيظهر تنسيق السطر الأول من الأمر مع مثال نقطة نهاية كما يلي curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/chat/completions?api-version=2024-02-01 \ إذا واجهت خطأ مزدوج التحقق للتأكد من أنه ليس لديك مضاعفة / عند الفصل بين نقطة النهاية الخاصة بك و /openai/deployments.

إذا كنت تريد تشغيل هذا الأمر في موجه أوامر Windows عادي، فستحتاج إلى تغيير النص لإزالة \ فواصل الأسطر و.

هام

للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة الأمان هذه.

المخرجات

{"id":"chatcmpl-6v7mkQj980V1yBec6ETrKPRqFjNw9",
"object":"chat.completion","created":1679072642,
"model":"gpt-35-turbo",
"usage":{"prompt_tokens":58,
"completion_tokens":68,
"total_tokens":126},
"choices":[{"message":{"role":"assistant",
"content":"Yes, many other Azure services also support customer managed keys. Azure OpenAI offers multiple options for customers to manage keys, such as using Azure Key Vault, customer-managed keys in Azure Key Vault or customer-managed keys through Azure Storage service. This helps customers ensure that their data is secure and access to their services is controlled."},"finish_reason":"stop","index":0}]}

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

فهم بنية الرسالة

تم تحسين نماذج GPT-35-Turbo وGPT-4 للعمل مع المدخلات المنسقة كمحادثة. يمرر messages المتغير صفيفا من القواميس بأدوار مختلفة في المحادثة التي يحددها النظام والمستخدم والمساعد. يمكن استخدام رسالة النظام لإعداد النموذج الأولي من خلال تضمين سياق أو إرشادات حول كيفية استجابة النموذج.

يوفر دليل الكيفية GPT-35-Turbo وGPT-4 مقدمة متعمقة في خيارات التواصل مع هذه النماذج الجديدة.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

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

المتطلبات الأساسية لمعرف Microsoft Entra

للمصادقة بدون مفتاح الموصى بها مع معرف Microsoft Entra، تحتاج إلى:

  • قم بتثبيت Azure CLI المستخدم للمصادقة بدون مفتاح باستخدام معرف Microsoft Entra.
  • Cognitive Services User تعيين الدور إلى حساب المستخدم الخاص بك. يمكنك تعيين أدوار في مدخل Microsoft Azure ضمن التحكم في الوصول (IAM)>إضافة تعيين دور.

استرداد معلومات المورد

تحتاج إلى استرداد المعلومات التالية لمصادقة التطبيق الخاص بك باستخدام مورد Azure OpenAI الخاص بك:

اسم المتغير القيمة
AZURE_OPENAI_ENDPOINT يمكن العثور على هذه القيمة في قسم Keys and Endpoint عند فحص المورد من مدخل Microsoft Azure.
AZURE_OPENAI_DEPLOYMENT_NAME ستتوافق هذه القيمة مع الاسم المخصص الذي اخترته للتوزيع عند نشر نموذج. يمكن العثور على هذه القيمة ضمن Resource Management>Model Deployments في مدخل Microsoft Azure.
OPENAI_API_VERSION تعرف على المزيد حول إصدارات واجهة برمجة التطبيقات.

يمكنك تغيير الإصدار في التعليمات البرمجية أو استخدام متغير بيئة.

تعرف على المزيد حول المصادقة بدون مفتاحوتعيين متغيرات البيئة.

إنشاء برنامج نصي PowerShell جديد

  1. للمصادقة بدون مفتاح الموصى بها باستخدام معرف Microsoft Entra، سجل الدخول إلى Azure باستخدام الأمر التالي:

    az login
    
  2. إنشاء ملف PowerShell جديد يسمى quickstart.ps1. ثم افتحه في المحرر أو IDE المُفضل لديك.

  3. استبدل محتويات quickstart.ps1 بالتعليمات البرمجية التالية. تحتاج إلى تعيين engine المتغير إلى اسم النشر الذي اخترته عند نشر نموذج GPT-4o. يؤدي إدخال اسم النموذج إلى حدوث خطأ ما لم تختص باسم نشر مطابق لاسم النموذج الأساسي.

    # Azure OpenAI metadata variables
    $openai = @{
       api_base    = $Env:AZURE_OPENAI_ENDPOINT
       api_version = '2024-10-21' # This can change in the future.
       name        = 'gpt-4o' # The name you chose for your model deployment.
    }
    
    # Use the recommended keyless authentication via bearer token.
    $headers = [ordered]@{
        #'api-key' = $Env:AZURE_OPENAI_API_KEY
        'Authorization' = "Bearer $($Env:DEFAULT_AZURE_CREDENTIAL_TOKEN)"
    }
    
    # Completion text
    $messages = @()
    $messages += @{
      role = 'system'
      content = 'You are a helpful assistant.'
    }
    $messages += @{
      role = 'user'
      content = 'Can I use honey as a substitute for sugar?'
    }
    $messages += @{
      role = 'assistant'
      content = 'Yes, you can use honey as a substitute for sugar.'
    }
    $messages += @{
      role = 'user'
      content = 'What other ingredients can I use as a substitute for sugar?'
    }
    
    # Adjust these values to fine-tune completions
    $body = [ordered]@{
       messages = $messages
    } | ConvertTo-Json
    
    # Send a request to generate an answer
    $url = "$($openai.api_base)/openai/deployments/$($openai.name)/chat/completions?api-version=$($openai.api_version)"
    
    $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
    return $response
    

    هام

    للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد الخاصة بك والوصول إليها مثل إدارة PowerShell السرية باستخدام Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة الأمان هذه.

  4. تشغيل البرنامج النصي باستخدام PowerShell. في هذا المثال، نستخدم المعلمة -Depth للتأكد من عدم اقتطاع الإخراج.

    ./quickstart.ps1 | ConvertTo-Json -Depth 4
    

المخرجات

إخراج البرنامج النصي هو كائن JSON يحتوي على الاستجابة من Azure OpenAI. يبدو الإخراج مشابهاً للنص التالي:

{
  "choices": [
    {
      "content_filter_results": {
        "custom_blocklists": {
          "filtered": false
        },
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "protected_material_code": {
          "filtered": false,
          "detected": false
        },
        "protected_material_text": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "There are many alternatives to sugar that can be used in cooking and baking, depending on your dietary needs, taste preferences, and the type of recipe you're making. Here are some popular sugar substitutes:\n\n---\n\n### 1. **Natural Sweeteners**\n   - **Maple Syrup**: A natural sweetener with a rich, distinct flavor. Use about ¾ cup of maple syrup for every cup of sugar, and reduce the liquid in the recipe slightly.\n   - **Agave Nectar**: A liquid sweetener that’s sweeter than sugar. Use about ⅔ cup of agave nectar for each cup of sugar, and reduce the liquid in the recipe.\n   - **Coconut Sugar**: Made from the sap of the coconut palm, it has a mild caramel flavor. Substitute in a 1:1 ratio for sugar.\n   - **Molasses**: A by-product of sugar production, molasses is rich in flavor and best for recipes like gingerbread or barbecue sauce. Adjust quantities based on the recipe.\n   - **Stevia (Natural)**: Derived from the stevia plant, it's intensely sweet and available in liquid or powder form. Use sparingly, as a little goes a long way.\n\n---\n\n### 2. **Fruit-Based Sweeteners**\n   - **Ripe Bananas**: Mashed bananas work well for baking recipes like muffins or pancakes. Use about ½ cup of mashed banana for every cup of sugar and reduce the liquid slightly.\n   - **Applesauce**: Unsweetened applesauce adds sweetness and moisture to baked goods. Replace sugar in a 1:1 ratio, but reduce the liquid by ¼ cup.\n   - **Dates/Date Paste**: Blend dates with water to make a paste, which works well in recipes like energy bars, cakes, or smoothies. Use in a 1:1 ratio for sugar.\n   - **Fruit Juices (e.g., orange juice)**: Can be used to impart natural sweetness but is best suited for specific recipes like marinades or desserts.\n\n---\n\n### 3. **Artificial and Low-Calorie Sweeteners**\n   - **Erythritol**: A sugar alcohol with no calories. Substitute in equal amounts, but be careful as it may cause a cooling sensation in some recipes.\n   - **Xylitol**: Another sugar alcohol, often used in gum and candies. It’s a 1:1 sugar substitute but may affect digestion if consumed in large quantities.\n   - **Monk Fruit Sweetener**: A natural, calorie-free sweetener that’s significantly sweeter than sugar. Follow the product packaging for exact substitution measurements.\n   - **Aspartame, Sucralose, or Saccharin** (Artificial Sweeteners): Often used for calorie reduction in beverages or desserts. Follow package instructions for substitution.\n\n---\n\n### 4. **Other Natural Alternatives**\n   - **Brown Rice Syrup**: A sticky, malt-flavored syrup used in granolas or desserts. Substitute 1 ¼ cups of brown rice syrup for every cup of sugar.\n   - **Barley Malt Syrup**: A thick, dark syrup with a distinct flavor. It can replace sugar but might require recipe adjustments due to its strong taste.\n   - **Yacon Syrup**: Made from the root of the yacon plant, it’s similar in texture to molasses and has a mild sweetness.\n\n---\n\n### General Tips for Substituting Sugar:\n- **Adjust Liquids:** Many liquid sweeteners (like honey or maple syrup) require reducing the liquid in the recipe to maintain texture.\n- **Baking Powder Adjustment:** If replacing sugar with an acidic sweetener (e.g., honey or molasses), you might need to add a little baking soda to neutralize acidity.\n- **Flavor Changes:** Some substitutes, like molasses or coconut sugar, have distinct flavors that can influence the taste of your recipe.\n- **Browning:** Sugar contributes to caramelization and browning in baked goods. Some alternatives may yield lighter-colored results.\n\nBy trying out different substitutes, you can find what works best for your recipes!",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1742602230,
  "id": "chatcmpl-BDgjWjEboQ0z6r58pvSBgH842JbB2",
  "model": "gpt-4o-2024-11-20",
  "object": "chat.completion",
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {
        "custom_blocklists": {
          "filtered": false
        },
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "jailbreak": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ],
  "system_fingerprint": "fp_a42ed5ff0c",
  "usage": {
    "completion_tokens": 836,
    "completion_tokens_details": {
      "accepted_prediction_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0,
      "rejected_prediction_tokens": 0
    },
    "prompt_tokens": 60,
    "prompt_tokens_details": {
      "audio_tokens": 0,
      "cached_tokens": 0
    },
    "total_tokens": 896
  }
}

الملاحظات

يمكنك تخطي ConvertTo-Json الخطوة إذا كنت تريد رؤية الإخراج الأولي.

./quickstart.ps1

يبدو هذا الإخراج على هذا النحو:

choices               : {@{content_filter_results=; finish_reason=stop; index=0; logprobs=; message=}}
created               : 1742602727
id                    : chatcmpl-BDgrX0BF38mZuszFeyU1NKZSiRpSX
model                 : gpt-4o-2024-11-20
object                : chat.completion
prompt_filter_results : {@{prompt_index=0; content_filter_results=}}
system_fingerprint    : fp_b705f0c291
usage                 : @{completion_tokens=944; completion_tokens_details=; prompt_tokens=60; prompt_tokens_details=; total_tokens=1004}

يمكنك تحرير محتويات البرنامج النصي powershell.ps1 لإرجاع الكائن بأكمله أو خاصية معينة. على سبيل المثال، لإرجاع النص الذي تم إرجاعه، يمكنك استبدال السطر الأخير من البرنامج النصي (return $response) بما يلي:

return $response.choices.message.content

ثم قم بتشغيل البرنامج النصي مرة أخرى.

./quickstart.ps1

يبدو هذا الإخراج على هذا النحو:

There are several ingredients that can be used as substitutes for sugar, depending on the recipe and your dietary preferences. Here are some popular options:

---

### **Natural Sweeteners**
1. **Maple Syrup**
   - Flavor: Rich and slightly caramel-like.
   - Use: Works well in baking, sauces, oatmeal, and beverages.
   - Substitution: Replace sugar in a 1:1 ratio but reduce the liquid in your recipe by about 3 tablespoons per cup of maple syrup.

2. **Agave Nectar**
   - Flavor: Mildly sweet, less pronounced than honey.
   - Use: Good for beverages, desserts, and dressings.
   - Substitution: Use about 2/3 cup of agave nectar for every 1 cup of sugar, and reduce other liquids slightly.

3. **Molasses**
   - Flavor: Strong, earthy, and slightly bitter.
   - Use: Perfect for gingerbread, cookies, and marinades.
   - Substitution: Replace sugar in equal amounts, but adjust for the strong flavor.

4. **Date Paste**
   - Flavor: Naturally sweet with hints of caramel.
   - Use: Works well in energy bars, smoothies, or baking recipes.
   - Substitution: Blend pitted dates with water to create paste (about 1:1 ratio). Use equal amounts in recipes.

5. **Coconut Sugar**
   - Flavor: Similar to brown sugar, mildly caramel-like.
   - Use: Excellent for baking.
   - Substitution: Replace sugar in a 1:1 ratio.

---

### **Low-Calorie Sweeteners**
1. **Stevia**
   - Flavor: Very sweet but can have a slightly bitter aftertaste.
   - Use: Works in beverages, desserts, and some baked goods.
   - Substitution: Use less—around 1 teaspoon of liquid stevia or 1/2 teaspoon stevia powder for 1 cup of sugar. Check the package for exact conversion.

2. **Erythritol**
   - Flavor: Similar to sugar but less sweet.
   - Use: Perfect for baked goods and beverages.
   - Substitution: Replace sugar using a 1:1 ratio, though you may need to adjust for less sweetness.

3. **Xylitol**
   - Flavor: Similar to sugar.
   - Use: Great for baking or cooking but avoid using it for recipes requiring caramelization.
   - Substitution: Use a 1:1 ratio.

---

### **Fruit-Based Sweeteners**
1. **Mashed Bananas**
   - Flavor: Sweet with a fruity note.
   - Use: Great for muffins, cakes, and pancakes.
   - Substitution: Use 1 cup mashed banana for 1 cup sugar, but reduce liquid slightly in the recipe.

2. **Applesauce**
   - Flavor: Mildly sweet.
   - Use: Excellent for baked goods like muffins or cookies.
   - Substitution: Replace sugar 1:1, but reduce other liquids slightly.

3. **Fruit Juice Concentrates**
   - Flavor: Sweet with fruity undertones.
   - Use: Works well in marinades, sauces, and desserts.
   - Substitution: Use equal amounts, but adjust liquid content.

---

### **Minimal-Processing Sugars**
1. **Raw Honey**
   - Flavor: Sweet with floral undertones.
   - Use: Good for baked goods and beverages.
   - Substitution: Replace sugar in a 1:1 ratio, but reduce other liquids slightly.

2. **Brown Rice Syrup**
   - Flavor: Mildly sweet with a hint of nuttiness.
   - Use: Suitable for baked goods and granola bars.
   - Substitution: Use 1-1/4 cups of syrup for 1 cup of sugar, and decrease liquid in the recipe.

---

### Tips for Substitution:
- Adjust for sweetness: Some substitutes are sweeter or less sweet than sugar, so amounts may need tweaking.
- Baking considerations: Sugar affects texture, browning, and moisture. If you replace it, you may need to experiment to get the desired result.
- Liquid adjustments: Many natural sweeteners are liquid, so you’ll often need to reduce the amount of liquid in your recipe.

Would you like help deciding the best substitute for a specific recipe?

فهم بنية الرسالة

تم تحسين نماذج GPT-4 للعمل مع المدخلات المنسقة كمحادثة. يمرر messages المتغير صفيفا من القواميس بأدوار مختلفة في المحادثة التي يحددها النظام والمستخدم والمساعد. يمكن استخدام رسالة النظام لإعداد النموذج الأولي من خلال تضمين سياق أو إرشادات حول كيفية استجابة النموذج.

يوفر دليل الكيفية GPT-4 مقدمة متعمقة في خيارات التواصل مع هذه النماذج.

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

إذا كنت ترغب في تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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