![]()
حتى هذه اللحظة في الدورة، قمت ببناء وكلاء يعملون على حاسوبك المحمول، داخل دفتر ملاحظات، مدفوعين بـ az login وعدد قليل من متغيرات البيئة. هذا هو السبيل الصحيح تمامًا للتعلم. لكنه ليس الطريقة الصحيحة لتشغيل وكيل يعتمد عليه آلاف العملاء في الساعة الثالثة صباحًا.
هذه الدرسة تتناول الفجوة بين “يعمل على جهازي” و”يعمل بشكل موثوق وميسور التكلفة في الإنتاج.” نغلق هذه الفجوة باستخدام Microsoft Foundry و خدمة وكلاء Microsoft Foundry، ونفعل ذلك من خلال بناء وكيل دعم عملاء حقيقي يحتوي على أدوات واسترجاع وذاكرة وتقييم ومراقبة.
ستتضمن هذه الدرسة:
بعد إكمال هذه الدرسة، ستعرف كيف:
تفترض هذه الدرسة أنك أتممت الدروس السابقة وترتاح للـ:
ستحتاج أيضًا إلى:
az login).requirements.txt.يشترك الوكيل النموذجي والوكيل الإنتاجي في نفس الحلقة الأساسية — التفكير، استدعاء الأدوات، الاستجابة. ما يتغير هو كل ما يحيط بتلك الحلقة. النموذج يشكل ربما 20% من وكيل الإنتاج؛ والباقي 80% هو الهيكل التشغيلي.
| الاهتمام | النموذج الأولي | الإنتاج |
|---|---|---|
| الاستضافة | يعمل في دفتر ملاحظاتك | يعمل كخدمة مستضافة، ذات إصدار ومدارة للنشر |
| الهوية | رمز az login الخاص بك |
هوية مُدارة مع RBAC محدودة |
| الحالة | في الذاكرة، تفقد عند إعادة التشغيل | معزولة (مخزن الخيوط، خدمة الذاكرة) |
| الفشل | ترى أثر الخطأ | محاولات إعادة، حلول بديلة، رسائل خاطئة، تنبيهات |
| التكلفة | “قليل جدًا” | تتبع لكل طلب، توجيه، تخزين مؤقت، ميزانية محددة |
| الجودة | تراقب المخرجات بصريًا | تقييم تلقائي قبل كل إصدار |
| الثقة | توافق على كل إجراء | سياسة + إدخال بشري للإجراءات عالية المخاطر |
احتفظ بهذا الجدول في ذهنك. كل قسم أدناه يُطابق أحد هذه الصفوف.
هناك ثلاث أنماط ستستخدمها، غالبًا معًا.
كائن الوكيل يعيش داخل عملية تطبيقك الخاصة. يُستدعى مزود النموذج مباشرة في كودك؛ حلقة التفكير تعمل في خدمتك. هذا ما تم في كل درس سابق.
يتم تسجيل الوكيل كمورد في Microsoft Foundry. تستضيف Foundry حلقة التفكير، تخزن الخيوط، تفرض أمان المحتوى وRBAC، وتجعل الوكيل مرئيًا في بوابة Foundry. يصبح تطبيقك عميلًا خفيف الوزن ينشئ الخيوط ويقرأ الردود.
يتم تركيب عدة وكلاء (وأدوات) في رسم بياني مع تدفق تحكم صريح — خطوات تسلسلية، تفرع، نقاط موافقة بشرية، ونقاط تحقق دائمة يمكن إيقافها واستئنافها. هذا هو قدرة سير العمل في Microsoft Agent Framework المطبقة على نطاق النشر.
flowchart TB
subgraph P1[Client-Hosted]
A1[Your App Process] --> M1[Model Provider]
end
subgraph P2[Hosted Agent]
A2[Thin Client] --> F2[Foundry Agent Service]
F2 --> M2[Model + Tools + Thread Store]
end
subgraph P3[Agent Workflow]
A3[Orchestrator] --> S1[Triage Agent]
S1 --> S2[Resolver Agent]
S2 --> H[Human Approval Node]
H --> S3[Action Agent]
end
نشر وكيل ليس عملًا لمرة واحدة push. إنها حلقة، وتشبه كثيرًا دورة إصدار البرامج لأنها كذلك بالضبط.
flowchart LR
Create[Create / Author] --> Version[Version]
Version --> Evaluate[Evaluate offline]
Evaluate -->|passes gate| Deploy[Deploy hosted]
Evaluate -->|fails gate| Create
Deploy --> Observe[Observe online]
Observe --> Improve[Collect failures]
Improve --> Create
Deploy --> Retire[Retire old version]
الفكرة الرئيسية، المستمدة من الدرس 10: التقييم غير المتصل بالإنترنت هو بوابة، وليس مجرد فكرة لاحقة. لا يُرسل إصدار جديد من الوكيل ما لم يجتاز حدود تقييمك. ثم تغذي المراقبة عبر الإنترنت إخفاقات العالم الحقيقي إلى مجموعة اختبارك غير المتصلة. هذه هي الحلقة كاملة.
توسيع وكيل يختلف عن توسيع واجهة برمجة تطبيقات ويب بلا حالة، لأن كل طلب قد يؤدي إلى عدة مكالمات مكلفة للنموذج والأدوات. أربعة تقنيات تحمل معظم الحمل.
معالجة الطلبات بلا حالة. لا تحتفظ بأي حالة لكل مستخدم في ذاكرة العملية. احتفظ بخيوط المحادثة في متجر خيوط Foundry أو خدمة ذاكرة ليتمكن أي مثيل من التعامل مع أي طلب. هذا ما يسمح لك بالتوسع أفقيًا — إضافة مثيلات، بدون جلسات ملتصقة.
توجيه النموذج. ليس كل طلب يحتاج إلى أكثر نماذجك قدرة (وعالية التكلفة). قم بتوجيه الطلبات البسيطة — تصنيف النوايا، الإجابات القصيرة الواقعية — إلى نموذج صغير وسريع، واحتفظ بالنموذج الكبير للتفكير الحقيقي. يمكن لـ موجه النماذج في Foundry القيام بذلك لك، أو يمكنك تنفيذ مصنف خفيف بنفسك. ستبني النسخة ذاتية الصنع في المختبر.
التخزين المؤقت للردود. العديد من استفسارات الدعم هي نسخ متكررة تقريبًا (“كيف أعيد تعيين كلمة المرور؟”). خزّن إجابات الأسئلة الشائعة وقدمها بدون الرجوع إلى النموذج على الإطلاق. حتى معدل وصول متوسط في التخزين المؤقت يقلل التكلفة والكمون بشكل ملموس.
التزامن والضغط العكسي. لمزودي النموذج حدود معدل. حدد تزامنك، استخدم المحاولات مع التراجع الأسي، وفش بأناقة (رد “نعمل على ذلك” في قائمة الانتظار أفضل من خطأ 500).
flowchart LR
Q[User query] --> C{Cache hit?}
C -->|yes| R[Return cached answer]
C -->|no| Router{Complexity?}
Router -->|simple| SLM[Small model]
Router -->|complex| LLM[Large model]
SLM --> Out[Response]
LLM --> Out
Out --> Store[Cache + trace]
لا يمكنك تشغيل ما لا يمكنك رؤيته. كما في الدرس 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-5-nano")
# agent execution is traced automatically inside this span
السمات مثل customer.tier و routed.model تحول جدار التتبعات إلى أسئلة قابلة للإجابة (“هل يتم توجيه عملاء المؤسسات إلى النموذج الصغير كثيرًا؟”).
تسيطر التوكنات على تكلفة الوكلاء في الإنتاج. هناك ثلاث رافعات، حسب التأثير:
بوابات التقييم والتحكم في التكلفة هي الانضباط ذاته من زاويتين: التقييم يحدد أدنى جودة، والتوجيه والتخزين المؤقت يحافظان على تكلفة قريبة من هذا الحد الأدنى.
الحوكمة. يرث الوكلاء المستضافون RBAC وأمان المحتوى وتسجيل التدقيق في Foundry. امنح كل وكيل هوية مُدارة بأقل امتيازات يحتاجها — وصول للقراءة فقط إلى قاعدة المعرفة، وصول محدود إلى واجهة تذاكر الدعم، لا أكثر.
إدخال إنساني في الحلقة. بعض الإجراءات حساسة جدًا لأتمتتها بالكامل — إصدار استرداد، حذف حساب، التصعيد إلى الفريق القانوني. يدعم Microsoft Agent Framework أدوات الموافقة المطلوبة: يقترح الوكيل الإجراء، يتوقف التنفيذ، يوافق إنسان أو يرفض، ثم يستأنف سير العمل. شاهدت البدائية في الدرس 6؛ وهنا تنشرها.
MCP في الإنتاج. يسمح MCP لوكيلك باستخدام أدوات خارجية عبر واجهة قياسية. في الإنتاج، اعتبر كل خادم MCP كنطاق غير موثوق به: ثبت إصدار الخادم، شغله بهوية محدودة، تحقق من مخرجاته، ولا تكشف له عن أسرار. خادم MCP هو تبعية، والتبعيات تُصحح وتُراجع وتُقيد معدلاتها.
flowchart TB
subgraph Dev[Development Architecture]
D1[Notebook] --> D2[Agent Framework]
D2 --> D3[Model Provider]
D2 --> D4[Local tools]
end
subgraph Deploy[Deployment Architecture]
E1[CI pipeline] --> E2[Evaluation gate]
E2 -->|pass| E3[Foundry Agent Service]
E3 --> E4[Versioned hosted agent]
end
subgraph Run[Runtime Architecture]
F1[Client app] --> F2[Hosted agent]
F2 --> F3[Model Router]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Memory service]
F2 --> F6[MCP tools]
F2 --> F7[OTel -> Foundry tracing]
F2 --> F8[Human approval]
end
تلك المخططات الثلاثة — التطوير، النشر، وقت التشغيل — هي نفس الوكيل في ثلاث مراحل من حياته. المختبر التالي يرشدك لبنائه.
افتح code_samples/16-python-agent-framework.ipynb واطلع عليها من البداية للنهاية. ستجمع وكيل دعم عملاء Contoso مع كل اعتبار إنتاج موصل:
يتم تنظيم الدفتر بحيث يكون كل اعتبار إنتاج قسمًا قائمًا بذاته وقابلًا للتشغيل. القلب منه هو معالج الطلبات مع التوجيه والتخزين المؤقت:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Serve from cache when we can.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Route by complexity to control cost.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Run the agent inside a trace span for observability.
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. Cache and return.
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 # only deploy if the gate passes
اقرأ كل سطر — الدفتر يحافظ عمداً على البنى صغيرة حتى لا يُخفي شيئًا خلف استدعاء إطار عمل.
بوابة التقييم أعلاه تعمل خارج الاتصال ضد كائن الوكيل الخاص بك. بمجرد نشر الوكيل كوكيلي مستضاف، تحتاج تحققًا آخر، أرخص: هل نقطة النهاية المنشورة ترد فعلًا؟
نشر “ناجح” يثبت فقط أن مستوى التحكم قبل التعريف تم قبوله — لا يثبت أن الوكيل يستجيب. قد يترك فقدان تبعية أو توجيه نموذج خاطئ أو اتصال منتهي نشرًا أخضر لا يعيد شيئًا. اختبار الدخان يكتشف ذلك في ثوانٍ، في كل نشر، دون تكلفة تقييم كامل.
هذا المستودع يشحن خط تقييم اختبار دخان جاهز للاستخدام مبني على اختبار دخان AI في GitHub Action:
tests/lesson-16-smoke-tests.json يحتوي على محفزات وتأكيدات لوكيل دعم Contoso (إجابات سياسة محددة، استعلام طلب، البقاء في الموضوع، واستمرارية خيط متعددة الأدوار). الأرشيفات لوكلاء الدروس الأخرى موجودة بجواره — انظر 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. بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.