پورتال کاج

واژه پرتال به معنی دروازه یا محل ورود به یک شهرمی باشد و تا بحال بیشترین کاربرد را در حوزه IT داشته است. طبق تعاریفی که تا بحال ارائه شده است، پرتال را می توان یک مرکز ارائه خدمات و اطلاعات اینترنتی دانست

افزونه‌های هوش مصنوعی و داده‌های وکتور اکنون به صورت عمومی در دسترس هستند (.NET)


مقدمه چند ماه پیش، اولین نسخه‌های پیش‌نمایش افزونه‌های هوش مصنوعی و داده‌های وکتور را معرفی کردیم؛ این‌ها کتابخانه‌های قدرتمند .NET هستند که برای ساده‌سازی کار با مدل‌های هوش مصنوعی و مخازن وکتور طراحی شده‌اند. از آن زمان، با همکاری نزدیک با شرکا و جامعه توسعه‌دهندگان، این کتابخانه‌ها را بهبود بخشیده‌ایم، API‌ها را پایدار کرده‌ایم و بازخوردهای ارزشمند را اعمال کرده‌ایم. امروز، با هیجان اعلام می‌کنیم که این افزونه‌ها اکنون به صورت عمومی در دسترس هستند و یک زیربنای قوی برای توسعه‌دهندگان فراهم می‌کنند تا برنامه‌های کاربردی مبتنی بر هوش مصنوعی را به صورت مقیاس‌پذیر، قابل نگهداری و سازگار بسازند.

افزونه‌های هوش مصنوعی و داده‌های وکتور چه هستند؟ افزونه‌های هوش مصنوعی و داده‌های وکتور مجموعه‌ای از کتابخانه‌های .NET هستند که انتزاعات و ابزارهای مشترکی را برای کار با مدل‌های هوش مصنوعی و مخازن وکتور ارائه می‌دهند. این کتابخانه‌ها به صورت پکیج‌های NuGet در دسترس هستند:

  • Microsoft.Extensions.AI.Abstractions: انواع و انتزاعات مشترک برای مدل‌های هوش مصنوعی را تعریف می‌کند.
  • Microsoft.Extensions.AI: ابزارهای کمکی افزونه هوش مصنوعی.
  • Microsoft.Extensions.VectorData.Abstractions: انواع تبادل و انتزاعات برای مخازن وکتور را فراهم می‌کند.

این پکیج‌ها به عنوان بلوک‌های سازنده اساسی برای کامپوننت‌های سطح بالاتر عمل می‌کنند و موارد زیر را ترویج می‌دهند:

  • قابلیت همکاری (Interoperability): کتابخانه‌ها می‌توانند با هدف قرار دادن انتزاعات یکسان، راحت‌تر با یکدیگر کار کنند.
  • قابلیت توسعه (Extensibility): توسعه‌دهندگان می‌توانند بر اساس انواع مشترک، قابلیت‌های جدیدی اضافه کنند.
  • سازگاری (Consistency): یک مدل برنامه‌نویسی یکپارچه در پیاده‌سازی‌های مختلف، پیچیدگی یکپارچه‌سازی را کاهش می‌دهد.

چرا این انتزاعات را هدف قرار دهیم؟ اگر در حال ساخت یک کتابخانه هستید، مستقل ماندن از سیستم‌های هوش مصنوعی یا وکتور خاص بسیار مهم است. با وابستگی تنها به این انتزاعات مشترک، شما مصرف‌کنندگان خود را در ارائه‌دهندگان خاصی قفل نمی‌کنید و مطمئن می‌شوید که کتابخانه شما می‌تواند با دیگران همکاری کند. این امر انعطاف‌پذیری و سازگاری گسترده‌ای را در اکوسیستم ارتقا می‌دهد.

اگر در حال ساخت یک برنامه کاربردی هستید، آزادی بیشتری برای انتخاب پیاده‌سازی‌های مشخص دارید. در عمل این به چه معناست؟ ارائه‌دهندگان می‌توانند این انتزاعات را پیاده‌سازی کنند تا به راحتی با اکوسیستم یکپارچه شوند. نویسندگان کتابخانه باید بر اساس این انتزاعات بسازند تا قابلیت ترکیب‌پذیری را فعال کرده و مصرف‌کنندگان را مجبور به انتخاب ارائه‌دهنده نکنند. توسعه‌دهندگان برنامه از یک API یکپارچه بهره‌مند می‌شوند که تغییر یا ترکیب ارائه‌دهندگان را بدون تغییرات عمده در کد آسان‌تر می‌کند.

سناریوها و موارد استفاده کلیدی افزونه‌های هوش مصنوعی و داده‌های وکتور بلوک‌های سازنده ضروری را فراهم می‌کنند که پیاده‌سازی قابلیت‌های پیشرفته هوش مصنوعی را در برنامه‌های کاربردی شما آسان‌تر می‌کنند. با ارائه انتزاعات سازگار برای ویژگی‌هایی مانند خروجی ساختاریافته، فراخوانی ابزار، و قابلیت مشاهده، این کتابخانه‌ها به شما امکان می‌دهند راه‌حل‌های قوی، قابل نگهداری و آماده تولید را مطابق با نیازهای خاص خود بسازید. در ادامه نمونه‌هایی از سناریوهای رایج آورده شده است که در آنها این بلوک‌های سازنده برای تقویت برنامه‌های کاربردی مبتنی بر هوش مصنوعی در دنیای واقعی با هم ترکیب می‌شوند.

 

 

 

قابلیت حمل بین ارائه‌دهندگان مدل و مخزن وکتور چه از ارائه‌دهندگان مدل‌های مختلف برای توسعه محلی و تولید استفاده کنید، یا عامل‌هایی بسازید که به مدل‌های مختلفی وابسته هستند، افزونه‌های هوش مصنوعی و داده‌های وکتور مجموعه‌ای سازگار از APIها را در سراسر محیط‌ها ارائه می‌دهند. به لطف اکوسیستم در حال رشد پکیج‌های رسمی و جامعه‌محور که این انتزاعات را پیاده‌سازی می‌کنند، یکپارچه‌سازی مدل‌ها و پایگاه‌های داده وکتور در برنامه‌های کاربردی شما آسان است.

در ادامه مثالی از نحوه تغییر بین ارائه‌دهندگان بر اساس محیط، در حالی که کد شما تمیز و سازگار باقی می‌ماند، آورده شده است: (نمونه کدی در اینجا نمایش داده شده است که نحوه سوئیچ بین کلاینت‌های مختلف هوش مصنوعی و ژنراتورهای Embeding را بر اساس محیط نشان می‌دهد.)

افزودن تدریجی قابلیت‌ها استفاده از مدل‌های هوش مصنوعی فقط شروع کار است. ساخت برنامه‌های کاربردی در سطح تولید به ثبت وقایع (logging)، کش‌کردن (caching) و قابلیت مشاهده از طریق ابزارهایی مانند OpenTelemetry نیاز دارد. افزونه‌های هوش مصنوعی این نیازها را از همان ابتدا پشتیبانی می‌کنند. آنها به طور یکپارچه با اصول اولیه .NET موجود ادغام می‌شوند و به شما امکان می‌دهند ILogger، IDistributedCache و ابزارهای سازگار با OpenTelemetry خود را بدون نیاز به اختراع دوباره چرخ، وصل کنید.

در ادامه مثالی ساده از نحوه فعال‌سازی این ویژگی‌ها آورده شده است: (نمونه کدی در اینجا نمایش داده شده است که نحوه افزودن logging، caching و OpenTelemetry را به ChatClient نشان می‌دهد.)

کنترل بیشتر؟ افزونه‌ها کاملاً قابل توسعه هستند. می‌توانید منطق سفارشی—مانند محدودیت نرخ (rate limiting)—را مستقیماً در خط لوله تزریق کنید. (نمونه کدی در اینجا نمایش داده شده است که نحوه افزودن محدودیت نرخ به ChatClient را نشان می‌دهد.)

مدیریت محتوای مختلف و ساختاردهی خروجی آن‌ها مدل‌های هوش مصنوعی مولد می‌توانند بیش از متن را پردازش کنند؛ آن‌ها قادر به مدیریت تصاویر، صدا و انواع دیگر داده‌ها نیز هستند. برای پشتیبانی از این قابلیت، افزونه‌های هوش مصنوعی ابزارهای اولیه انعطاف‌پذیری برای نمایش فرمت‌های داده متنوع ارائه می‌دهند.

یکی از چالش‌های رایج این است که خروجی مدل‌ها اغلب بدون ساختار است که یکپارچه‌سازی با برنامه شما را دشوارتر می‌کند. خوشبختانه، بسیاری از مدل‌ها اکنون از خروجی ساختاریافته پشتیبانی می‌کنند—ویژگی‌ای که در آن پاسخ‌ها طبق یک طرح از پیش تعریف شده، مانند JSON، قالب‌بندی می‌شوند. این امر قابلیت اطمینان و پیش‌بینی‌پذیری را به پاسخ‌های مدل اضافه می‌کند و یکپارچه‌سازی را ساده می‌کند.

افزونه‌های هوش مصنوعی برای کار یکپارچه با خروجی‌های ساختاریافته طراحی شده‌اند و نقشه‌برداری مستقیم پاسخ‌های مدل به انواع C# شما را آسان می‌کنند. (نمونه کدی در اینجا نمایش داده شده است که نحوه پردازش یک رسید با محتوای متنی و تصویری و دریافت خروجی ساختاریافته (JSON) را نشان می‌دهد.)

فراخوانی ابزار (Tool Calling) مدل‌های هوش مصنوعی می‌توانند داده‌ها را پردازش کرده و زبان طبیعی را درک کنند، اما نمی‌توانند به تنهایی عملیاتی را انجام دهند. برای انجام یک اقدام معنادار، آنها به دسترسی به ابزارها و سیستم‌های خارجی نیاز دارند. اینجاست که "فراخوانی ابزار" وارد می‌شود—قابلیتی که توسط بسیاری از مدل‌های هوش مصنوعی مولد مدرن پشتیبانی می‌شود و به آنها اجازه می‌دهد توابع را بر اساس قصد کاربر فراخوانی کنند. مشابه خروجی ساختاریافته، افزونه‌های هوش مصنوعی استفاده از این قابلیت را در برنامه‌های شما آسان می‌کنند.

در این مثال، متد CalculateTax به عنوان یک تابع قابل فراخوانی توسط هوش مصنوعی ثبت شده است. مدل می‌تواند به طور خودکار بر اساس درخواست کاربر، زمان فراخوانی آن را تعیین کند. اگر به کنترل بیشتری بر این رفتار نیاز دارید، می‌توان آن را به راحتی پیکربندی کرد. (نمونه کدی در اینجا نمایش داده شده است که نحوه ثبت یک تابع (CalculateTax) و استفاده از آن توسط مدل هوش مصنوعی را برای محاسبه مالیات نشان می‌دهد.)

تولید Embeding ساده‌تر جستجوی معنایی—و به تبع آن، تولید مبتنی بر بازیابی (RAG)—یک الگوی قدرتمند برای ساخت برنامه‌های هوشمند است. در حالی که وظایف اصلی، مانند تولید Embeding، از نظر مفهومی ساده هستند، اما اغلب شامل کد تکراری و boilerplate (کد تکراری و پیش‌پاافتاده) هستند. در قلب این الگو، پایگاه‌های داده وکتور قرار دارند که نمایش‌های عددی داده‌ها (به نام Embeding) را ذخیره می‌کنند و امکان جستجوی سریع شباهت را فراهم می‌کنند.

آنها به برنامه‌ها اجازه می‌دهند اطلاعات مرتبط از نظر معنایی را بازیابی کنند—نه فقط تطابق دقیق کلمات کلیدی—که آنها را برای کارهایی مانند جستجو، پاسخ به سؤالات و توصیه‌ها ضروری می‌سازد. افزونه‌های هوش مصنوعی و داده‌های وکتور برای ساده‌سازی این فرآیند با کار یکپارچه با یکدیگر طراحی شده‌اند. هنگامی که یک مخزن وکتور را با یک ژنراتور Embeding ترکیب می‌کنید، افزونه‌ها نقشه‌برداری مستقیم مدل‌های داده C# موجود شما به مخزن وکتور را آسان می‌کنند.

این انتزاعات بخش زیادی از boilerplate را حذف می‌کنند، بنابراین می‌توانید بر روی منطق برنامه خود تمرکز کنید—نه جزئیات زیرساخت. و از آنجایی که اینها فقط انتزاعات هستند، ذاتاً ماژولار هستند. می‌توانید ارائه‌دهنده مخزن وکتور یا Embeding را بدون تغییر منطق برنامه خود تعویض کنید—که سازگاری با ابزارهای جدید یا مقیاس‌گذاری با تکامل نیازهای شما را آسان می‌کند.

در مثال زیر، متن ساده ارائه می‌دهیم. افزونه‌ها بقیه کار را انجام می‌دهند—به طور خودکار Embeding را با استفاده از ژنراتور پیکربندی شده تولید می‌کنند و آن را در فیلد وکتور مناسب ذخیره می‌کنند، همه اینها با حداقل کد. (نمونه کدی در اینجا نمایش داده شده است که نحوه ذخیره متن در یک مخزن وکتور و تولید خودکار Embeding را نشان می‌دهد.)

قابلیت‌های جستجوی قدرتمند بسته به سناریو و مدل داده شما، ممکن است به قابلیت‌های جستجوی پیشرفته‌تری نیاز داشته باشید. انتزاعات داده وکتور طیف وسیعی از ویژگی‌های جستجوی قدرتمند—از جمله معیارهای شباهت چندگانه، جستجوی وکتور، جستجوی ترکیبی و فیلترینگ—را پشتیبانی می‌کنند.

درست مانند تولید Embeding، فرآیند پرس‌وجو ساده شده است. می‌توانید متن ساده را ارسال کنید، و انتزاعات تولید Embeding، اعمال معیار شباهت مناسب و بازیابی مرتبط‌ترین نتایج را انجام می‌دهند. فیلترینگ نیز داخلی است و برای حس آشنا طراحی شده است. عبارات فیلتر از سینتکسی مشابه Predicateهای LINQ استفاده می‌کنند، بنابراین می‌توانید از مهارت‌های C# موجود خود بدون نیاز به یادگیری یک زبان پرس‌وجوی جدید استفاده کنید.

در مثال زیر، در حال جستجوی محصولاتی هستیم که با یک پرس‌وجوی زبان طبیعی مطابقت دارند و توسط "tenant" فیلتر شده‌اند: (نمونه کدی در اینجا نمایش داده شده است که نحوه جستجو در مخزن وکتور با فیلترینگ بر اساس ویژگی‌ها را نشان می‌دهد.)

یکپارچه‌سازی آسان با پیکربندی‌های تزریق وابستگی (Dependency Injection) موجود شما برنامه‌های کاربردی مدرن .NET برای مدیریت پیکربندی و طول عمر سرویس‌ها به تزریق وابستگی (DI) متکی هستند—و افزونه‌های هوش مصنوعی و داده‌های وکتور برای هماهنگی با این مدل ساخته شده‌اند. چه در حال سیم‌کشی کامپوننت‌ها برای توسعه محلی باشید و چه سرویس‌ها را برای تولید پیکربندی کنید، افزونه‌ها به طور تمیز در کانتینر DI موجود شما ثبت می‌شوند. این بدان معناست که می‌توانید کامپوننت‌های هوش مصنوعی را دقیقاً مانند هر بخش دیگری از برنامه خود ترکیب و پیکربندی کنید. (نمونه کدی در اینجا نمایش داده شده است که نحوه ثبت سرویس‌های AI و Vector Data Extensions در سیستم تزریق وابستگی .NET را نشان می‌دهد.)

یک اکوسیستم رو به رشد پذیرش این افزونه‌ها قوی بوده و در سراسر اکوسیستم در حال رشد است. تنها در چند ماه، این افزونه‌ها از ۳ میلیون دانلود فراتر رفته‌اند، با تقریباً ۱۰۰ پکیج عمومی NuGet که مجموعاً به آن‌ها وابسته هستند. ما شاهد پذیرش در طیف گسترده‌ای از پروژه‌های رسمی و جامعه‌محور هستیم، از جمله:

  • کتابخانه‌ها: Model Context Protocol (MCP)، AI Evaluations، Pieces Agent Frameworks
  • فریم‌ورک‌ها: Semantic Kernel، AutoGen
  • پلی‌گراندها: AI Dev Gallery
  • SDKهای ارائه‌دهنده: Azure OpenAI، OllamaSharp، Anthropic، Google، HuggingFace، Sqlite، Qdrant، CosmosDB، AzureSQL
  • کامپوننت‌های رابط کاربری: DevExpress، Syncfusion، Progress Telerik

در ادامه، برخی از این یکپارچه‌سازی‌ها را با جزئیات بیشتر برجسته می‌کنیم.

SDK سی‌شارپ Model Context Protocol (MCP) MCP یک استاندارد باز است که به عنوان یک آداپتور جهانی برای مدل‌های هوش مصنوعی عمل می‌کند. این امکان را فراهم می‌کند که مدل‌ها از طریق یک رابط سازگار و استاندارد با منابع داده خارجی، ابزارها و APIها تعامل داشته باشند. این کار با اجازه دادن به مدل‌ها برای فراخوانی توابع یا دسترسی به داده‌ها بدون نیاز به کد سفارشی برای هر سرویس، یکپارچه‌سازی را ساده می‌کند. ما با Anthropic همکاری کردیم تا یک SDK رسمی MCP C# ارائه دهیم. این SDK که بر اساس انتزاعات مشترک هوش مصنوعی مانند AIContent، AIFunction و غیره ساخته شده است، به کلاینت‌ها و سرورهای MCP امکان می‌دهد تا به راحتی ابزارها را تعریف کرده و با استفاده از پیاده‌سازی‌های IChatClient آن‌ها را فراخوانی کنند. (نمونه کدی در اینجا نمایش داده شده است که نحوه استفاده از MCP Client برای فراخوانی ابزارها را نشان می‌دهد.)

ارزیابی‌ها (Evaluations) ارزیابی‌ها نقش مهمی در ساخت برنامه‌های هوش مصنوعی قابل اعتماد با کمک به اطمینان از ایمنی، قابلیت اطمینان و همسویی با رفتار مورد نظر ایفا می‌کنند. آنها به توسعه‌دهندگان اجازه می‌دهند تا مدل‌های هوش مصنوعی را به طور سیستماتیک در برابر سناریوهای واقعی و استانداردهای کیفیت آزمایش و اعتبارسنجی کنند. مجموعه کتابخانه‌های .NET AI Evaluation بر روی افزونه‌های هوش مصنوعی ساخته شده است تا ابزارهای ارزیابی قدرتمندی ایجاد کند که به طور یکپارچه در گردش کار توسعه شما ادغام می‌شوند و امکان نظارت و بهبود مستمر سیستم‌های هوش مصنوعی شما را فراهم می‌کنند. برای بررسی عمیق‌تر این قابلیت‌های ارزیابی و دیدن مثال‌های عملی، به پست‌های وبلاگ زیر مراجعه کنید:

Progress Telerik از زمان راه‌اندازی ChatGPT، چت به روش اصلی تعامل کاربران با مدل‌های زبانی تبدیل شده است. برای ارائه تجربه‌ای مشابه در برنامه‌های خود، توسعه‌دهندگان اغلب مجبور به ساخت کامپوننت‌های رابط کاربری چت سفارشی از ابتدا بوده‌اند. Telerik با ارائه مجموعه‌ای از کامپوننت‌های رابط کاربری چت آماده استفاده برای Blazor، این کار را بسیار آسان‌تر کرده است. این کامپوننت‌ها فرآیند افزودن رابط‌های مکالمه‌ای به برنامه‌های وب را ساده می‌کنند. راه‌حل Telerik که بر اساس افزونه‌های هوش مصنوعی ساخته شده است، همچنین به توسعه‌دهندگان اجازه می‌دهد تا بین ارائه‌دهندگان مدل‌های مختلف با حداقل تغییرات کد جابجا شوند—که آن را هم انعطاف‌پذیر و هم آینده‌نگر می‌سازد. (یک ویدیوی دمو در مقاله اصلی موجود است.)

Semantic Kernel Semantic Kernel کامپوننت‌های سطح بالایی را ارائه می‌دهد که یکپارچه‌سازی هوش مصنوعی در برنامه‌های کاربردی شما را آسان‌تر می‌کنند. ما وارد عصر عامل‌محور شده‌ایم—جایی که عامل‌های هوش مصنوعی برای انجام مؤثر وظایف به مدل‌ها، داده‌ها و ابزارها دسترسی دارند. با Semantic Kernel، می‌توانید عامل‌ها را با استفاده از همان ابزارهای اولیه افزونه هوش مصنوعی که قبلاً با آنها آشنا هستید، مانند IChatClient، بسازید. در اینجا مثالی از نحوه استفاده از IChatClient به عنوان پایه و اساس یک عامل در Agent Framework سیمانتیک کرنل آورده شده است: (نمونه کدی در اینجا نمایش داده شده است که نحوه استفاده از IChatClient در Semantic Kernel برای ساخت یک عامل چت را نشان می‌دهد.)

این فقط یک مثال ساده است. برای نگاهی عمیق‌تر به نحوه ساخت Semantic Kernel بر اساس افزونه‌های هوش مصنوعی، پست زیر را بررسی کنید. Semantic Kernel همچنین مجموعه‌ای یکپارچه از کانکتورها برای پایگاه‌های داده وکتور را ارائه می‌دهد که بر اساس افزونه‌های داده وکتور ساخته شده‌اند. این کانکتورها با ارائه یک مدل برنامه‌نویسی سازگار، یکپارچه‌سازی را ساده می‌کنند. برای جزئیات بیشتر، این پست را در مورد نحوه ساخت کانکتورهای Semantic Kernel با استفاده از افزونه‌های داده وکتور بررسی کنید.

AI Dev Gallery AI Dev Gallery یک برنامه ویندوز است که به عنوان یک فضای بازی جامع برای توسعه هوش مصنوعی با .NET عمل می‌کند. این برنامه همه چیزهایی را که برای کاوش، آزمایش و پیاده‌سازی ویژگی‌های هوش مصنوعی در برنامه‌های خود نیاز دارید—کاملاً آفلاین، بدون وابستگی به سرویس‌های ابری—ارائه می‌دهد. (یک ویدیوی دمو در مقاله اصلی موجود است.)

AI Dev Gallery بر اساس افزونه‌های هوش مصنوعی و داده‌های وکتور ساخته شده است و یک پایه محکم برای یکپارچه‌سازی مدل و داده فراهم می‌کند. همچنین از موارد زیر بهره می‌برد:

  • Microsoft.ML.Tokenizers: برای پیش‌پردازش و توکن‌سازی کارآمد متن.
  • System.Numerics.Tensors: برای پردازش با عملکرد بالا خروجی مدل‌ها. این کامپوننت‌ها در کنار هم، AI Dev Gallery را به ابزاری قدرتمند برای آزمایش و توسعه محلی هوش مصنوعی از ابتدا تا انتها تبدیل می‌کنند. برای کسب اطلاعات بیشتر در مورد AI Dev Gallery، به پست وبلاگ زیر مراجعه کنید.

امروز شروع کنید برای شروع کار با افزونه‌های هوش مصنوعی و داده‌های وکتور، قالب‌های هوش مصنوعی .NET را امتحان کنید. حتماً مستندات را برای کسب اطلاعات بیشتر بررسی کنید. ما بی‌صبرانه منتظریم تا ببینیم چه چیزی می‌سازید.


منبع: AI and Vector Data Extensions are now Generally Available (GA)