البرنامج التعليمي: استخدام جلسات مترجم التعليمات البرمجية في AutoGen مع Azure Container Apps
AutoGen هو إطار عمل لتطوير تطبيقات نموذج اللغة الكبيرة (LLM) باستخدام عوامل متعددة تحدث مع بعضها البعض لحل المهام. يمكن للوكلاء الذين تم إنشاؤهم باستخدام AutoGen العمل في أوضاع مختلفة تستخدم مجموعات من LLMs والمدخلات البشرية والأدوات. أحد الأدوات المهمة لعوامل AutoGen هو منفذو التعليمات البرمجية. وهي تمكن الوكلاء من تنفيذ مهام معقدة عن طريق كتابة التعليمات البرمجية وتنفيذها. من خلال دمج جلسات عمل Azure Container Apps الديناميكية مع AutoGen، يمكنك منح العامل مترجم تعليمة برمجية لاستخدامه لإجراء حسابات مفيدة واتخاذ إجراءات.
في هذا البرنامج التعليمي، ستتعلم كيفية تشغيل عامل الذكاء الاصطناعي تم تأليفه في AutoGen في واجهة برمجة تطبيقات الويب. تقبل واجهة برمجة التطبيقات إدخال المستخدم وتعيد استجابة تم إنشاؤها بواسطة عامل الذكاء الاصطناعي. يستخدم العامل مترجم التعليمات البرمجية في جلسات عمل ديناميكية لإجراء العمليات الحسابية.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط.
- إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا.
- قم بتثبيت Azure CLI.
- Git.
- Python 3.10 أو أحدث.
إنشاء موارد Azure
يستخدم نموذج التطبيق في هذا التشغيل السريع LLM من Azure OpenAI. كما يستخدم جلسات عمل Azure Container Apps لتشغيل التعليمات البرمجية التي تم إنشاؤها بواسطة LLM.
تحديث Azure CLI إلى أحدث إصدار.
az upgrade
قم بإزالة ملحق Azure Container Apps إذا كان مثبتا بالفعل وقم بتثبيت إصدار معاينة ملحق Azure Container Apps الذي يحتوي على أوامر للجلسات:
az extension remove --name containerapp az extension add \ --name containerapp \ --allow-preview true -y
تسجيل الدخول إلى Azure:
az login
تعيين المتغيرات المستخدمة في هذا التشغيل السريع:
RESOURCE_GROUP_NAME=aca-sessions-tutorial AZURE_OPENAI_LOCATION=swedencentral AZURE_OPENAI_NAME=<UNIQUE_OPEN_AI_NAME> SESSION_POOL_LOCATION=eastasia SESSION_POOL_NAME=code-interpreter-pool
استبدل
<UNIQUE_OPEN_AI_NAME>
باسم فريد لإنشاء حساب Azure OpenAI الخاص بك.أنشئ مجموعة موارد:
az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATION
إنشاء حساب Azure OpenAI:
az cognitiveservices account create \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $AZURE_OPENAI_LOCATION \ --kind OpenAI \ --sku s0 \ --custom-domain $AZURE_OPENAI_NAME
إنشاء نشر نموذج GPT 3.5 Turbo المسمى
gpt-35-turbo
في حساب Azure OpenAI:az cognitiveservices account deployment create \ --resource-group $RESOURCE_GROUP_NAME \ --name $AZURE_OPENAI_NAME \ --deployment-name gpt-35-turbo \ --model-name gpt-35-turbo \ --model-version "1106" \ --model-format OpenAI \ --sku-capacity "100" \ --sku-name "Standard"
إنشاء تجمع جلسة مترجم التعليمات البرمجية:
az containerapp sessionpool create \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --max-sessions 100 \ --container-type PythonLTS \ --cooldown-period 300
تشغيل نموذج التطبيق محليًا
قبل نشر التطبيق إلى Azure Container Apps، يمكنك تشغيله محليا لاختباره.
استنساخ التطبيق
استنساخ مستودع نماذج جلسات عمل Azure Container Apps.
git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.git
قم بالتغيير إلى الدليل الذي يحتوي على نموذج التطبيق:
cd container-apps-dynamic-sessions-samples/autogen-python-webapi
تكوين التطبيق
إنشاء بيئة Python الظاهرية وتنشيطها:
python3.11 -m venv .venv source .venv/bin/activate
قم بتغيير إصدار Python في الأمر إذا كنت تستخدم إصدارا مختلفا. يوصى باستخدام Python 3.10 أو أحدث.
إشعار
إذا كنت تستخدم Windows، فاستبدل
.venv/bin/activate
ب.venv\Scripts\activate
.تثبيت حزم Python المطلوبة:
python -m pip install -r requirements.txt
لتشغيل التطبيق، تحتاج إلى تكوين متغيرات البيئة.
استرداد نقطة نهاية حساب Azure OpenAI:
az cognitiveservices account show \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.endpoint \ --output tsv
استرداد مفتاح Azure OpenAI API:
az cognitiveservices account keys list \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query key1 \ --output tsv
استرداد نقطة نهاية إدارة تجمع جلسة عمل Azure Container Apps:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.poolManagementEndpoint \ --output tsv
.env
إنشاء ملف في جذر نموذج دليل التطبيق (نفس موقعmain.py
). أضف المحتوى التالي إلى الملف:OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}] POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>
استبدل
<AZURE_OPENAI_ENDPOINT>
بنقطة نهاية حساب Azure OpenAI،<AZURE_OPENAI_KEY>
ومفتاح Azure OpenAI API، ونقطة<SESSION_POOL_MANAGEMENT_ENDPOINT>
نهاية إدارة تجمع الجلسة.
يستخدم
DefaultAzureCredential
التطبيق للمصادقة مع خدمات Azure. على جهازك المحلي، يستخدم بيانات اعتماد تسجيل الدخول الحالية ل Azure CLI. يجب أن تمنح نفسك دور Azure ContainerApps Session Executor في تجمع الجلسة للتطبيق للوصول إلى تجمع الجلسة.استرداد اسم مستخدم Azure CLI الخاص بك:
az account show --query user.name --output tsv
قم بتشغيل الأوامر التالية لاسترداد معرف مورد تجمع جلسة العمل:
az containerapp sessionpool show --name $SESSION_POOL_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv
تعيين دور منفذ جلسة عمل Azure ContainerApps إلى مستخدم Azure CLI في تجمع الجلسة:
az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <CLI_USERNAME> \ --scope <SESSION_POOL_RESOURCE_ID>
استبدل
<CLI_USERNAME>
باسم مستخدم Azure CLI الخاص بك و<SESSION_POOL_RESOURCE_ID>
بمعرف مورد تجمع جلسة العمل.
تشغيل التطبيق
قبل تشغيل نموذج التطبيق، افتح main.py في محرر وراجع التعليمات البرمجية. يستخدم التطبيق FastAPI لإنشاء واجهة برمجة تطبيقات ويب تقبل رسالة مستخدم في سلسلة الاستعلام.
تنشئ الأسطر التالية من التعليمات البرمجية مثيل ACASessionsExecutor وتوفره إلى عامل autogen:
aca_sessions_executor = ACASessionsExecutor(aca_pool_management_endpoint)
code_executor_agent = ConversableAgent(
name="CodeExecutor",
llm_config=False,
code_execution_config={"executor": aca_sessions_executor},
human_input_mode="NEVER",
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", "").strip().upper()
)
عندما يحتاج إلى إجراء العمليات الحسابية والمهام، يستخدم العامل مترجم التعليمات البرمجية في ACASessionsExecutor لتشغيل التعليمات البرمجية. يتم تنفيذ التعليمات البرمجية في جلسة عمل في تجمع جلسة العمل. بشكل افتراضي، يتم إنشاء معرف جلسة عمل عشوائي عند إنشاء مثيل للأداة. إذا كان العامل يستخدم نفس الأداة لتشغيل عدة قصاصات برمجية Python، فإنه يستخدم نفس جلسة العمل. للتأكد من أن كل مستخدم لديه جلسة عمل فريدة، استخدم وكيلا وأداة منفصلة لكل مستخدم.
يتم تنفيذ ACASessionsExecutor في aca_sessions_executor.py.
تشغيل نموذج التطبيق:
fastapi dev main.py
افتح مستعرض ويب وانتقل إلى
http://localhost:8000/docs
. ترى واجهة مستخدم Swagger لنموذج التطبيق.قم بتوسيع
/chat
نقطة النهاية وحدد Try it out.أدخل
What time is it right now?
فيmessage
الحقل وحدد Execute.يستجيب العامل بالوقت الحالي. في المحطة الطرفية، ترى السجلات التي تعرض تعليمة Python البرمجية التي أنشأها العامل للحصول على الوقت الحالي وتشغيله في جلسة مترجم التعليمات البرمجية.
لإيقاف التطبيق، أدخل
Ctrl+C
في المحطة الطرفية.
اختياري: نشر نموذج التطبيق إلى Azure Container Apps
لنشر تطبيق FastAPI إلى Azure Container Apps، تحتاج إلى إنشاء صورة حاوية ودفعها إلى سجل حاوية. ثم يمكنك نشر الصورة إلى Azure Container Apps. يجمع az containerapp up
الأمر بين هذه الخطوات في أمر واحد.
ثم تحتاج إلى تكوين الهوية المدارة للتطبيق وتعيين الأدوار المناسبة له للوصول إلى Azure OpenAI وتجمع الجلسة.
تعيين المتغيرات لبيئة تطبيقات الحاوية واسم التطبيق:
ENVIRONMENT_NAME=aca-sessions-tutorial-env CONTAINER_APP_NAME=chat-api
إنشاء التطبيق ونشره في Azure Container Apps:
az containerapp up \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --environment $ENVIRONMENT_NAME \ --env-vars 'OAI_CONFIG_LIST=[{"model": "gpt-4", "api_key": "<AZURE_OPENAI_KEY>", "api_type": "azure", "base_url": "<AZURE_OPENAI_ENDPOINT>", "api_version": "2023-12-01-preview"}]' 'POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>' \ --source .
استبدل
<AZURE_OPENAI_ENDPOINT>
بنقطة نهاية حساب Azure OpenAI،<AZURE_OPENAI_KEY>
ومفتاح Azure OpenAI، ونقطة<SESSION_POOL_MANAGEMENT_ENDPOINT>
نهاية إدارة تجمع الجلسة.تمكين الهوية المدارة المعينة من قبل النظام للتطبيق:
az containerapp identity assign \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --system-assigned
لكي يتمكن التطبيق من الوصول إلى تجمع الجلسة، تحتاج إلى تعيين الأدوار المناسبة للهوية المدارة.
استرداد المعرف الأساسي للهوية المدارة:
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query identity.principalId \ --output tsv
استرداد معرف مورد تجمع جلسة العمل:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsv
تعيين الهوية المدارة
Azure ContainerApps Session Executor
للأدوار وContributor
في تجمع الجلسة:قبل تشغيل الأمر التالي، استبدل
<PRINCIPAL_ID>
و<SESSION_POOL_RESOURCE_ID>
بالقيم التي قمت باستردادها في الخطوات السابقة.az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID> az role assignment create \ --role "Contributor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID>
استرداد اسم المجال المؤهل بالكامل للتطبيق (FQDN):
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsv
افتح المستعرض
https://<FQDN>/docs
لاختبار التطبيق المنشور.
تنظيف الموارد
عند الانتهاء من الموارد، يمكنك حذفها لتجنب تكبد رسوم:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait