Plugins در مقابل Planners
Plugin در Semantic Kernel یک مجموعه از توابع مشخص (کد C#/Python یا پرامپت) است که مدل میتواند مستقیماً فراخوانی کند، در حالی که Planner جزئی از Kernel است که بر اساس یک هدف کلی، خودش تصمیم میگیرد چه ترتیبی از Plugin ها را برای رسیدن به آن هدف فراخوانی کند.
| ویژگی | Plugins | Planners |
|---|---|---|
| نقش | ارائه یک قابلیت مشخص | تعیین ترتیب اجرای Plugin ها |
| فراخوانی | مستقیم توسط مدل | خودکار بر اساس هدف کلی |
| وابستگی | مستقل | به کیفیت توضیح Plugin ها |
کِی از Plugins استفاده کنیم؟
وقتی میخواهید یک قابلیت مشخص و مستقل (مثل گرفتن آبوهوا یا محاسبه) را در اختیار مدل قرار دهید.
کِی از Planners استفاده کنیم؟
وقتی هدف پیچیده است و نیاز دارید Kernel خودش مسیر رسیدن به هدف را از میان چند Plugin موجود کشف و اجرا کند.
مثال Plugins
kernel.Plugins.AddFromType<WeatherPlugin>();
kernel.Plugins.AddFromType<EmailPlugin>();
// هر دو Plugin بهصورت مستقیم قابل فراخوانیاند
مثال Planners
var planner = new FunctionCallingStepwisePlanner();
var result = await planner.ExecuteAsync(kernel,
"هوای تهران را بگیر و برای من ایمیل کن");
// Planner خودش ترتیب فراخوانی Plugin ها را تعیین میکند
اشتباه رایج
اشتباه رایج تعریف Plugin های بسیار مبهم یا با توضیحات ضعیف است؛ چون Planner برای تصمیمگیری درباره ترتیب فراخوانی کاملاً به توضیح (Description) هر Plugin وابسته است، توضیح ناقص باعث انتخاب نادرست یا شکست برنامهریزی میشود.
جمعبندی
برای فراخوانی مستقیم و مشخص یک قابلیت از Plugin و برای رسیدن خودکار به یک هدف کلی از میان چند Plugin از Planner استفاده کنید.
