![]()
حتى هذه النقطة في الدورة التدريبية، قمت ببناء وكلاء يعملون على حاسوبك المحمول، داخل مفكرة، مدفوعة بأمر az login وعدد قليل من المتغيرات البيئية. هذه هي الطريقة المناسبة للتعلم بالضبط. لكنها ليست الطريقة المناسبة لتشغيل وكيل يعتمد عليه آلاف العملاء في الساعة 3 صباحًا.
هذا الدرس يدور حول الفجوة بين “يعمل على جهازي” و “يعمل بشكل موثوق وميسور التكلفة في الإنتاج.” نحن نسد هذه الفجوة باستخدام Microsoft Foundry و Microsoft Foundry Agent Service، ونفعل ذلك ببناء وكيل دعم عملاء حقيقي يحتوي على أدوات، واسترجاع، وذاكرة، وتقييم، ومراقبة.
سيغطي هذا الدرس:
بعد إكمال هذا الدرس، ستعرف كيفية:
يفترض هذا الدرس أنك قد أكملت الدروس السابقة وأنك مرتاح لـ:
ستحتاج أيضًا إلى:
az login).requirements.txt.يشارك وكيل النموذج الأولي ووكيل الإنتاج نفس الحلقة الأساسية — الاستدلال، استدعاء الأدوات، الاستجابة. ما يتغير هو كل شيء ملفوف حول تلك الحلقة. النموذج قد يكون 20% فقط من وكيل الإنتاج؛ و80% الأخرى هي الهيكل التشغيلي.
| الاعتبار | النموذج الأولي | الإنتاج |
|---|---|---|
| الاستضافة | يعمل في مفكرتك | يعمل كخدمة مستضافة، بإصدارات وتوزيع |
| الهوية | رمز az login الخاص بك |
هوية مُدارة مع RBAC مخصصة |
| الحالة | في الذاكرة، تُفقد عند إعادة التشغيل | خارجية (مخزن الخيوط، خدمة الذاكرة) |
| الفشل | ترى أثر التتبع | إعادة المحاولة، الحلول البديلة، الرسائل الميتة، التنبيهات |
| التكلفة | “بضع سنتات” | تم تتبعها لكل طلب، موجهة، مخزنة، مدبرة الميزانية |
| الجودة | تُراجع النتائج بنفسك | مُقيمة تلقائيًا قبل كل إصدار |
| الثقة | توافق على كل إجراء | السياسة + تدخل بشري للأفعال عالية المخاطر |
احتفظ بهذا الجدول في ذهنك. كل قسم أدناه يطابق أحد هذه الصفوف.
هناك ثلاثة أنماط ستستخدمها، غالبًا معًا.
كائن الوكيل يعيش داخل عملية تطبيقك الخاصة. يقوم رمزك بالاتصال بمزود النموذج مباشرة؛ تعمل حلقة الاستدلال في خدمتك. هذا ما قامت به كل الدروس السابقة.
الوكيل مسجل كمورد في Microsoft Foundry. تستضيف Foundry حلقة الاستدلال، تخزن الخيوط، تفرض سلامة المحتوى وRBAC، وتجعل الوكيل مرئيًا في بوابة Foundry. يصبح تطبيقك عميلًا رقيقًا ينشئ الخيوط ويقرأ الاستجابات.
يتم تركيب عدة وكلاء (وأدوات) في رسم بياني مع تدفق تحكم صريح — خطوات متسلسلة، فروع، عقد موافقة بشرية، ونقاط توقف دائمة يمكن إيقافها واستئنافها. هذه هي القدرة على سير العمل في Microsoft Agent Framework مطبقة على مقياس النشر.
flowchart TB
subgraph P1[مستضاف لدى العميل]
A1[عملية تطبيقك] --> M1[مزود النموذج]
end
subgraph P2[الوكيل المستضاف]
A2[عميل نحيف] --> F2[خدمة وكيل Foundry]
F2 --> M2[النموذج + الأدوات + مخزن الخيوط]
end
subgraph P3[سير عمل الوكيل]
A3[المنسق] --> S1[وكيل الفرز]
S1 --> S2[وكيل الحل]
S2 --> H[عقدة الموافقة البشرية]
H --> S3[وكيل الإجراء]
end
نشر الوكيل ليس أمرًا واحدًا push. إنها حلقة، وتشبه كثيرًا دورة إصدار البرامج لأنها في الحقيقة كذلك.
flowchart LR
Create[أنشئ / مؤلف] --> Version[الإصدار]
Version --> Evaluate[تقييم دون اتصال]
Evaluate -->|اجتاز البوابة| Deploy[النشر المستضاف]
Evaluate -->|فشل في البوابة| Create
Deploy --> Observe[المراقبة عبر الإنترنت]
Observe --> Improve[جمع الإخفاقات]
Improve --> Create
Deploy --> Retire[إيقاف النسخة القديمة]
الفكرة الأساسية، المنقولة من الدرس 10: التقييم غير المتصل بالإنترنت هو بوابة، وليس فكرة لاحقة. لا يتم شحن إصدار وكيل جديد إلا إذا تجاوز نقاط تقييمك. ثم تغذي المراقبة عبر الإنترنت حالات الفشل الحقيقية مرة أخرى إلى مجموعة الاختبارات غير المتصلة. هذه هي الحلقة بأكملها.
توسعة وكيل مختلفة عن توسيع API ويب بدون حالة، لأن كل طلب قد يطلق استدعاءات متعددة للنماذج والأدوات المكلفة. أربع تقنيات تحمل معظم العبء.
معالجة الطلبات بدون حالة. لا تحتفظ بأي حالة لكل مستخدم في ذاكرة عمليتك. احفظ محادثات الخيوط في مخزن خيوط Foundry أو خدمة ذاكرة حتى يتمكن أي مثيل من التعامل مع أي طلب. هذا هو ما يسمح لك بالتوسع أفقيًا — إضافة مثيلات، لا جلسات لاصقة.
توجيه النموذج. ليست كل الطلبات تحتاج إلى النموذج الأكثر قدرة (والأكثر تكلفة). قوّم الطلبات البسيطة — تصنيف النوايا، الأجوبة القصيرة الحقيقية — إلى نموذج صغير وسريع، واحتفظ بالنموذج الكبير للاستدلال الحقيقي. يمكن لـ Model Router في Foundry القيام بذلك نيابة عنك، أو يمكنك تنفيذ مصنف خفيف بنفسك. ستبني النسخة اليدوية في المختبر.
التخزين المؤقت للاستجابة. العديد من استفسارات الدعم هي مكررات قريبة (“كيف أعيد تعيين كلمة المرور؟”). خزّن الأجوبة على الأسئلة الشائعة وقدمها دون الحاجة لاستخدام النموذج على الإطلاق. حتى معدل ضربات التخزين المؤقت المتواضع يقلل بشكل ملموس التكلفة والكمون.
التزامن والضغط الخلفي. لمزودي النموذج حدود على المعدل. حدد تزامنك، استخدم إعادة المحاولة مع تراجع أُسّي، وفشل بلطف (رد “نحن نعمل على ذلك” في قائمة الانتظار أفضل من خطأ 500).
flowchart LR
Q[استفسار المستخدم] --> C{هل هناك ضربة في التخزين المؤقت؟}
C -->|نعم| R[إرجاع الإجابة من التخزين المؤقت]
C -->|لا| Router{التعقيد؟}
Router -->|بسيط| SLM[نموذج صغير]
Router -->|معقد| LLM[نموذج كبير]
SLM --> Out[الرد]
LLM --> Out
Out --> Store[التخزين المؤقت + التتبع]
لا يمكنك تشغيل ما لا يمكنك رؤيته. كما تم تغطيته في الدرس 10، يصدر Microsoft Agent Framework تتبعات OpenTelemetry بطبيعة الحال — كل استدعاء نموذج، استدعاء أداة، وخطوة تنسيق تصبح شريحة زمنية. في الإنتاج تقوم بتصدير تلك الشرائح إلى Microsoft Foundry (أو أي خلفية متوافقة مع OTel) لكي تتمكن من:
from agent_framework.observability import get_tracer
tracer = get_tracer()
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("customer.tier", "enterprise")
span.set_attribute("routed.model", "gpt-4.1-mini")
# يتم تتبع تنفيذ الوكيل تلقائيًا داخل هذه الفترة الزمنية
سمات مثل customer.tier و routed.model هي التي تحول جدار التتبعات إلى أسئلة قابلة للإجابة (“هل يحصل العملاء المؤسسيون على توجيه إلى النموذج الصغير كثيرًا؟”).
يهيمن التوكنز على التكلفة في وكلاء الإنتاج. ثلاث رافعات، حسب التأثير:
بوابات التقييم والسيطرة على التكلفة هي نفس الانضباط من زاويتين: التقييم يخبرك بأدنى جودة، التوجيه والتخزين المؤقت يبقيانك قريبًا من تكلفة ذلك الحد الأدنى بقدر الإمكان.
الحوكمة. يرث الوكلاء المستضافون RBAC و سلامة المحتوى وتسجيل التدقيق في Foundry. امنح كل وكيل هوية مُدارة بأدنى امتيازات يحتاجها — وصول للقراءة فقط إلى قاعدة المعرفة، وصول مخصص لواجهة برمجة تذاكر الدعم، لا شيء أكثر.
البشر في الحلقة. بعض الإجراءات ذات عواقب كبيرة جدًا للتنفيذ الآلي الكامل — إصدار استرداد، حذف حساب، التصعيد إلى فريق قانوني. يدعم Microsoft Agent Framework الأدوات التي تتطلب الموافقة: يقترح الوكيل الإجراء، يتوقف التنفيذ، يوافق إنسان أو يرفض، ثم يستأنف سير العمل. رأيت هذه البدائية في الدرس 6؛ وهنا تقوم بنشرها.
MCP في الإنتاج. يسمح لك MCP باستخدام أدوات خارجية عبر واجهة معيارية. في الإنتاج، عامل كل خادم MCP كحدود غير موثوق بها: ثبت إصدار الخادم، شغله بهوية مخصصة، تحقق من مخرجاته، ولا تكشف له عن الأسرار أبدًا. خادم MCP هو تبعية، والتبعيات تُصلح، تُراجع، وتُحد من معدلاتها.
flowchart TB
subgraph Dev[هندسة التطوير]
D1[الدفتر] --> D2[إطار الوكيل]
D2 --> D3[مزود النموذج]
D2 --> D4[الأدوات المحلية]
end
subgraph Deploy[هندسة النشر]
E1[خط أنابيب التكامل المستمر] --> E2[بوابة التقييم]
E2 -->|نجح| E3[خدمة وكيل فاوندرى]
E3 --> E4[وكيل مستضاف بالإصدار]
end
subgraph Run[هندسة وقت التشغيل]
F1[تطبيق العميل] --> F2[وكيل مستضاف]
F2 --> F3[موجه النموذج]
F2 --> F4[بحث Azure AI RAG]
F2 --> F5[خدمة الذاكرة]
F2 --> F6[أدوات MCP]
F2 --> F7[OTel -> تتبع فاوندرى]
F2 --> F8[موافقة بشرية]
end
تلك المخططات الثلاثة — التطوير، النشر، وقت التشغيل — هي نفس الوكيل في ثلاث مراحل من حياته. المختبر التالي يرشدك خلال بنائه.
افتح code_samples/16-python-agent-framework.ipynb واتبعه من البداية للنهاية. ستجمع وكيل دعم عملاء كونتوسو مع كل اعتبار للإنتاج موصول:
المنظمة بحيث يكون كل اعتبار إنتاجي جزءًا مستقلًا قابلًا للتشغيل. قلبها هو معالج الطلبات الذي يجمع بين التوجيه والتخزين المؤقت:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. قدم من الذاكرة المخبأة عندما نستطيع.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. راجع حسب التعقيد للتحكم في التكلفة.
model = "gpt-4.1-mini" if is_simple(query) else "gpt-4.1"
# 3. شغّل الوكيل داخل فترة تعقب للمراقبة.
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("routed.model", model)
span.set_attribute("customer.id", customer_id)
response = await support_agent.run(query, model=model)
# 4. اخزن وأعد.
response_cache.set(normalize(query), response.text)
return response.text
بوابة التقييم التي تحرس الإصدار تبدو هكذا:
async def evaluation_gate(agent, test_cases, threshold: float = 0.8) -> bool:
passed = 0
for case in test_cases:
result = await agent.run(case["input"])
if score_response(result.text, case["expected"]) >= 0.8:
passed += 1
pass_rate = passed / len(test_cases)
print(f"Evaluation pass rate: {pass_rate:.0%} (gate: {threshold:.0%})")
return pass_rate >= threshold # قم بالنشر فقط إذا اجتاز البوابة
اقرأ كل سطر — المفكرة تبقي البدائيات صغيرة عمدًا حتى لا يُخفي شيء وراء استدعاء إطار عمل.
بوابة التقييم أعلاه تعمل غير متصل مقابل كائن الوكيل الخاص بك. بمجرد نشر الوكيل كوكيل مستضاف، تحتاج إلى تحقق واحد إضافي، أرخص: هل نقطة النهاية المنشورة ترد فعلاً؟
إثبات “النشر الناجح” يثبت فقط أن طائرة التحكم قبلت التعريف — لا يثبت أن الوكيل يرد. يمكن أن تترك تبعية مفقودة، توجيه نموذج خاطئ، أو اتصال منتهي صلاحية، نشرًا أخضر لا يُرجع شيئًا. اختبار الدخان يكتشف ذلك في ثوانٍ، عند كل نشر، دون تكلفة تقييم كامل.
يأتي هذا المستودع مع خط أنابيب اختبار دخان جاهز للاستخدام مبني على إجراء AI Smoke Test في GitHub:
tests/lesson-16-smoke-tests.json على مطالبات وادعاءات لوكيل دعم كونتوسو (إجابات السياسية المؤكدة، بحث الطلب، البقاء في الموضوع، واستمرارية الخيط متعدد الجولات). تعيش كتالوجات وكلاء الدروس الأخرى بجانبه — راجع tests/README.md..github/workflows/smoke-test.yml تسجيل الدخول بـ Azure OIDC ويرسل كل مطالبة إلى نقطة استجابة الوكيل، ويُفشل المهمة عند أي فشل بالادعاءات.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
قم بتشغيله من علامة تبويب Actions بمجرد نشر الوكيل الخاص بك، مع توفير نقطة نهاية مشروع Foundry واسم الوكيل. تحتاج الهوية الموحدة إلى دور Azure AI User على نطاق مشروع Foundry. فكّر في الطبقات كهرم: اختبارات الدخان (هل هي قابلة للوصول وتستجيب؟) تُجرى عند كل نشر، التقييم غير المتصل بالإنترنت (هل هي جيدة بما يكفي للإصدار؟) يُجرى قبل الترقية، والتقييم عبر الإنترنت (كيف تعمل في الواقع؟) يُجرى بشكل مستمر.
اختبر فهمك قبل الانتقال إلى المهمة.
1. كم تقريبا يشكل “النموذج” من وكيل الإنتاج، وما هو الباقي؟
2. متى تختار وكيل مستضاف بدلاً من وكيل مستضاف بواسطة العميل؟
3. لماذا يجب أن يكون الوكيل القابل للتوسع بلا حالة في ذاكرة العملية الخاصة به؟
4. ما المشكلة التي يحلها توجيه النماذج، وكيف يرتبط بالتقييم؟
5. ما هو “بوابة التقييم” وأين تقع في دورة الحياة؟
6. لماذا يجب اعتبار خادم MCP كحدود غير موثوقة في الإنتاج؟
7. ما التغيير الواحد الذي عادة ما يكون له أكبر تأثير على تكلفة وكيل الإنتاج، ولماذا؟
8. ما دور سمات النطاق مثل customer.tier و routed.model في الرصد؟
خذ وكيل دعم العملاء من المختبر وقم بتقويته لسيناريو معين: وكيل دعم فواتير الاشتراك لشركة SaaS.
يجب أن تتضمن تسليمك:
get_subscription_status، get_invoice، وissue_credit (الاعتمادات التي تزيد عن 50 دولارًا تتطلب موافقة بشرية).اكتب فقرة قصيرة (في خلية ماركداون) تشرح قاعدة توجيه النموذج التي اخترتها وكيف ستتحقق من صحتها مع حركة مرور حقيقية. لا توجد إجابة صحيحة واحدة — يتم تقييمك بناءً على ما إذا كانت الاعتبارات الإنتاجية مترابطة بشكل منطقي.
في هذا الدرس نقلت وكيل من النموذج الأولي إلى الإنتاج باستخدام Microsoft Foundry:
الدرس التالي يأخذ الرحلة المعاكسة: بدلاً من تكبير الوكلاء إلى السحابة، ستقوم بتقليلهم إلى جهاز مطور واحد وتشغيلهم محليًا بالكامل.
بناء وكلاء استخدام الحاسوب (CUA)
تنويه: تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.