مشاركة عبر


جلسات مترجم التعليمات البرمجية بلا خادم في Azure Container Apps

توفر جلسات Azure Container Apps الديناميكية وصولا سريعا وقابلا للتوسع إلى مفسر الكود. يتم عزل كل جلسة مترجم تعليمة برمجية بشكل كامل بواسطة حد Hyper-V وتم تصميمها لتشغيل التعليمات البرمجية غير الموثوق بها.

يستخدم لجلسات مترجم التعليمات البرمجية

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

  • التعليمات البرمجية التي تم إنشاؤها بواسطة نموذج لغة كبير (LLM).
  • التعليمات البرمجية المرسلة من قبل مستخدم في تطبيق ويب أو SaaS.

بالنسبة لأطر عمل نماذج اللغة الكبيرة الشهيرة مثل LangChain وLlamaIndex وSemantic Kernel، يمكنك استخدام الأدوات والإضافات لدمج تطبيقات الذكاء الاصطناعي مع جلسات مفسر الكود.

يمكن لتطبيقاتك أيضا التكامل مع جلسة مفسر الشيفرة باستخدام واجهة برمجة تطبيقات REST. تمكنك واجهة برمجة التطبيقات على:

  • شغل الكود في جلسة واسترجع النتائج.

  • تحميل الملفات وتنزيلها من وإلى جلسة العمل.

    يمكنك رفع وتنزيل ملفات كود تنفيذية أو ملفات بيانات يمكن للكود معالجتها.

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

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

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

لاستخدام جلسات مترجم التعليمات البرمجية، تحتاج إلى مورد Azure يسمى تجمع جلسة العمل الذي يحدد تكوين جلسات مترجم التعليمات البرمجية.

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

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

لمزيد من المعلومات حول كيفية إنشاء تجمع جلسة عمل وتكوينه، راجع استخدام تجمعات جلسات العمل.

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

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

معرفات الجلسة

هام

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

قد يؤدي الفشل في تأمين الوصول إلى الجلسات إلى إساءة استخدام البيانات المخزنة في جلسات عمل المستخدمين أو الوصول غير المصرح به إليها. لمزيد من المعلومات، راجع معرفات الجلسة.

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

إذا كانت هناك جلسة عمل قيد التشغيل مع المعرف، تتم إعادة استخدام الجلسة. إذا لم تكن هناك جلسة عمل قيد التشغيل مع المعرف، يتم إنشاء جلسة عمل جديدة تلقائيا.

المصادقة

يتم التعامل مع المصادقة عبر رموز Microsoft Entra. يتم إنشاء رموز Microsoft Entra المميزة الصالحة بواسطة هوية تنتمي إلى أدوار منفذ جلسة عمل Azure ContainerApps والمساهم في تجمع الجلسة.

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

إذا كنت تستخدم نقاط نهاية API لإدارة التجمع مباشرة، يجب إنشاء رمز مميز وتضمينه في Authorization عنوان طلبات HTTP الخاصة بك. بالإضافة إلى تعيينات الأدوار المذكورة سابقا، يجب أن يحتوي الرمز على مطالبة الجمهور (aud) التي لها القيمة https://dynamicsessions.io.

لمزيد من المعلومات، راجع المصادقة والتخويل.

استخدام الملفات

يمكنك تحميل الملفات وتنزيلها، وسرد جميع الملفات في جلسة مترجم التعليمات البرمجية.

الشخصيات المدعومة

يجب أن تستخدم أسماء الملفات والمسارات فقط الأحرف المدعومة التالية:

  • الحروف الكبيرة والصغيرة: A-Z, a-z.
  • الأرقام: 0-9.
  • الأحرف الخاصة: -, _, , ., @, $&, =, ;,#%^(. ) (المسارات لا يمكن احتواؤها ..)
  • رموز يونيكود: تشمل حروف صينية، يابانية، وأخرى دولية.

تحميل ملف

لتحميل ملف إلى جلسة عمل، أرسل POST طلبا إلى files نقطة النهاية في طلب بيانات نموذج متعدد الأحزاب. تضمين بيانات الملف في نص الطلب. يجب أن يتضمن الملف اسم ملف.

يتم تخزين الملفات المرفوعة في نظام ملفات الجلسة في /mnt/data المجلد.

يوضح المثال التالي كيفية تحميل ملف إلى جلسة عمل.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Authorization: Bearer <TOKEN>

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="<FILE_NAME_AND_EXTENSION>"
Content-Type: application/octet-stream

(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--

تنزيل ملف

لتنزيل ملف من دليل جلسة /mnt/data عمل، أرسل GET طلبا إلى files/{filename}/content نقطة النهاية. تتضمن الاستجابة بيانات الملف.

يوضح المثال التالي كيفية تنسيق GET طلب لتنزيل ملف.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>/content?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

الحصول على بيانات تعريف الملف

للحصول على بيانات وصفية لملف في دليل الجلسة، أرسل /mnt/data طلبا GET إلى نقطة files/{filename} النهاية. تتضمن الاستجابة خصائص الملف مثل حجم الملف وآخر مدة تعديل.

يوضح المثال التالي كيفية تنسيق GET طلب لاسترجاع بيانات تعريف الملفات.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

قائمة الملفات

لسرد الملفات في دليل جلسة /mnt/data العمل، أرسل GET طلبا إلى files نقطة النهاية.

يوضح المثال التالي كيفية إدراج الملفات في مجلد الجلسة.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

تحتوي الاستجابة على قائمة بالملفات في الجلسة.

تظهر القائمة التالية عينة من نوع الرد الذي يمكنك توقعه عند طلب محتوى الجلسة.

{
    "$id": "1",
    "value": [
        {
            "$id": "2",
            "properties": {
                "$id": "3",
                "filename": "test1.txt",
                "size": 16,
                "lastModifiedTime": "2024-05-02T07:21:07.9922617Z"
            }
        },
        {
            "$id": "4",
            "properties": {
                "$id": "5",
                "filename": "test2.txt",
                "size": 17,
                "lastModifiedTime": "2024-05-02T07:21:08.8802793Z"
            }
        }
    ]
}

الأمان

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

تكاملات إطار عمل LLM

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

اطار الحزمة برنامج تعليمي
LangChain بايثون: langchain-azure-dynamic-sessions تعليمي
LlamaIndex بايثون: llama-index-tools-azure-code-interpreter تعليمي
نواة دلالية Python: semantic-kernel (الإصدار 0.9.8-b1 أو أحدث) تعليمي

نقاط نهاية واجهة برمجة تطبيقات الإدارة

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

تشغيل الكود في جلسة

لتشغيل الكود في جلسة، أرسل طلبا POST إلى نقطة executions النهاية مع الكود لتشغيله في جسم الطلب. كل تنفيذ للشيفرة محدود بحد أقصى وقت تشغيل يبلغ 220 ثانية.

يطبع Hello, world! المثال التالي في Python.

قبل إرسال الطلب، استبدل العناصر النائبة بين الأقواس <> بالقيم المناسبة لتجمع جلسة العمل ومعرف الجلسة.

POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/executions?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Content-Type: application/json
Authorization: Bearer <TOKEN>

{
    "properties": {
        "codeInputType": "inline",
        "executionType": "synchronous",
        "code": "print('Hello, world!')"
    }
}

لإعادة استخدام جلسة عمل، حدد نفس معرف جلسة العمل في الطلبات اللاحقة.

تحميل ملف إلى جلسة عمل

لتحميل ملف إلى جلسة عمل، أرسل POST طلبا إلى files نقطة النهاية في طلب بيانات نموذج متعدد الأحزاب. تضمين بيانات الملف في نص الطلب. يجب أن يتضمن الملف اسم ملف.

يتم تخزين الملفات المرفوعة في نظام ملفات الجلسة في /mnt/data المجلد.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Authorization: Bearer <TOKEN>

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="<FILE_NAME_AND_EXTENSION>"
Content-Type: application/octet-stream

(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--

إشعار

حد رفع الملفات هو 128 ميجابايت. إذا تم تجاوز هذا الحد، قد تظهر لك رسالة خطأ HTTP 413.

تنزيل ملف من جلسة عمل

لتنزيل ملف من دليل جلسة /mnt/data عمل، أرسل GET طلبا إلى files/{filename}/content نقطة النهاية. تتضمن الاستجابة بيانات الملف.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>/content?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

الحصول على بيانات تعريف الملف

للحصول على بيانات وصفية لملف في دليل الجلسة، أرسل /mnt/data طلبا GET إلى نقطة files/{filename} النهاية. تتضمن الاستجابة خصائص الملف مثل حجم الملف وآخر مدة تعديل.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files/<FILE_NAME_AND_EXTENSION>?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

سرد الملفات في جلسة عمل

لسرد الملفات في دليل جلسة /mnt/data العمل، أرسل GET طلبا إلى files نقطة النهاية.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

GET https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/files?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Authorization: Bearer <TOKEN>

تحتوي الاستجابة على قائمة بالملفات في جلسة العمل.

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

{
    "$id": "1",
    "value": [
        {
            "$id": "2",
            "properties": {
                "$id": "3",
                "filename": "test1.txt",
                "size": 16,
                "lastModifiedTime": "2024-05-02T07:21:07.9922617Z"
            }
        },
        {
            "$id": "4",
            "properties": {
                "$id": "5",
                "filename": "test2.txt",
                "size": 17,
                "lastModifiedTime": "2024-05-02T07:21:08.8802793Z"
            }
        }
    ]
}

الحزم المثبتة مسبقا

تشمل جلسات مفسر الشيفرة في بايثون حزم بايثون شهيرة مثل NumPy وpandas وscikit-learn.

لإخراج قائمة الحزم المثبتة مسبقا، قم باستدعاء executions نقطة النهاية بالتعليمات البرمجية التالية.

قبل إرسال الطلب، استبدل القيم المؤقتة بين الأقواس <> بقيم خاصة بطلبك.

POST https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/executions?api-version=2025-10-02-preview&identifier=<SESSION_ID>
Content-Type: application/json
Authorization: Bearer <TOKEN>

{
    "properties": {
        "codeInputType": "inline",
        "executionType": "synchronous",
        "code": "import pkg_resources\n[(d.project_name, d.version) for d in pkg_resources.working_set]"
    }
}

تسجيل الدخول

المخرجات المتاحة هي النتائج التي تعيدها من تنفيذ الكود، بما في ذلك stdout و stderr.

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

إشعار

جلسات مفسر الكود لا ترسل سجلات AppEnvSession إلى Log Analytics.

Metrics

يتم إرجاع مقاييس استخدام وتنفيذ مفسر الكود كرؤوس استجابة HTTP لواجهة برمجة تطبيقات تنفيذ الكود. هذه المقاييس ليست مكتوبة إلى Log Analytics.

عرض القياسات

  1. استدعي واجهة تنفيذ الكود API (/executions).
  2. افحص رؤوس استجابة HTTP بحثا عن مقاييس الاستخدام والتنفيذ.

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

الفوترة

تتم فوترة جلسات مترجم التعليمات البرمجية استنادا إلى مدة كل جلسة. لمزيد من المعلومات، انظرالفواتير.

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