مشاركة عبر


الدرس التعليمي: ابدأ بنموذج التفكير DeepSeek-R1 في نماذج مايكروسوفت فاوندري

في هذا الدرس، تتعلم كيفية نشر واستخدام نموذج استدلال DeepSeek في Microsoft Foundry. يستخدم هذا البرنامج التعليمي DeepSeek-R1 للتوضيح. ومع ذلك ، ينطبق المحتوى أيضا على نموذج التفكير الأحدث DeepSeek-R1-0528 .

ما الذي تحققه:

في هذا الدرس، تقوم بنشر نموذج الاستدلالات DeepSeek-R1، وترسل طلبات الاستدلالات بشكل برمجي باستخدام الكود، وتحلل مخرجات الاستدلال لفهم كيف يصل النموذج إلى إجاباته.

الخطوات التي تقوم بها في هذا البرنامج التعليمي هي:

  • إنشاء وتكوين موارد Azure لاستخدامها DeepSeek-R1 في نماذج Foundry.
  • تكوين نشر النموذج.
  • استخدم DeepSeek-R1 مع واجهات برمجة التطبيقات من الجيل القادم من الجيل الأول Azure OpenAI لاستهلاك النموذج في الكود.

المتطلبات المسبقه

لإكمال هذه المقالة، تحتاج إلى الآتي:

  • اشتراك Azure مع طريقة دفع صالحة. إذا لم يكن لديك اشتراك Azure، فبادر بإنشاء حساب Azure مدفوع للبدء. إذا كنت تستخدم GitHub Models، يمكنك الترقية من GitHub Models إلى Microsoft Foundry Models وإنشاء اشتراك في Azure أثناء العملية.

  • الوصول إلى Microsoft Foundry مع الأذونات المناسبة لإنشاء وإدارة الموارد. عادة ما يتطلب دور المساهم أو المالك في مجموعة الموارد لإنشاء الموارد ونشر النماذج.

  • دور مستخدم الخدمات المعرفية (أو أعلى) المعين لحساب Azure الخاص بك في مورد Foundry. هذا الدور مطلوب لإجراء استدعاءات الاستنتاج باستخدام معرف Microsoft Entra ID. قم بتعيينها في بوابة Azure تحت Control (IAM) على مورد Foundry.

  • قم بتثبيت Azure OpenAI SDK للغة البرمجة الخاصة بك:

    • بايثون: pip install openai azure-identity
    • .NET: dotnet add package OpenAI و dotnet add package Azure.Identity
    • JavaScript: npm install openai @azure/identity
    • جافا: أضف و com.openai:openai-javacom.azure:azure-identity الحزم

DeepSeek-R1 نموذج استدلالي يولد تفسيرات إلى جانب الإجابات. يدعم إكمال الدردشة النصية لكنه لا يدعم استدعاء الأدوات أو تنسيقات الإخراج المنظمة. انظر نماذج الاستدلال لمزيد من التفاصيل.

إنشاء الموارد

لإنشاء مشروع Foundry يدعم النشر ل DeepSeek-R1، اتبع هذه الخطوات. يمكنك أيضا إنشاء الموارد باستخدام Azure CLI أو البنية التحتية ككود، باستخدام Bicep.

  1. تسجيل الدخول إلى Microsoft Foundry. تأكد من تفعيل مفتاح New Foundry . تشير هذه الخطوات إلى Foundry (جديد).
  2. يظهر المشروع الذي تعمل عليه في الزاوية العلوية اليمنى.
  3. لإنشاء مشروع جديد، حدد اسم المشروع، ثم إنشاء مشروع جديد.
  4. أعط اسما لمشروعك وحدد إنشاء مشروع.

توزيع النموذج

  1. أضف نموذجا إلى مشروعك. حدد إنشاء في منتصف الصفحة، ثم نموذج.
  2. حدد نشر النموذج الأساسي لفتح كتالوج النموذج.
  3. ابحث عن لوحة نموذج DeepSeek-R1 وحددها لفتح بطاقة النموذج الخاصة به وحدد نشر. يمكنك اختيار النشر السريع لاستخدام الإعدادات الافتراضية، أو اختيار تخصيص النشر لرؤية وتغيير إعدادات النشر.

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

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

استخدام النموذج في التعليمات البرمجية

استخدم نقطة النهاية وبيانات الاعتماد الخاصة بنماذج Foundry للاتصال بالنموذج.

  1. حدد جزء التفاصيل من الجزء العلوي من الملاعب للاطلاع على تفاصيل التوزيع. هنا ، يمكنك العثور على URI ومفتاح واجهة برمجة التطبيقات للنشر.
  2. احصل على اسم المورد الخاص بك من عنوان URI الخاص بالتوزيع لاستخدامه في استنتاج النموذج عبر التعليمات البرمجية.

استخدم واجهات برمجة تطبيقات Azure OpenAI من الجيل التالي v1 لاستهلاك النموذج في التعليمات البرمجية الخاصة بك. تستخدم أمثلة التعليمات البرمجية هذه نهج مصادقة آمن بدون مفتاح، معرف Microsoft Entra، عبر مكتبة Azure Identity.

توضح أمثلة الكود التالية كيفية القيام بذلك:

  1. قم بالتحقق باستخدام Microsoft Entra ID باستخدام DefaultAzureCredential، الذي يحاول تلقائيا عدة طرق مصادقة (متغيرات البيئة، الهوية المدارة، Azure CLI، وغيرها). الترتيب الدقيق يعتمد على نسخة Azure Identity SDK التي تستخدمها.

    نصيحة

    للتطوير المحلي، تأكد من أنك متحقق من مصادقتك باستخدام Azure CLI عن طريق تشغيل az login. لنشر الإنتاج في Azure، قم بتكوين الهوية المدارة لتطبيقك.

  2. أنشئ عميل إكمال الدردشة متصل بنشر النموذج الخاص بك

  3. أرسل رسالة أساسية إلى نموذج DeepSeek-R1

  4. استلام وعرض الرد

الإنتاج المتوقع: استجابة JSON تحتوي على إجابة النموذج، وعملية الاستدلال، وإحصائيات <think> استخدام الرموز (رموز الطلب، رموز الإكمال، الرموز الإجمالية)، ومعلومات النموذج.

قم بتثبيت الحزم openai واستخدام azure-identity مدير الحزم الخاص بك، مثل pip:

pip install --upgrade openai azure-identity

يوضح المثال التالي كيفية إنشاء عميل لاستهلاك إكمالات الدردشة ثم إنشاء الاستجابة وطباعتها:


from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)
response = client.chat.completions.create(
  model="DeepSeek-R1", # Replace with your model deployment name.
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "How many languages are in the world?"}
  ]
)

#print(response.choices[0].message)
print(response.model_dump_json(indent=2))

نصيحة

بعد تشغيل الكود، يجب أن ترى استجابة JSON تتضمن choices[0].message.content إجابة النموذج. إذا كان النموذج يولد منطقا، يحتوي الجواب على محتوى ملفوف في <think>...</think> علامات متبوعة بالإجابة النهائية.

مرجع واجهة برمجة التطبيقات (API):

قد يولد المنطق استجابات أطول ويستهلك عددا أكبر من الرموز المميزة. يدعم DeepSeek-R1 ما يصل إلى 5,000 طلب في الدقيقة و5,000,000 رمز في الدقيقة. اطلع على حدود الأسعار التي تنطبق على DeepSeek-R1 الطرازات. ضع في اعتبارك وجود استراتيجية إعادة محاولة للتعامل مع حدود المعدل. يمكنك أيضا طلب زيادة إلى الحدود الافتراضية.

حول نماذج التفكير

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

تنتج نماذج المنطق نوعين من المحتوى كمخرجات:

  • اكتمال المنطق
  • إكمال الإخراج

يتم احتساب كل من عمليات الإكمال هذه في المحتوى الذي تم إنشاؤه من النموذج. لذلك، فإنها تساهم في حدود الرمز المميز والتكاليف المرتبطة بالنموذج. قد تستجيب بعض النماذج، مثل DeepSeek-R1، بمحتوى المنطق. بينما يقوم آخرون، مثل o1، بإخراج الإكمالات فقط.

محتوى المنطق

بعض نماذج التفكير ، مثل DeepSeek-R1 ، تولد عمليات إكمال وتتضمن المنطق وراءها. يتم تضمين المنطق المرتبط بالإكمال في محتوى الاستجابة داخل العلامات <think> و </think>. يمكن للنموذج اختيار السيناريوهات التي سيولد فيها محتوى منطقي. يوضح المثال التالي كيفية إنشاء محتوى المنطق، باستخدام Python:

import re

match = re.match(r"<think>(.*?)</think>(.*)", response.choices[0].message.content, re.DOTALL)

print("Response:")
if match:
    print("\tThinking:", match.group(1))
    print("\tAnswer:", match.group(2))
else:
    print("\tAnswer:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries or regions have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country/region. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.

Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage: 
  Prompt tokens: 11
  Total tokens: 897
  Completion tokens: 886

مرجع واجهة برمجة التطبيقات (API):

نماذج التفكير السريع

عند إنشاء مطالبات للنماذج المنطقية، خذ ما يلي في الاعتبار:

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

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

المعلمات

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

المعايير المدعومة:

  • max_tokens - الحد الأقصى لعدد الرموز التي يجب توليدها في الاستجابة
  • stop - تسلسلات تتوقف فيها واجهة برمجة التطبيقات عن توليد الرموز
  • stream - تمكين استجابات البث
  • n - عدد الإكمال الذي يجب توليده

المعايير غير المدعومة (نماذج الاستدلال لا تدعم هذه):

  • temperature - ثابت لتحسين جودة الاستدلال
  • top_p - غير قابل للتكوين لنماذج الاستدلال
  • presence_penalty - غير متوفر
  • repetition_penalty - غير متوفر لنماذج الاستدلال

مثال باستخدام max_tokens:

response = client.chat.completions.create(
    model="DeepSeek-R1",
    messages=[
        {"role": "user", "content": "Explain quantum computing"}
    ],
    max_tokens=1000  # Limit response length
)

للاطلاع على القائمة الكاملة للمعلمات المدعومة، راجع مرجع واجهة برمجة تطبيقات إكمال الدردشة.

استخدام النموذج في الملعب

استخدم النموذج في ساحة اللعب للحصول على فكرة عن قدرات النموذج.

بمجرد اكتمال النشر، تهبط في ملعب النموذج، حيث يمكنك البدء في التفاعل مع النشر. على سبيل المثال، يمكنك إدخال المحفزات، مثل "كم عدد اللغات في العالم؟" في ساحة اللعب.

استكشاف الأخطاء وإصلاحها

إذا واجهت مشاكل أثناء اتباع هذا الدرس، استخدم الإرشادات التالية لحل المشاكل الشائعة.

أخطاء المصادقة (401/403)

  • تأكد من تسجيل الدخول إلى Azure CLI. بالنسبة للتطوير المحلي، قم بتشغيل az login الكود قبل تنفيذ الكود. DefaultAzureCredential يستخدم بيانات اعتماد Azure CLI كخيار احتياطي عندما لا تتوفر بيانات اعتماد أخرى.
  • تحقق من توزيع الأدوار. يحتاج حساب Azure الخاص بك إلى دور مستخدم الخدمات المعرفية (أو أعلى) في مورد Foundry لإجراء استدعاءات استنتاجية باستخدام معرف Microsoft Entra. إذا لم تكن قد كلفت هذا الدور بعد، راجع قسم المتطلبات المسبقة.
  • تحقق من تنسيق نقطة النهاية. يجب أن يتبع رابط نقطة النهاية التنسيق https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/. تحقق من أن اسم المورد يطابق مورد Foundry الخاص بك.

مشكلات التوزيع

  • اسم النشر مقابل اسم الطراز. المعامل model في استدعاءات API يشير إلى اسم النشر الخاص بك، وليس اسم النموذج. إذا خصصت اسم النشر أثناء الإنشاء، استخدم ذلك الاسم بدلا من DeepSeek-R1.
  • النشر غير جاهز. إذا تلقيت خطأ 404، تحقق من أن حالة النشر تظهر نجاحا في بوابة Foundry قبل إجراء استدعاءات API.

تحديد المعدل (429 خطأ)

  • تنفيذ منطق إعادة المحاولة. نماذج الاستدلال تولد ردودا أطول تستهلك المزيد من الرموز. استخدم التراجع الأسي للتعامل مع أخطاء 429 (طلبات كثيرة جدا).
  • راقب استخدام الرموز. محتوى DeepSeek-R1 الاستدلال (ضمن <think> العلامات) يحتسب ضمن حد الرموز الخاصة بك. انظر الحصص والحدود لحدود الأسعار الحالية.
  • اطلب زيادة الحصة. إذا كنت تلتزم بحدود الأسعار باستمرار، اطلب زيادات إلى الحدود الافتراضية.

مشاكل تثبيت الحزم

  • بايثون. قم بتثبيت الحزمتين المطلوبتين: pip install openai azure-identity. azure-identity الحزمة مطلوبة ل DefaultAzureCredential.
  • جافا سكريبت. قم بتثبيت الحزمتين المطلوبتين: npm install openai @azure/identity.
  • NET تثبيت حزمة Azure Identity: dotnet add package Azure.Identity.

ما تعلمته

في هذا الدرس، أنجزت ما يلي:

  • أنشأت موارد Foundry لاستضافة نماذج الذكاء الاصطناعي
  • تم نشر نموذج الاستدلال DeepSeek-R1
  • أجريت استدعاءات واجهة برمجة التطبيقات المصادقة باستخدام Microsoft Entra ID
  • أرسلت طلبات استنتاج واستلمت مخرجات الاستدلال
  • تحليل محتوى التفكير من ردود النماذج لفهم عملية تفكير النموذج