ما اخیراً سیستمهای AI خودمون رو به MAF منتقل کردیم و واقعاً فوقالعاده بوده!
این جمله واسه من نیست. کامنت @CrystaCode تویOn .NET Live بود :) البته من ترجمش رو گذاشتم اینجا...
در این ویدیو Daniel Costea، در مورد ساختار Middleware ها در Microsoft Agentic Framework صحبت میکند.
او Middlewareها را به سه نوع تقسیم میکند و با مدل ذهنی prepare → handle → invoke توضیح میدهد؛ مدلی که برای هر کسی که قبلاً با Middleware در ASP.NET Core کار کرده، کاملاً آشناست:
اولین مورد Shared Function Middleware نزدیکترین لایه به Request است. این Middleware از یک pipeline استفاده میکند و میتواند پیامهای ورودی را بررسی و فیلتر کند، اما Response را نمیبیند.
به همین دلیل جای مناسبی برای Guardrailهای ورودی محسوب میشود؛ مثلاً حذف اطلاعات شخصی (PII) یا آدرس ایمیل قبل از اینکه اصلاً به مدل ارسال شوند.
دومین Response Middleware یک قدم فراتر میرود. در حالی که همچنان مثل یک pipeline عمل میکند، میتواند Response کامل را هم ببیند و حتی تغییرش دهد.
اینجا جایی است که میشود مشکلاتی مثل مصرف بیشازحد Token را تشخیص داد و قبل از اینکه یک Call هزینه غیرضروری ایجاد کند، جلوی ادامه آن را گرفت. مثلا میشه Token Usage را هم بررسی و ذخیره کرد.
و در آخر Function Calling Middleware هم Tool Callها را با دسترسی کامل به Conversation History بررسی میکند.
در نتیجه، قبل از اجرای یک Tool میتواند یک Invocation پرریسک را Block کند، محدود کند یا حتی تغییر دهد. در Demo همین قابلیت باعث شد Agent مربوط به یک ماشین رباتیک، مستقیم با دنده عقب به دیوار برخورد نکند!
هرکدام از این Middlewareها میتوانند در دو لایه مختلف اجرا شوند:
در ChatClient که Identity ندارد و میتواند بین چند Agent به اشتراک گذاشته شود و Agent که Session و Identity خود را دارد.
در مجموع یعنی ۶ نقطه مختلف برای Hook کردن Middleware.
ترتیب Middlewareها هم اهمیت زیادی دارد. اگر ترتیب درست نباشد، ممکن است یک Middleware بیشتر از چیزی که انتظار دارید اجرا شود.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#حامد_حاجیلو (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______



