التشغيل السريع: ابدأ باستخدام GPT-35-Turbo وGPT-4 مع خدمة Azure OpenAI

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

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

  • اشتراك Azure - أنشئ اشتراكاً مجاناً.
  • مورد خدمة Azure OpenAI مع النماذج gpt-35-turbo أو gpt-4 التي تم نشرها. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

تلميح

جرب Azure الذكاء الاصطناعي Studio الموحد الجديد (معاينة) الذي يجمع القدرات من خلال خدمات Azure الذكاء الاصطناعي المتعددة.

انتقل إلى Azure OpenAI Studio

انتقل إلى Azure OpenAI Studio في https://oai.azure.com/ وسجل الدخول باستخدام بيانات الاعتماد التي لديها حق الوصول إلى مورد Azure OpenAI. أثناء سير عمل تسجيل الدخول أو بعده، حدد الدليل المناسب واشتراك Azure ومورد Azure OpenAI.

من الصفحة المنتقل إليها في Azure OpenAI Studio، حدد Chat playground.

لقطة شاشة للصفحة المنتقل إليها في Azure OpenAI Studio مع تمييز ملعب الدردشة.

Playground

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

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

إعداد المساعد

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

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

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

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

جلسة المحادثة

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

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

إعدادات

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

إظهار اللوحات

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

بدء جلسة دردشة

  1. من القائمة المنسدلة إعداد المساعد، حدد عامل دعم عملاء Xbox

  2. ستتم مطالبتك بالسؤال عما إذا كنت تريد تحديث رسالة النظام، حدد متابعة.

  3. في جزء جلسة الدردشة، أدخل السؤال التالي: "أنا مهتم بشراء Xbox جديد"، وحدد إرسال.

  4. ستتلقى ردا مشابها ل:

    لقطة شاشة لأول سؤال وإجابة في الملعب.

  5. أدخل سؤال متابعة مثل: "ما هي النماذج التي تدعم 4K؟"

    لقطة شاشة لسؤال المتابعة والإجابة في الملعب.

  6. الآن بعد أن أصبحت لديك محادثة أساسية، حدد عرض التعليمات البرمجية من ضمن إعداد المساعد وستتم إعادة عرض التعليمات البرمجية خلف المحادثة بأكملها حتى الآن:

#Note: The openai-python library support for Azure OpenAI is in preview.
import os
import openai
openai.api_type = "azure"
openai.api_base = "https://docs-test-001.openai.azure.com/"
openai.api_version = "2024-02-01"
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.ChatCompletion.create(
  engine="gpt-35-turbo", # replace this value with the deployment name you chose when you deployed the associated model.
  messages = [{"role":"system","content":"You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."},{"role":"user","content":"How much is a PS5?"},{"role":"assistant","content":"I apologize, but I do not have information about the prices of other gaming devices such as the PS5. My primary focus is to assist with issues regarding Xbox devices. Is there a specific issue you are having with your Xbox device that I may be able to help with?"},{"role":"user","content":"I am interested in buying an Xbox?"},{"role":"assistant","content":"Great! There are several Xbox models available in the market, including the Xbox Series X, Xbox Series S, and Xbox One. The Xbox Series X is the latest and most powerful console, while the Xbox Series S is a more affordable option that still offers great performance. The Xbox One is the previous generation console, but it still has a large library of games available to play.\n\nBefore purchasing an Xbox, you may want to consider factors such as your budget, the types of games you want to play, and whether you want to play games in 4K resolution. Once you have decided on a console, you can purchase it from a retailer or directly from the Xbox website. Let me know if you have any other questions or concerns!"},{"role":"user","content":"Which models are 4K?"},{"role":"assistant","content":"Both the Xbox Series X and Xbox One X support 4K resolution gaming. The Xbox Series S, on the other hand, supports up to 1440p resolution gaming, but it can upscale games to 4K. It's worth noting that in order to take advantage of 4K gaming, you'll need a 4K TV or monitor that supports HDR (High Dynamic Range) and HDMI 2.0 or higher."}],
  temperature=0,
  max_tokens=350,
  top_p=0.95,
  frequency_penalty=0,
  presence_penalty=0,
  stop=None)

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

إذا قمت بفحص النموذج من عرض التعليمات البرمجية ، فستلاحظ بعض الرموز المميزة الفريدة التي لم تكن جزءا من استدعاء إكمال GPT نموذجي. تم تدريب GPT-35-Turbo على استخدام رموز مميزة خاصة لتحديد أجزاء مختلفة من المطالبة. يتم توفير المحتوى للنموذج بين <|im_start|> والرموز <|im_end|> المميزة. تبدأ المطالبة برسالة نظام يمكن استخدامها لإعداد النموذج الأولي عن طريق تضمين السياق أو الإرشادات الخاصة بالنموذج. بعد ذلك، تحتوي المطالبة على سلسلة من الرسائل بين المستخدم والمساعد.

ثم سيتم إرجاع استجابة المساعد إلى المطالبة أسفل <|im_start|>assistant الرمز المميز وستنتهي بالدلالة <|im_end|> على أن المساعد قد أنهى استجابته. يمكنك أيضا استخدام زر تبديل إظهار بناء الجملة الخام لعرض هذه الرموز المميزة داخل لوحة جلسة الدردشة.

يوفر دليل الكيفية GPT-35-Turbo وGPT-4 مقدمة متعمقة في بنية المطالبة الجديدة وكيفية استخدام gpt-35-turbo النموذج بشكل فعال.

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

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

لقطة شاشة تعرض زر نشر النموذج في Azure OpenAI Studio.

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

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

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

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

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

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

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

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

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

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • .NET 7 SDK
  • مورد خدمة Azure OpenAI مع النماذج gpt-35-turbo أو gpt-4 التي تم نشرها. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

إنشاء تطبيق .NET Core جديد

في نافذة وحدة تحكم (مثل cmd أو PowerShell أو Bash)، استخدم الأمر ⁧dotnet new⁩ لإنشاء تطبيق وحدة تحكم جديد بالاسم ⁧azure-openai-quickstart⁩. ينشئ هذا الأمر مشروع "Hello World" بسيطًا مع ملف مصدر C# واحد: Program.cs.

dotnet new console -n azure-openai-quickstart

غيّر دليلك إلى مجلد التطبيق المنشأ حديثاً. يمكنك إنشاء التطبيق باستخدام:

dotnet build

يجب ألا يحتوي إخراج البناء على تحذيرات أو أخطاء.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

تثبيت مكتبة عميل OpenAI .NET مع:

dotnet add package Azure.AI.OpenAI --prerelease

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

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

من دليل المشروع، افتح ملف program.cs واستبدل بالتعليمات البرمجية التالية:

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

using Azure;
using Azure.AI.OpenAI;
using static System.Environment;

string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

AzureOpenAIClient azureClient = new(
    new Uri(endpoint),
    new AzureKeyCredential(key));

// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureClient.GetChatClient("gpt-35-turbo");

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 AI services support this too?")
    ]);

Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");

هام

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

dotnet run program.cs

المخرجات

Assistant : Yes, many other Azure AI services also support customer managed keys, including Azure Cognitive Services, Azure Machine Learning, and Azure Databricks. By using customer managed keys, you can retain complete control over your encryption keys and provide an additional layer of security for your AI assets.

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

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

using Azure;
using Azure.AI.OpenAI;
using OpenAI.Chat;
using static System.Environment;

string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

AzureOpenAIClient azureClient = new(
    new Uri(endpoint),
    new AzureKeyCredential(key));

// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureClient.GetChatClient("gpt-35-turbo");

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 AI 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);
    }
}

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

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

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

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

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

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • Go 1.21.0 أو أعلى مثبت محليا.
  • مورد خدمة Azure OpenAI مع gpt-35-turbo نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

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

إنشاء ملف جديد باسم chat_completions.go. انسخ التعليمات البرمجية التالية في ملف chat_completions.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/azcore"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
)

func main() {
	azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")
	modelDeploymentID := os.Getenv("YOUR_MODEL_DEPLOYMENT_NAME")
    maxTokens:= int32(400)


	// Ex: "https://<your-azure-openai-host>.openai.azure.com"
	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")

	if azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" {
		fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
		return
	}

	keyCredential := azcore.NewKeyCredential(azureOpenAIKey)

	// In Azure OpenAI you must deploy a model before you can use it in your client. For more information
	// see here: https://learn.microsoft.com/azure/cognitive-services/openai/how-to/create-resource
	client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)

	if err != nil {
		// TODO: Update the following line with your application specific error handling logic
		log.Printf("ERROR: %s", err)
		return
	}

	// This is a conversation in progress.
	// NOTE: all messages, regardless of role, count against token usage for this API.
	messages := []azopenai.ChatRequestMessageClassification{
		// You set the tone and rules of the conversation with a prompt as the system role.
		&azopenai.ChatRequestSystemMessage{Content: to.Ptr("You are a helpful assistant.")},

		// The user asks a question
		&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("Does Azure OpenAI support customer managed keys?")},

		// The reply would come back from the model. You'd add it to the conversation so we can maintain context.
		&azopenai.ChatRequestAssistantMessage{Content: to.Ptr("Yes, customer managed keys are supported by Azure OpenAI")},

		// The user answers the question based on the latest reply.
		&azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What other Azure Services support customer managed keys?")},

		// from here you'd keep iterating, sending responses back from ChatGPT
	}

	gotReply := false

	resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
		// This is a conversation in progress.
		// NOTE: all messages count against token usage for this API.
		Messages:       messages,
		DeploymentName: &modelDeploymentID,
		MaxTokens: &maxTokens,
	}, nil)

	if err != nil {
		// TODO: Update the following line with your 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 {
			// this choice's conversation 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")
	}

}

هام

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

الآن افتح موجه الأوامر وقم بتشغيل:

go mod init chat_completions.go

التشغيل التالي:

go mod tidy
go run chat_completions.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]: As of my last update in early 2023, in Azure, several AI services support the use of customer-managed keys (CMKs) through Azure Key Vault. This allows customers to have control over the encryption keys used to secure their data at rest. The services that support this feature typically fall under Azure's range of cognitive services and might include:

1. Azure Cognitive Search: It supports using customer-managed keys to encrypt the index data.
2. Azure Form Recognizer: For data at rest, you can use customer-managed keys for added security.
3. Azure Text Analytics: CMKs can be used for encrypting your data at rest.
4. Azure Blob Storage: While not exclusively an AI service, it's often used in conjunction with AI services to store data, and it supports customer-managed keys for encrypting blob data.

Note that the support for CMKs can vary by service and sometimes even by the specific feature within the service. Additionally, the landscape of cloud services is fast evolving, and new features, including security capabilities, are frequently added. Therefore, it's recommended to check the latest Azure documentation or contact Azure support for the most current information about CMK support for any specific Azure AI service.
Finish reason[0]: stop
Received chat completions reply

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

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

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

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

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

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

  • أداة إنشاء Gradleأو مدير تبعية آخر.
  • مورد خدمة Azure OpenAI مع النماذج gpt-35-turbo أو gpt-4 التي تم نشرها. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

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

قم بإنشاء مشروع Gradle جديد.

في إطار نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، يمكنك إنشاء دليل جديد لتطبيقك وانتقل إليه.

mkdir myapp && cd myapp

بادر بتشغيل الأمر gradle init من دليل العمل خاصتك. سينشئ هذا الأمر ملفات بناء أساسية لـ Gradle، بما في ذلك build.gradle.kts، والذي يجري استخدامه في وقت التشغيل لإنشاء تطبيقك وتكوينه.

gradle init --type basic

عند طلب اختيار DSL، حدد Kotlin.

تثبيت Java SDK

يستخدم هذا التشغيل السريع مدير تبعية Gradle. يمكنك العثور على مكتبة العميل ومعلومات مديري التبعية الآخرين على Maven Central Repository.

حدد build.gradle.kts وافتحه باستخدام IDE أو محرر النص المفضل لديك. ثم انسخ في تكوين البناء التالي. يعرف هذا التكوين المشروع على أنه تطبيق Java الذي نقطة إدخاله هي الفئة OpenAIQuickstart. يستورد مكتبة Azure الذكاء الاصطناعي Vision.

plugins {
    java
    application
}
application { 
    mainClass.set("OpenAIQuickstart")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.10")
    implementation("org.slf4j:slf4j-simple:1.7.9")
}

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

  1. أنشئ ملف Java.

    من دليل العمل الخاص بك، قم بتشغيل الأمر التالي لإنشاء مجلد مصدر المشروع:

    mkdir -p src/main/java
    

    انتقل إلى المجلد الجديد وأنشئ ملفا يسمى OpenAIQuickstart.java.

  2. افتح OpenAIQuickstart.java في المحرر المفضل لديك أو IDE والصقها في التعليمات البرمجية التالية.

    package com.azure.ai.openai.usage;
    
    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.core.credential.AzureKeyCredential;
    import com.azure.core.util.Configuration;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class OpenAIQuickstart {
    
        public static void main(String[] args) {
            String azureOpenaiKey = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_API_KEY");
            String endpoint = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT");
            String deploymentOrModelId = "{azure-open-ai-deployment-model-id}";
    
            OpenAIClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new AzureKeyCredential(azureOpenaiKey))
                .buildClient();
    
            List<ChatRequestMessage> chatMessages = new ArrayList<>();
            chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant."));
            chatMessages.add(new ChatRequestUserMessage("Does Azure OpenAI support customer managed keys?"));
            chatMessages.add(new ChatRequestAssistantMessage("Yes, customer managed keys are supported by Azure OpenAI?"));
            chatMessages.add(new ChatRequestUserMessage("Do other Azure AI services support this too?"));    
    
            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());
        }
    }
    

    هام

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

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

    gradle build
    

    ثم، شغله باستخدام أمر gradle run:

    gradle run
    

المخرجات

Model ID=chatcmpl-7JYnyE4zpd5gaIfTRH7hNpeVsvAw4 is created at 1684896378.
Index: 0, Chat Role: assistant.
Message:
Yes, most of the Azure AI services support customer managed keys. However, there may be some exceptions, so it is best to check the documentation of each specific service to confirm.

Usage: number of prompt token is 59, number of completion token is 36, and number of total tokens in request and response is 95.

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

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

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

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

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

الإعداد

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

إشعار

يقوم 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.2.0</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>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.experimental.ai</groupId>
                <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
                <version>0.7.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>
    </project>
    
  2. من المجلد src/main/java/com/example/aichatdemo، افتح AiChatApplication.java في المحرر المفضل لديك أو IDE والصقها في التعليمات البرمجية التالية:

    package com.example.aichatdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.messages.ChatMessage;
    import org.springframework.ai.prompt.messages.Message;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class AiChatApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        @Autowired
        private AiClient aiClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiChatApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending chat prompts to AI service. One moment please...\r\n"));
    
            final List<Message> msgs = new ArrayList<>();
    
            msgs.add(new ChatMessage(MessageType.SYSTEM, "You are a helpful assistant"));
            msgs.add(new ChatMessage(MessageType.USER, "Does Azure OpenAI support customer managed keys?"));
            msgs.add(new ChatMessage(MessageType.ASSISTANT, "Yes, customer managed keys are supported by Azure OpenAI?"));
            msgs.add(new ChatMessage(MessageType.USER, "Do other Azure AI services support this too?"));
    
            final var resps = aiClient.generate(new Prompt(msgs));
    
            System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size()));
    
            resps.getGenerations().stream()
              .forEach(gen -> {
                  final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue());
    
                  System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText()));
              });
        }
    
    }
    

    هام

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

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

    ./mvnw spring-boot:run
    

المخرجات

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T13:31:10.884-06:00  INFO 6248 --- [           main] c.example.aichatdemo.AiChatApplication   : No active profile set, falling back to 1 default profile: "default"
2023-11-07T13:31:11.595-06:00  INFO 6248 --- [           main] c.example.aichatdemo.AiChatApplication   : Started AiChatApplication in 0.994 seconds (process running for 1.28)
Sending chat prompts to AI service. One moment please...

Prompt created 1 generated response(s).
Generated respose from "assistant": Yes, other Azure AI services also support customer managed keys. Azure AI Services, Azure Machine Learning, and other AI services in Azure provide options for customers to manage and control their encryption keys. This allows customers to have greater control over their data and security.

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

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

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

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

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

إشعار

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

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

الإعداد

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

إنشاء تطبيق عقدة

في إطار نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، يمكنك إنشاء دليل جديد لتطبيقك وانتقل إليه.

تثبيت مكتبة العميل

تثبيت الحزم المطلوبة ل JavaScript مع npm من داخل سياق الدليل الجديد الخاص بك:

npm install openai dotenv @azure/identity

سيتم تحديث ملف package.json الخاص بتطبيقك بالتبعيات.

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

افتح موجه الأوامر حيث تريد المشروع الجديد، وأنشئ ملفا جديدا باسم ChatCompletion.js. انسخ التعليمات البرمجية التالية في ملف ChatCompletion.js.

const { AzureOpenAI } = require("openai");

// Load the .env file if it exists
const dotenv = require("dotenv");
dotenv.config();

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const apiKey = process.env["AZURE_OPENAI_API_KEY"] || "<api key>";
const apiVersion = "2024-05-01-preview";
const deployment = "gpt-4o"; //This must match your deployment name.
require("dotenv/config");

async function main() {

  const client = new AzureOpenAI({ endpoint, apiKey, apiVersion, 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 AI 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 };

قم بتشغيل البرنامج النصي مع الأمر التالي:

node.exe ChatCompletion.js

المخرجات

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

Microsoft Entra ID

هام

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

const { AzureOpenAI } = require("openai");
const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");

// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// OpenAI resource. You can find this in the Azure portal.
// Load the .env file if it exists
require("dotenv/config");

async function main() {
  console.log("== Chat Completions Sample ==");

  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
  const deployment = "gpt-35-turbo";
  const apiVersion = "2024-04-01-preview";
  const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
  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 AI 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 };

إشعار

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

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

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

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

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

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

الإعداد

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

pip install openai

إشعار

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

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

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 AI services support this too?"}
    ]
)

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

هام

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

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

    python quickstart.py
    

المخرجات

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Yes, most of the Azure AI 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 AI 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 مع النماذج gpt-35-turbo أو gpt-4 التي تم نشرها. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.

الإعداد

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: 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 مع وضع نقطة النهاية وموقع مفاتيح الوصول في دائرة باللون الأحمر.

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

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

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 AI 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. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة أمان خدمات Azure الذكاء الاصطناعي.

المخرجات

{"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, other Azure AI services also support customer managed keys. Azure AI services offer 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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.

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

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

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

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

اسم المتغير القيمة‬
ENDPOINT يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. بدلاً من ذلك، يمكنك العثور على القيمة في Azure OpenAI Studio>Playground>Code View. مثال على نقطة النهاية هو: https://docs-test-001.openai.azure.com/.
API-KEY يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2.

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

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

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

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

$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'

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

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

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

    # Azure OpenAI metadata variables
    $openai = @{
       api_key     = $Env:AZURE_OPENAI_API_KEY
       api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
       api_version = '2024-02-01' # this may change in the future
       name        = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
    }
    
    # Completion text
    $messages = @()
    $messages += @{
      role = 'system'
      content = 'You are a helpful assistant.'
    }
    $messages += @{
      role = 'user'
      content = 'Does Azure OpenAI support customer managed keys?'
    }
    $messages += @{
      role = 'assistant'
      content = 'Yes, customer managed keys are supported by Azure OpenAI.'
    }
    $messages += @{
      role = 'user'
      content = 'Do other Azure AI services support this too?'
    }
    
    # Header for authentication
    $headers = [ordered]@{
       'api-key' = $openai.api_key
    }
    
    # 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. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة أمان خدمات Azure الذكاء الاصطناعي.

  3. تشغيل البرنامج النصي باستخدام PowerShell:

    ./quickstart.ps1
    

المخرجات

# the output of the script will be a .NET object containing the response
id      : chatcmpl-7sdJJRC6fDNGnfHMdfHXvPkYFbaVc
object  : chat.completion
created : 1693255177
model   : gpt-35-turbo
choices : {@{index=0; finish_reason=stop; message=}}
usage   : @{completion_tokens=67; prompt_tokens=55; total_tokens=122}

# convert the output to JSON
./quickstart.ps1 | ConvertTo-Json -Depth 3

# or to view the text returned, select the specific object property
$reponse = ./quickstart.ps1
$response.choices.message.content

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

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

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

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

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

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