كيفية بناء وكلاء ذكاء اصطناعي أقوياء باستخدام أدوات في لغة سي شارب

آخر تحديث: 05/21/2026
نبذة عن الكاتب: ج مصدر تريل
  • تجمع وكلاء C# الحديثة بين منطق LLM والأدوات والذاكرة وسير العمل للتعامل مع المهام المعقدة والموجهة نحو تحقيق الأهداف.
  • يوفر كل من Azure OpenAI Assistants و Microsoft Agent Framework العناصر الأساسية للمساعدين والجلسات والأدوات وعمليات التنفيذ في .NET.
  • تفصل البنى القوية بين الوكلاء المتخصصين، وتحافظ على الحالة، وتنسق سير العمل، وتفرض اختبارات صارمة، وقابلية للمراقبة، وأمانًا.
  • تعمل أدوات الحوسبة السحابية مثل Azure AI Foundry و VS Code AI extensions على تبسيط عملية تطوير وتقييم ونشر الوكلاء ذوي الجودة الإنتاجية.

وكلاء الذكاء الاصطناعي في لغة C# مع الأدوات

لقد تحول بناء وكلاء الذكاء الاصطناعي باستخدام أدوات في لغة C# من تجربة بحثية إلى طريقة عملية للغاية لإضافة ذكاء حقيقي إلى تطبيقات الأعمال. تتيح الأطر الحديثة من مايكروسوفت وأحدث إصدارات OpenAI وAzure OpenAI SDKs إمكانية تجاوز مجرد روبوتات الدردشة البسيطة، وربط نماذج اللغة الكبيرة بالتعليمات البرمجية والملفات وسير العمل وأنظمة المؤسسات مع الحفاظ على التحكم في الأمان والتكلفة والموثوقية.

يرشدك هذا الدليل خلال المفاهيم الأساسية وقرارات البنية وأمثلة .NET الملموسة التي تحتاجها لتصميم وكلاء جاهزين للإنتاج في لغة C#. سنقوم بتجميع الأفكار من مساعدي Azure OpenAI، وإطار عمل Microsoft Agent، وأنماط التنسيق، والاختبار، والمراقبة، والنشر السحابي، مع شرح كيفية ملاءمة كل شيء في استراتيجية متماسكة لتطبيقات العالم الحقيقي.

ما هو وكيل الذكاء الاصطناعي حقًا (ولماذا هو مهم في .NET)

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

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

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

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

المكونات الأساسية للمساعدين والوكلاء الذين يعملون بالذكاء الاصطناعي

تشترك معظم منصات وكلاء الذكاء الاصطناعي الحديثة الموجهة إلى C# و .NET في مجموعة صغيرة من المكونات الأساسية، حتى لو اختلفت التسمية قليلاً بين Azure OpenAI Assistants و Microsoft Agent Framework. يساعدك فهم هذه المكونات على تصميم بنيتك الخاصة بدلاً من نسخ أجزاء من التعليمات البرمجية بشكل أعمى.

المساعد أو الوكيل هو عميل الذكاء الاصطناعي المركزي الذي يستخدم تكوين LLM بالإضافة إلى معالجة التعليمات وإدارة المحادثات واستدعاء الأدوات. في Azure OpenAI Assistants، يغلّف هذا الكائن تكوين النموذج والتعليمات وتكوين الأداة. في Microsoft Agent Framework، AIAgent يغلف عميل دردشة (OpenAI أو Azure OpenAI) بالإضافة إلى الأدوات والتعليمات، وهو عديم الحالة عن قصد حتى يتمكن من خدمة محادثات متعددة بالتوازي.

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

الرسائل هي المساهمات الفردية داخل سلسلة الرسائل أو الجلسة، والتي يتم إنتاجها إما من قبل المستخدمين أو من قبل المساعد. قد تحتوي الرسائل على نصوص عادية أو صور أو ملفات، وفي واجهات برمجة تطبيقات المساعد، تُخزَّن هذه الرسائل كقوائم مُرتبة ضمن سلسلة عمليات. أما في لغة C#، فيتم استرجاعها عادةً كمجموعات ذات أنواع بيانات محددة، حيث يمكنك فحص النصوص والتعليقات التوضيحية ومراجع الملفات.

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

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

إنشاء وكيل وحدة تحكم بسيط بلغة C# باستخدام مساعدي Azure OpenAI

لرؤية هذه المفاهيم عمليًا، يمكنك تشغيل تطبيق وحدة تحكم .NET بسيط يستخدم حزم تطوير البرامج الرسمية من OpenAI أو Azure OpenAI لإنشاء مساعد يقرأ البيانات من الملفات ويولد تصورات. الفكرة هي ربط نظام إدارة التعلم باللغات (LLM) بكل من البحث عن الملفات وتنفيذ التعليمات البرمجية، ثم السماح له بالإجابة على أسئلة التحليلات باللغة الطبيعية.

الخطوة الأولى هي إعداد المشروع: قم بإنشاء تطبيق وحدة تحكم .NET جديد وأضف حزم NuGet الخاصة بـ OpenAI و Azure.AI.OpenAI. ثم تقوم بإنشاء العملاء الرئيسيين في Program.csسواءً كان ذلك مباشرةً لـ OpenAI أو لـ Azure OpenAI باستخدام بيانات اعتماد مثل DefaultAzureCredentialيمكنك الحصول على من عميل OpenAI AssistantClient لإدارة المساعدين وقسم منفصل OpenAIFileClient لتحميل الملفات.

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

بمجرد وجود البيانات في النظام، يمكنك تهيئة المساعد عبر AssistantCreationOptions لتمكين كل من البحث عن الملفات وأداة تفسير التعليمات البرمجية. تحدد اسمًا، ومجموعة من التعليمات الواضحة ("أنت مساعد يبحث عن بيانات المبيعات وينتج رسومًا بيانية عند الطلب")، ثم تُرفق الأدوات: أ FileSearchToolDefinition حتى يتمكن المساعد من الاستعلام عن الملفات، بالإضافة إلى CodeInterpreterToolDefinition لذا يمكنه كتابة وتشغيل التعليمات البرمجية في بيئة معزولة لأغراض التحليل أو إنشاء الرسوم البيانية.

لجعل البحث عن الملفات يستخدم فعليًا مستند المبيعات الذي قمت بتحميله، عليك ربطه بمتجر متجهات جديد بالداخل. ToolResources. المساعد VectorStoreCreationHelper يربط هذا النظام معرّف الملف المرفوع بمخزن بيانات متجهية يمكن للمساعد الاستعلام عنه دلاليًا بدلًا من مسح النص الخام. هذه طريقة بسيطة لكنها فعّالة لإضافة سلوك توليد مُعزّز بالاسترجاع.

بعد تحديد الخيارات، يمكنك إنشاء المساعد عن طريق تمرير النموذج المستهدف (على سبيل المثال gpt-4o) والتكوين، ثم تقوم بإنشاء سلسلة محادثة برسالة مستخدم أولية. قد يكون السؤال الأول شيئًا مثل: "كيف كان أداء المنتج 113045 في فبراير؟ ارسم اتجاهه بمرور الوقت." أخيرًا، تتصل CreateThreadAndRun، مما يؤدي إلى إنشاء الخيط وبدء التشغيل.

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

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

تصميم بنية وكيل قوية في لغة C#

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

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

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

في سيناريوهات الإنتاج، أنت بحاجة أيضًا إلى مخزن دائم للذاكرة حتى تتمكن المحادثات من البقاء بعد إعادة تشغيل العمليات أو حالات الفشل أو عمليات إعادة النشر. تتيح أطر عمل الوكلاء مثل Microsoft Agent Framework إمكانية تسلسل الجلسات إلى JsonElementوالتي يمكنك تحميلها إلى SQL Server أو Redis أو أي قاعدة بيانات NoSQL. وتتيح هذه الإمكانية نفسها إمكانية تتبع عمليات التدقيق والامتثال للوائح التنظيمية، حيث يمكنك إعادة بناء الحالة التي كان عليها الوكيل بالضبط عند اتخاذه القرار.

تُعدّ الأدوات واستدعاءات الوظائف هي المكان الذي تتوقف فيه البرامج عن كونها سلبية وتبدأ في القيام بعمل مفيد. يُتيح عرض وظائف لغة C# الأصلية كأدوات للنموذج استدعاء سلوكيات مثل الاستعلام عن نظام إدارة علاقات العملاء (CRM)، أو إجراء تحليلات على البيانات، أو تشغيل سير العمل. يجب تزويد كل أداة ببيانات وصفية واضحة (أوصاف وتوثيق للمعلمات)، لكي يعرف نموذج التعلم المحدود (LLM) متى يستدعيها وبأي وسائط.

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

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

من Semantic Kernel و AutoGen إلى Microsoft Agent Framework

لقد قامت مايكروسوفت بدمج أدوات الوكيل الخاصة بها لـ .NET، حيث جمعت بين الأفكار من Semantic Kernel ومشروع AutoGen في إطار عمل وكيل مايكروسوفت الموحد الجديد (MAF). يهدف هذا الإطار إلى منحك استقرارًا وميزات على مستوى المؤسسات مع تبسيط كيفية بناء وكلاء متعددين الأدوار وسير عمل قائم على الرسوم البيانية.

يتوفر MAF حاليًا في مرحلة المعاينة العامة وهو متاح لكل من .NET و Python بموجب ترخيص MIT. على الرغم من أن بعض واجهات برمجة التطبيقات لا تزال قيد التطوير بين الإصدارات التجريبية، إلا أن الاتجاه العام واضح: وكلاء الذكاء الاصطناعي للسلوك الذكي، وجلسات الوكلاء لإدارة الحالة، ونظام سير العمل القائم على الرسوم البيانية والمنفذين لخطوط أنابيب أكثر حتمية.

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

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

ولجعل هذا الأمر ملموساً، تخيل روبوت دردشة للدعم تم بناؤه كواجهة برمجة تطبيقات ASP.NET Core 10 باستخدام إطار عمل Microsoft Agent Framework. يستخدم الوكيل عميل دردشة (مدعوم من Azure OpenAI أو OpenAI) كمحرك استدلال، وهدفه الرئيسي هو الإجابة على الأسئلة المتعلقة بالوثائق الداخلية المخزنة في ملفات Markdown مع الحفاظ على السياق عبر رسائل متعددة من نفس المستخدم.

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

المفاهيم الخمسة الرئيسية في إطار عمل وكيل مايكروسوفت

تقوم الدروس التعليمية الرسمية لـ MAF بتنظيم التعلم في خمس أفكار متدرجة تتوافق بشكل جيد مع الطريقة التي يفكر بها مطورو C# بالفعل في الخدمات والحالة. إن إتقان هذه المفاهيم يمنحك أساسًا متينًا لأي وكيل ستقوم ببنائه على .NET.

أولاً يأتي وكيلك الأولي: AIAgent تم بناؤه من خلال برنامج دردشة، وتعليمات، واسم. تقوم بتوجيه الموظف إلى نموذج محادثة مقدم من AzureOpenAIClient أو OpenAI، وتقدم إرشادات على مستوى النظام ("أنت مساعد دعم مفيد") ثم تتصل RunAsync مع إدخال المستخدم. والتفاصيل الأساسية هي أن نسخة الوكيل لا تحتفظ بحالة ويمكنها خدمة محادثات مستقلة متعددة في وقت واحد.

ثانيًا، الأدوات، وهي ببساطة طرق C# مزينة بـ السمات وتحويلها إلى وظائف قابلة للاستدعاء عبر AIFunctionFactory.Create(). عند تشغيل الوكيل، يتلقى نظام إدارة دورة حياة التطبيق (LLM) مخططًا مستمدًا من تلك السمات، ويمكنه أن يقرر تلقائيًا متى وكيف يستدعي كل أداة، بما في ذلك الوسائط. هنا يصبح منطق عملك الخاص وعمليات التكامل الخارجية جزءًا من نطاق عمل الوكيل.

ثالثًا، دعم المحادثة متعددة الأدوار، والذي تتولاه MAF من خلال AgentSession شاء. لأن AIAgent لا يحتفظ الجهاز نفسه بأي شيء، فكل محادثة جارية تعيش داخل جلسة تم إنشاؤها باستخدام CreateSessionAsync(). تقوم بإعادة تمرير تلك الجلسة في المكالمات اللاحقة، مما يسمح للوكيل بتتبع الرسائل السابقة وتفضيلات المستخدم والمشكلات التي لم يتم حلها.

رابعًا، الذاكرة والاستمرارية، والتي أصبحت ممكنة بفضل إمكانية تسلسل الجلسات في JsonElement. وهذا يجعل من السهل تخزينها في الذاكرة، أو Redis، أو جدول SQL، أو أي مخزن آخر تفضله، ثم إعادة بنائها باستخدام DeserializeSessionAsync()بالنسبة لحالات الدعم، هذا يعني أن المستخدم يمكنه إغلاق متصفحه واستئناف نفس المحادثة لاحقًا، أو يمكن لمثيل خدمة مختلف أن يتولى الأمر بسلاسة بعد إعادة التشغيل.

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

تطبيق روبوت دعم حقيقي باستخدام MAF والأدوات والجلسات

ومن الأمثلة الملموسة التي توضح المفاهيم المذكورة أعلاه واجهة برمجة تطبيقات SupportBot المدعومة بمشروع ASP.NET Core 10. تعرض هذه الخدمة نقطة نهاية HTTP تقبل رسائل المستخدم ومعرف الجلسة، وتفوض عملية التفكير إلى AIAgent وتحافظ على الجلسة بحيث يتم الحفاظ على السياق عبر الطلبات.

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

يتمثل أحد خيارات التصميم العملية داخل هذه الأداة في الرجوع إلى إرجاع جميع المستندات إذا لم يكن هناك أي شيء يطابق الموضوع المطلوب بشكل كافٍ. بدلاً من ترك الوكيل دون أي معلومات على الإطلاق، يُفضّل تزويده بسياق وافٍ ليختار النموذج أفضل المعلومات بدلاً من تركه يتخبط في فراغ. يظهر نمط "الخيار الآمن" هذا بكثرة في تطبيقات الوكلاء القوية.

ثم يقوم برنامج SupportAgentFactory بربط كل شيء معًا عن طريق أخذ AzureOpenAIClientاستخراج برنامج الدردشة عبر GetChatClient()، وتكييفه مع AsIChatClient() ثم تحويله إلى AIAgent مع AsAIAgent(). خلال هذه الخطوة الأخيرة، تُصبح الأدوات والتعليمات المُسجلة جزءًا من إعدادات الوكيل المُستخدمة في كل محادثة. عادةً ما يتم تسجيل هذا الوكيل المُنشأ ككائن وحيد في حاوية حقن التبعية (DI) ليتمكن من خدمة العديد من الجلسات في وقت واحد.

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

واجهة برمجة التطبيقات في Program.cs يتم الحفاظ على البساطة عن قصد: منشور واحد /chat نقطة نهاية تقبل معرف الجلسة ورسالة المستخدم. يقوم معالج الطلب بتحميل الجلسة أو إنشائها، ثم يُنفذ الوكيل، ويُسلسل الجلسة المُحدثة بشكل غير متزامن (لاحظ أن SerializeSessionAsync في الإصدار التجريبي الأول (RC1)، تُعتبر هذه العملية غير متزامنة (على الرغم من أن الوثائق السابقة أشارت إلى خلاف ذلك)، حيث يتم حفظها وإعادة رد المساعد إلى العميل. من وجهة نظر واجهة المستخدم، فإن "البقاء في نفس المحادثة" يعني ببساطة إرسال نفس مُعرّف الجلسة في كل مكالمة.

عند تشغيل واجهة برمجة التطبيقات (API) والتواصل معها، يمكنك مشاهدة الوكيل وهو ينقل السياق بين الأدوار تمامًا مثل ممثل الدعم البشري. قد تصف الرسالة الأولى مشكلة في تسجيل الدخول؛ ويمكن أن يشير السؤال الثاني، الذي يتم إرساله بنفس معرف الجلسة، إلى "هذا الخطأ مرة أخرى" دون إعادة ذكر التفاصيل الكاملة، ومع ذلك لا يزال الوكيل يجيب بشكل متماسك لأن الحالة مرتبطة بمتجر الجلسة.

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

سير العمل، وأنماط التنسيق، والتعاون بين عدة جهات فاعلة

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

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

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

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

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

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

الاختبار، والمراقبة، والتحكم في التكاليف، والأمن

إن إطلاق وكلاء الذكاء الاصطناعي في بيئة الإنتاج دون خطة للاختبار والمراقبة والتكلفة والأمان هو وصفة لمفاجآت غير سارة. يجب أن يمتد نفس الصرامة التي تطبقها على أي خدمة .NET مهمة إلى طبقة الوكيل الخاصة بك، ولكن مع تكييفها مع الطبيعة الاحتمالية لـ LLMs.

ابدأ باختبار الأدوات ومسارات التنسيق باستخدام اختبارات الوحدة والتكامل الكلاسيكية قبل القلق بشأن سلوك النموذج. ينبغي أن تكون كل دالة C# يمكن للوكيل استدعاؤها قابلة للاختبار بشكل مستقل، مع مدخلات ومخرجات محددة. ثم صمم نصوص محادثة مضبوطة تُغطي مسارات التفاعل الكاملة، مع التحقق ليس فقط من الإجابة النهائية، بل أيضًا من الأدوات التي تم استدعاؤها وكيفية تطور الحالة.

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

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

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

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

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

يمكن للأدوات المتكاملة مثل مجموعة أدوات الذكاء الاصطناعي وامتدادات Azure AI Foundry لبرنامج Visual Studio Code أن تبسط جزءًا كبيرًا من دورة الحياة هذه. من داخل المحرر، يمكنك استكشاف كتالوجات النماذج، ونشر النماذج المستضافة على GitHub أو النماذج المحلية عبر Ollama، ومقارنة المخرجات جنبًا إلى جنب، وبناء وتشغيل أدوات التقييم، وعرض النتائج في Data Wrangler، وتصميم الوكلاء باستخدام مطالبات النظام، وربط خوادم MCP لتكامل الأدوات وتصحيح تفاعلات الوكلاء. يضيف Azure AI Foundry مصممين مرئيين، ومزامنة YAML، وتوليد التعليمات البرمجية للوصول إلى نماذج Azure، وتكاملًا سلسًا لأدوات مثل Bing Search ومفسرات التعليمات البرمجية.

عندما تجمع هذه المكونات - بنية وكيل صلبة، وإدارة حالة مدروسة، وأدوات قوية، وسير عمل قائم على الرسم البياني عند الحاجة، وإمكانية مراقبة عميقة ونشر أصلي للسحابة - ستحصل على وكلاء ذكاء اصطناعي مكتوبين بلغة C# ليسوا مجرد عروض توضيحية ذكية، بل أجزاء موثوقة من أنظمة المؤسسات الأكبر. بفضل التصميم الدقيق والاستخدام الصحيح لمساعدي Azure OpenAI وإطار عمل Microsoft Agent، يمكن لهؤلاء الوكلاء تحسين الكفاءة وجودة المعلومات والأتمتة بشكل ملموس في جميع أنحاء مؤسستك مع الحفاظ على قابليتهم للصيانة وأمانهم.

API
مقالة ذات صلة:
تطور واجهة برمجة التطبيقات (API): آفاق جديدة في التكامل والأمان والذكاء الاصطناعي الوكيل
الوظائف ذات الصلة: