التشغيل السريع: ابدأ باستخدام 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.
Playground
ابدأ في استكشاف قدرات OpenAI باستخدام نهج بدون تعليمات برمجية من خلال ملعب دردشة Azure OpenAI Studio. من هذه الصفحة، يمكنك تكرار القدرات وتجربتها بسرعة.
إعداد المساعد
يمكنك استخدام القائمة المنسدلة إعداد المساعد لتحديد بعض أمثلة رسائل النظام المحملة مسبقا للبدء.
تعطي رسائل النظام إرشادات النموذج حول كيفية تصرفه وأي سياق يجب أن يشير إليه عند إنشاء استجابة. يمكنك وصف شخصية المساعد، وإخباره بما يجب وما لا ينبغي الإجابة عليه، وإخباره بكيفية تنسيق الاستجابات.
إضافة أمثلة قليلة اللقطات تسمح لك بتوفير أمثلة المحادثة التي يستخدمها النموذج للتعلم في السياق.
في أي وقت أثناء استخدام ملعب الدردشة، يمكنك تحديد عرض التعليمات البرمجية لمشاهدة عينات التعليمات البرمجية Python و curl وjson التي تم ملؤها مسبقا استنادا إلى جلسة الدردشة الحالية وتحديدات الإعدادات. يمكنك بعد ذلك أخذ هذه التعليمة البرمجية وكتابة تطبيق لإكمال نفس المهمة التي تقوم بها حاليا مع الملعب.
جلسة المحادثة
يؤدي تحديد الزر Send إلى إرسال النص الذي تم إدخاله إلى واجهة برمجة تطبيقات الإكمال ويتم إرجاع النتائج مرة أخرى إلى مربع النص.
حدد الزر مسح الدردشة لحذف محفوظات المحادثات الحالية.
إعدادات
الاسم | الوصف |
---|---|
عمليات النشر | اسم النشر المقترن بنموذج معين. |
درجة الحرارة | يتحكم في العشوائية. يعني خفض درجة الحرارة أن النموذج ينتج ردودًا أكثر تكرارًا وحسمًا. يؤدي ارتفاع درجة الحرارة إلى المزيد من الردود غير المتوقعة أو الإبداعية. حاول ضبط درجة الحرارة أو Top P ولكن ليس كليهما. |
الحد الأقصى للطول (الرموز المميزة) | تعيين حد لعدد الرموز المميزة لكل استجابة نموذج. تدعم واجهة برمجة التطبيقات 4096 رمزا مميزا كحد أقصى مشترك بين المطالبة (بما في ذلك رسالة النظام والأمثلة ومحفوظات الرسائل واستعلام المستخدم) واستجابة النموذج. يتكون الرمز المميّزالواحد من أربعة أحرف تقريبًا للنص الإنجليزي النموذجي. |
الاحتمالات العليا | على غرار درجة الحرارة، يتحكم هذا في العشوائية ولكنه يستخدم أسلوبا مختلفا. يؤدي خفض Top P إلى تضييق تحديد الرمز المميّز للنموذج إلى رموز ممّيزة مرجحة. تتيح زيادة Top P للنموذج الاختيار من بين الرموز المميّزة مع احتمالية عالية ومنخفضة. حاول ضبط درجة الحرارة أو Top P ولكن ليس كليهما. |
محادثات متعددة الأدوار | حدد عدد الرسائل السابقة لتضمينها في كل طلب واجهة برمجة تطبيقات جديد. يساعد هذا في إعطاء سياق النموذج للاستعلامات الجديدة للمستخدم. يؤدي تعيين هذا الرقم إلى 10 إلى خمسة استعلامات مستخدم وخمسة استجابات للنظام. |
إيقاف التسلسلات | تسلسل الإيقاف يجعل النموذج ينهي استجابته عند النقطة المطلوبة. تنتهي استجابة النموذج قبل التسلسل المحدد، لذلك لن تحتوي على نص تسلسل الإيقاف. بالنسبة إلى GPT-35-Turbo، يضمن استخدام <|im_end|> أن استجابة النموذج لا تنشئ استعلام مستخدم متابعة. يمكنك تضمين ما يصل إلى أربعة تسلسلات توقف. |
إظهار اللوحات
بشكل افتراضي، هناك ثلاث لوحات: إعداد المساعد وجلسة الدردشة والإعدادات. يتيح لك إظهار اللوحات إضافة اللوحات وإزالتها وإعادة ترتيبها. إذا قمت بإغلاق لوحة وتحتاج إلى استعادتها مرة أخرى، فاستخدم إظهار اللوحات لاستعادة اللوحة المفقودة.
بدء جلسة دردشة
من القائمة المنسدلة إعداد المساعد، حدد عامل دعم عملاء Xbox
ستتم مطالبتك بالسؤال عما إذا كنت تريد تحديث رسالة النظام، حدد متابعة.
في جزء جلسة الدردشة، أدخل السؤال التالي: "أنا مهتم بشراء Xbox جديد"، وحدد إرسال.
ستتلقى ردا مشابها ل:
أدخل سؤال متابعة مثل: "ما هي النماذج التي تدعم 4K؟"
الآن بعد أن أصبحت لديك محادثة أساسية، حدد عرض التعليمات البرمجية من ضمن إعداد المساعد وستتم إعادة عرض التعليمات البرمجية خلف المحادثة بأكملها حتى الآن:
#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 .
يمنحك هذا الخيار إما النشر إلى تطبيق ويب مستقل، أو copilot في Copilot Studio (معاينة) إذا كنت تستخدم بياناتك الخاصة على النموذج.
على سبيل المثال، إذا اخترت نشر تطبيق ويب:
في المرة الأولى التي تقوم فيها بنشر تطبيق ويب، يجب عليك تحديد إنشاء تطبيق ويب جديد. اختر اسما للتطبيق، والذي سيصبح جزءا من عنوان URL للتطبيق. على سبيل المثال، https://<appname>.azurewebsites.net
حدد الاشتراك ومجموعة الموارد والموقع وخطة التسعير للتطبيق المنشور. لتحديث تطبيق موجود، حدد نشر إلى تطبيق ويب موجود واختر اسم التطبيق السابق من القائمة المنسدلة.
إذا اخترت نشر تطبيق ويب، فشاهد الاعتبارات المهمة لاستخدامه.
تنظيف الموارد
بمجرد الانتهاء من اختبار ملعب الدردشة، إذا كنت تريد تنظيف مورد Azure OpenAI وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.
الخطوات التالية
- تعرف على المزيد حول كيفية العمل مع النموذج الجديد
gpt-35-turbo
مع الدليل الإرشادي GPT-35-Turbo وGPT-4. - لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
حزمة التعليمات| البرمجية | المصدر (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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
حزمة التعليمات البرمجية | المصدر (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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
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
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من Java Development Kit (JDK)
- أداة إنشاء 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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
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")
}
إنشاء نموذج تطبيق
أنشئ ملف Java.
من دليل العمل الخاص بك، قم بتشغيل الأمر التالي لإنشاء مجلد مصدر المشروع:
mkdir -p src/main/java
انتقل إلى المجلد الجديد وأنشئ ملفا يسمى OpenAIQuickstart.java.
افتح 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 الذكاء الاصطناعي.
انتقل مرة أخرى إلى المجلد الجذر للمشروع، وأنشئ التطبيق باستخدام:
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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
نموذج البيانات الاصطناعية للتعليمات البرمجية | المصدر (Maven) |
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من Java Development Kit (JDK)
- أداة Spring Boot CLI
- مورد خدمة Azure OpenAI مع
gpt-35-turbo
نشر النموذج. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد. يفترض هذا المثال أن اسم النشر الخاص بك يطابق اسم النموذج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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
إشعار
يقوم 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
تحرير ملف 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>
من المجلد 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 الذكاء الاصطناعي.
انتقل مرة أخرى إلى المجلد الجذر للمشروع، وقم بتشغيل التطبيق باستخدام الأمر التالي:
./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 - إنشاء اشتراك مجاناً
- إصدارات "LTS" من "Node.js".
- مورد خدمة 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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- نظرة عامة على Azure OpenAI
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
حزمة التعليمات البرمجية | المصدر للمكتبة (PyPi) | استرداد قالب دردشة المؤسسة للجيل المعزز (RAG) |
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- Python 3.8 أو إصدار أحدث.
- مكتبات Python التالية: os.
- مورد خدمة Azure OpenAI مع النماذج
gpt-35-turbo
أوgpt-4
التي تم نشرها. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.
الإعداد
تثبيت مكتبة عميل 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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
إنشاء تطبيق Python جديد
إنشاء ملف Python جديد باسم quickstart.py. ثم افتحه في المحرر أو IDE المُفضل لديك.
استبدل التعليمات البرمجية التالية بمحتويات 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 الذكاء الاصطناعي.
قم بتشغيل التطبيق باستخدام الأمر على
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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- تعرف على المزيد حول كيفية العمل مع GPT-35-Turbo ونماذج GPT-4 باستخدام دليلنا الإرشادي.
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
مواصفات واجهة برمجة تطبيقات 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
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- تعرف على المزيد حول كيفية العمل مع GPT-35-Turbo ونماذج GPT-4 باستخدام دليلنا الإرشادي.
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- يمكنك استخدام أحدث إصدار، PowerShell 7، أو Windows PowerShell 5.1.
- مورد خدمة Azure OpenAI مع نموذج مُوزع. لمزيد من المعلومات حول نشر النموذج، راجع دليل توزيع الموارد.
- مورد خدمة 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. يمكن العثور على نقطة النهاية والمفاتيح في قسم إدارة الموارد. انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1
أو KEY2
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
متغيرات البيئة
$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'
إنشاء برنامج نصي PowerShell جديد
إنشاء ملف PowerShell جديد يسمى quickstart.ps1. ثم افتحه في المحرر أو IDE المُفضل لديك.
استبدل محتويات 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 الذكاء الاصطناعي.
تشغيل البرنامج النصي باستخدام 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 وإزالته، يمكنك حذف المورد. قبل حذف المورد، يجب أولا حذف أي نماذج تم نشرها.
الخطوات التالية
- تعرف على المزيد حول كيفية العمل مع GPT-35-Turbo ونماذج GPT-4 باستخدام دليلنا الإرشادي.
- لمزيد من الأمثلة، راجع مستودع Azure OpenAI Samples GitHub
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ