۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Semantic Kernel: پلی بین مدل های زبان بزرگ و کد شما

Semantic Kernel SDK مایکروسافت مدیریت پیام‌های پیچیده و دریافت نتایج متمرکز از مدل‌های زبان بزرگ مانند GPT را آسان‌تر می‌کند.

Semantic Kernel SDK مایکروسافت مدیریت پیام‌های پیچیده و دریافت نتایج متمرکز از مدل‌های زبان بزرگ مانند GPT را آسان‌تر می‌کند.

در نگاه اول، ساخت یک مدل زبان بزرگ (LLM) مانند GPT-4 در شما کد ممکن است ساده به نظر برسد. API یک تماس REST واحد است، متن را دریافت می‌کند و بر اساس ورودی، پاسخی را برمی‌گرداند. اما در عمل همه چیز بسیار پیچیده تر از این است. شاید بهتر باشد API به عنوان یک مرز دامنه در نظر گرفته شود، جایی که شما در حال ارائه درخواست هایی هستید که قالبی را که مدل برای ارائه خروجی استفاده می کند، تعریف می کند. اما این یک نکته مهم است: LLM ها می توانند به همان اندازه که شما می خواهید ساده یا پیچیده باشند.

وقتی یک مدل هوش مصنوعی را در کد خود ادغام می‌کنیم، از مرزی بین دو روش مختلف محاسبات عبور می‌کنیم، مانند روشی که در آن برنامه‌نویسی یک کامپیوتر کوانتومی شبیه طراحی سخت‌افزار است. در اینجا ما در حال نوشتن توضیحاتی در مورد نحوه رفتار یک مدل هستیم و انتظار داریم خروجی آن در قالب تعریف شده توسط دستورات ما باشد. همانطور که در محاسبات کوانتومی، که در آن ساختارهایی مانند زبان Q# پلی بین محاسبات معمولی و رایانه‌های کوانتومی ایجاد می‌کنند، ما به ابزارهایی برای بسته‌بندی APIهای LLM و ارائه راه‌هایی برای مدیریت ورودی‌ها و خروجی‌ها نیاز داریم که از باقی ماندن مدل‌ها اطمینان حاصل کنیم. بر روی اعلان‌هایی که تعریف کرده‌ایم تمرکز کرده و خروجی‌ها مرتبط باقی می‌مانند.

این یک نکته مهم برای استرس است: نحوه تعامل ما با LLM بسیار متفاوت از برنامه نویسی سنتی است. آنچه مورد نیاز است یک معادل Q# است، یک انتزاع سطح بالاتر که بین دامنه‌های مختلف ترجمه می‌شود، به ما کمک می‌کند داده‌ها را بگیریم و از آن‌ها برای ایجاد درخواست‌ها استفاده کنیم، در حالی که راهی برای مدیریت زمینه ضروری بین تماس‌ها فراهم می‌کند که از فرسودگی توکن‌های موجود در یک تماس جلوگیری می‌کند. مکالمه و در عین حال خروجی ها را در داده های منبع پایه نگه می دارد.

معرفی هسته معنایی

چند هفته پیش، من به اولین بسته LLM مایکروسافت نگاه کردم، منبع باز موتور اعلان. از آن زمان، مایکروسافت یک ابزار C# بزرگتر و قدرتمندتر برای کار با Azure OpenAI (و با APIهای خود OpenAI) منتشر کرده است، هسته معنایی. همچنین منبع باز است و در GitHub موجود است، همراه با مجموعه‌ای از نمونه برنامه های کاربردی برای کمک به شما برای شروع. یک نسخه Python از Semantic Kernel نیز در دست توسعه است.

آیا هوش مصنوعی مولد در فضای ابری مقرون به صرفه خواهد شد؟

انتخاب نام جالب است، زیرا درک بهتری از آنچه LLM برای چه استفاده می شود را نشان می دهد. در حالی که Prompt Engine در مورد مدیریت ورودی‌های APIها بود، کرنل معنایی وظایف گسترده‌تری دارد ، با تمرکز بر ورودی ها و خروجی های زبان طبیعی. مایکروسافت رویکرد خود را به‌عنوان «هدف‌گرا» توصیف می‌کند، با استفاده از درخواست اولیه از یک کاربر («پرسش») برای هدایت مدل، هماهنگ‌سازی از منابع مرتبط با مدل برای انجام درخواست، و بازگرداندن پاسخ به درخواست. “دریافت”).

بنابراین نامیدن کرنل معنایی یک هسته منطقی است. این مانند سیستم عاملی برای LLM API است که ورودی ها را می گیرد، آنها را پردازش می کند. با کار با مدل و برگرداندن خروجی. نقش هسته به‌عنوان ارکستراتور در اینجا کلیدی است، زیرا می‌تواند نه تنها با درخواست فعلی و نشانه‌های مرتبط با آن، بلکه با حافظه‌ها (جفت‌های کلید-مقدار، ذخیره‌سازی محلی، و بردار یا «معانی» کار کند. ” جستجو)، با اتصالات به سایر سرویس‌های اطلاعاتی، و با مهارت‌های از پیش تعریف‌شده که اعلان‌ها و کدهای معمولی را ترکیب می‌کند (به توابع LLM فکر کنید).

ابزار Semantic Kernel راه‌های مؤثرتری برای ساختن و استفاده از انواع ساختارهای مورد نیاز برای قرار دادن در Prompt Engine ارائه می‌کند، و کارهایی را که می‌تواند به وظایف برنامه‌نویسی کاملاً پیچیده تبدیل شوند، ساده‌تر می‌کند، به‌ویژه وقتی صحبت از مدیریت زمینه و پشتیبانی از اقداماتی است که شامل تماس‌های متعدد می‌شود. یک API LLM.

بردارها و حافظه معنایی

یک عنصر کلیدی در پردازش درخواست کاربر مفهوم خاطرات است. . اینگونه است که Semantic Kernel زمینه را مدیریت می کند و با فایل های آشنا و ذخیره سازی کلید-مقدار کار می کند. با این حال، یک گزینه سوم وجود دارد، حافظه معنایی. این رویکرد نزدیک به روشی است که یک LLM داده ها را پردازش می کند، درمان محتوا به عنوان بردارها یا جاسازی‌ها که آرایه‌هایی از اعداد هستند که LLM برای نشان دادن معانی یک متن استفاده می‌کند. متون مشابه دارای بردارهای مشابهی در فضای کلی مرتبط با مدل شما و محتوای آن خواهند بود، دقیقاً مانند روشی که یک موتور جستجو نتایج رتبه بندی شده را ایجاد می کند.

یک LLM مانند GPT از این بردارهای تعبیه شده برای استخراج متن یک اعلان استفاده می کند و به مدل زیربنایی کمک می کند تا ارتباط و انسجام را حفظ کند. هرچه جاسازی بهتر باشد، احتمال کمتری دارد که یک مدل خروجی صرفاً تصادفی تولید کند. با تقسیم اعلان‌های بزرگ به بلوک‌های متنی که می‌توانند توسط یک LLM خلاصه شوند، می‌توانیم یک بردار جاسازی برای هر خلاصه ایجاد کنیم، و سپس از آن‌ها برای ایجاد اعلان‌های پیچیده بدون اتمام توکن‌های موجود برای یک درخواست استفاده کنیم (GPT-4 دارای محدودیت است. مثلاً از ۸۱۹۲ توکن در هر ورودی).

3 بهترین روش امنیتی برای همه تیم های DevSecOps

این داده ها را می توان در یک پایگاه داده برداری برای بازیابی سریع ذخیره کرد. پایگاه‌های داده برداری خاصی را می‌توان برای دانش تخصصی، با استفاده از محتوای خلاصه‌شده برای کمک به حفظ LLM در مسیر ایجاد کرد. بنابراین، برای مثال، برنامه‌ای که از GPT-4 برای خلاصه‌های یادداشت‌های پزشکی استفاده می‌کند، می‌تواند از یک پایگاه داده برداری از جاسازی‌ها از مقالات پزشکی، یادداشت‌های ناشناس مناسب و سایر متون مرتبط استفاده کند تا اطمینان حاصل کند که خروجی آن منسجم و در متن است. این رویکرد تا حدودی توضیح می دهد که چرا اولین برنامه بزرگ مبتنی بر GPT مایکروسافت موتور جستجوی Bing آن است، زیرا از قبل پایگاه داده برداری مناسبی را برای استفاده آماده کرده است.

اتصال به منابع داده خارجی

کانکتورها یکی از ویژگی‌های جالب هسته معنایی هستند، زیرا آنها راهی برای ادغام APIهای موجود با LLMها هستند. به عنوان مثال، می توانید از یک رابط Microsoft Graph برای ارسال خودکار خروجی یک درخواست در یک ایمیل یا برای ایجاد شرحی از روابط در نمودار سازمانی خود استفاده کنید. هیچ نقطه تنظیمی در برنامه Semantic Kernel برای برقراری تماس وجود ندارد. این می تواند بخشی از یک ورودی، یا یک خروجی، یا حتی بخشی از دنباله ای از تماس ها به و از LLM باشد. می‌توانید از فراخوان‌های API درخواست‌هایی بسازید که خودشان فراخوان‌های API بیشتری را ایجاد کنند، شاید با استفاده از یک مدل مبتنی بر کد Codex برای تزریق خروجی حاصل به زمان اجرا.

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

ایجاد مهارت برای ترکیب الگوها و کدهای سریع

سومین مؤلفه اصلی هسته معنایی مهارت‌ها است، که محفظه هایی از توابع هستند که اعلان های LLM و کدهای معمولی را ترکیب می کنند. این توابع از نظر مفهوم و عملکرد مشابه توابع Azure هستند و می‌توانند برای زنجیره‌ای کردن اعلان‌های تخصصی مورد استفاده قرار گیرند. یک برنامه می تواند مجموعه ای از توابع داشته باشد که متن را با استفاده از GPT تولید می کند، سپس از آن متن به عنوان یک درخواست برای Codex و DALL-E استفاده می کند تا از یک توضیحات به یک برنامه وب نمونه اولیه بروند (مشابه نحوه عملکرد ابزارهای برنامه نویسی زبان طبیعی در شرایط پایین مایکروسافت -code و no-code Power Platform).

Docker Desktop به لینوکس می آید و SDK را اضافه می کند

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

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

استفاده از ابزاری مانند Semantic Kernel برای مارشال و هماهنگ کردن ورودی‌ها و توابع مطمئناً کار با LLM را بسیار مؤثرتر از ارسال یک اعلان به یک ورودی می‌کند. به شما این امکان را می دهد که ورودی ها را تمیز کنید و LLM را برای تولید خروجی های مفید راهنمایی کنید. برای کمک به شما در شروع کار، مایکروسافت فهرستی از دستورالعمل‌های بهترین عملکرد را ارائه می‌کند (شیلاس قوانین هوش مصنوعی معنایی) از ساخت برنامه های LLM در سراسر تجارت خود آموخت. آنها یک آغازگر مفید برای نحوه ایجاد کد در اطراف LLMهایی مانند GPT هستند، و باید به شما کمک کنند تا بیشترین ارزش ممکن را از این ابزارها و تکنیک های جدید دریافت کنید، در حالی که از انتظارات غیر واقعی دوری کنید.