(برای دیدن ویدیوی این درس روی تصویر بالا کلیک کنید)
درک پیچیدگی برنامهای که برای آن یک عامل هوش مصنوعی میسازید، مهم است تا یک عامل قابل اعتماد ایجاد شود. ما باید عاملهای هوش مصنوعی بسازیم که به طور مؤثری اطلاعات را مدیریت کنند تا به نیازهای پیچیده فراتر از مهندسی پرسش پاسخ دهند.
در این درس، به بررسی مهندسی زمینه و نقش آن در ساخت عاملهای هوش مصنوعی میپردازیم.
این درس شامل موارد زیر است:
• مهندسی زمینه چیست و چرا با مهندسی پرسش متفاوت است.
• راهبردهایی برای مهندسی زمینه مؤثر، از جمله نحوه نوشتن، انتخاب، فشردهسازی و جداسازی اطلاعات.
• اشکالات رایج زمینه که ممکن است عامل هوش مصنوعی شما را به مشکل بیاندازد و راههای رفع آنها.
پس از اتمام این درس، شما خواهید آموخت چگونه:
• مهندسی زمینه را تعریف کنید و آن را از مهندسی پرسش متمایز نمایید.
• اجزای کلیدی زمینه در برنامههای مدل زبان بزرگ (LLM) را شناسایی کنید.
• راهبردهای نوشتن، انتخاب، فشردهسازی و جداکردن زمینه را برای بهبود عملکرد عامل بهکار ببرید.
• شناسایی اشکالات رایج زمینه مانند مسمومیت، حواسپرتی، سردرگمی، و تضاد، و بهکارگیری تکنیکهای کاهش آنها.
برای عاملهای هوش مصنوعی، زمینه چیزی است که برنامهریزی عامل را برای انجام برخی اقدامات هدایت میکند. مهندسی زمینه عملی است که اطمینان حاصل میکند عامل هوش مصنوعی اطلاعات لازم برای انجام مرحله بعدی کار را دارد. پنجره زمینه محدودیت اندازه دارد، بنابراین ما سازندگان عامل باید سیستمها و فرایندهایی بسازیم برای مدیریت افزودن، حذف و خلاصهسازی اطلاعات در پنجره زمینه.
مهندسی پرسش بر یک مجموعه ثابت از دستورالعملها برای هدایت مؤثر عاملهای هوش مصنوعی با مجموعهای از قوانین تمرکز دارد. مهندسی زمینه چگونگی مدیریت مجموعهای پویا از اطلاعات، شامل پرسش اولیه، است تا اطمینان حاصل شود که عامل در طول زمان آنچه نیاز دارد را در اختیار دارد. ایده اصلی مهندسی زمینه این است که این فرایند تکرارپذیر و قابل اطمینان باشد.
مهم است به یاد داشته باشید که زمینه فقط یک چیز نیست. اطلاعاتی که عامل هوش مصنوعی نیاز دارد میتواند از منابع مختلفی بیاید و این وظیفه ماست که اطمینان حاصل کنیم عامل به این منابع دسترسی دارد:
انواع زمینهای که ممکن است یک عامل هوش مصنوعی نیاز داشته باشد مدیریت کند عبارتند از:
• دستورالعملها: اینها شبیه «قوانین» عامل هستند – پرسشها، پیامهای سیستمی، مثالهای محدود (نمایش دادن نحوه انجام کاری به هوش مصنوعی) و توضیحاتی از ابزارهایی که میتواند استفاده کند. در اینجا تمرکز مهندسی پرسش با مهندسی زمینه ادغام میشود.
• دانش: شامل واقعیتها، اطلاعات استخراج شده از پایگاههای داده، یا حافظههای بلندمدتی که عامل جمعآوری کرده است. این شامل ادغام یک سیستم تولید افزوده بازیابی (RAG) است اگر عامل به دسترسی به ذخیرههای دانش و پایگاههای داده مختلف نیاز داشته باشد.
• ابزارها: اینها تعریف توابع خارجی، API ها و سرورهای MCP هستند که عامل میتواند فراخوانی کند، همراه با بازخورد (نتایج) که از استفاده آنها دریافت میکند.
• تاریخچه گفتگو: دیالوگ جاری با کاربر. با گذشت زمان، این گفتگوها طولانیتر و پیچیدهتر میشوند که یعنی فضای بیشتری در پنجره زمینه اشغال میکنند.
• اولویتهای کاربر: اطلاعاتی که در طول زمان درباره علاقهها یا عدم علاقههای کاربر یادگرفته شدهاند. اینها میتوانند ذخیره و هنگام گرفتن تصمیمات کلیدی برای کمک به کاربر فراخوانی شوند.
مهندسی زمینه خوب با برنامهریزی خوب آغاز میشود. این روش کمک میکند که به چگونگی بهکارگیری مفهوم مهندسی زمینه فکر کنید:
برنامهریزی مهم است اما وقتی اطلاعات به پنجره زمینه عامل ما جاری شد، نیاز داریم که راهبردهای عملی برای مدیریت آن داشته باشیم:
در حالی که برخی از اطلاعات به صورت خودکار به پنجره زمینه افزوده میشوند، مهندسی زمینه درباره نقش فعالتر بر این اطلاعات است که میتواند با چند راهبرد انجام شود:
دفترچه یادداشت عامل این امکان را میدهد که عامل هوش مصنوعی در طول یک جلسه یادداشتهایی از اطلاعات مرتبط با وظایف جاری و تعاملات کاربر بردارد. این باید در خارج از پنجره زمینه در یک فایل یا شی runtime باشد که عامل بتواند اگر نیاز بود در این جلسه بعداً بازیابی کند.
حافظهها دفترچه یادداشتها برای مدیریت اطلاعات خارج از پنجره زمینه یک جلسه خوب هستند. حافظهها باعث میشوند عاملها بتوانند اطلاعات مرتبط را در طول چندین جلسه ذخیره و بازیابی کنند. این میتواند شامل خلاصهها، اولویتهای کاربر و بازخورد برای بهبودهای آینده باشد.
فشردهسازی زمینه وقتی پنجره زمینه بزرگ میشود و به حد مجاز نزدیک میشود، تکنیکهایی مانند خلاصهسازی و تراشیدن (حذف) میتوانند استفاده شوند. این شامل نگهداری تنها مرتبطترین اطلاعات یا حذف پیامهای قدیمیتر است.
سیستمهای چندعاملی توسعه سیستم چندعاملی نوعی مهندسی زمینه است چون هر عامل پنجره زمینه مخصوص به خود دارد. اینکه این زمینه چگونه به اشتراک گذاشته شده و به عوامل مختلف منتقل شود، چیزی است که باید هنگام ساخت این سیستمها برنامهریزی شود.
محیطهای سندباکس اگر عامل نیاز داشته باشد کدی را اجرا کند یا مقادیر زیادی اطلاعات را در یک سند پردازش کند، این میتواند مقدار زیادی توکن برای پردازش نتایج مصرف کند. به جای اینکه همه اینها در پنجره زمینه ذخیره شود، عامل میتواند از یک محیط سندباکس استفاده کند که بتواند این کد را اجرا نماید و تنها نتایج و اطلاعات مرتبط دیگر را بخواند.
اشیاء حالت زمان اجرا این با ایجاد محفظههایی از اطلاعات انجام میشود تا موقعیتهایی را مدیریت کند که عامل نیاز دارد به اطلاعات خاصی دسترسی داشته باشد. برای یک کار پیچیده، این امکان را میدهد که عامل نتایج هر زیرکار را گام به گام ذخیره کند و پنجره زمینه فقط به آن زیرکار خاص متصل بماند.
پس از بهکارگیری یکی از این راهبردها، ارزش دارد بررسی کنید که تماس بعدی مدل چه چیزی دریافت کرده است. یک سؤال مفید برای اشکالزدایی این است:
آیا عامل زمینه زیادی بارگذاری کرد، زمینه اشتباه، یا زمینهای که نیاز داشت را از دست داد؟
نیازی نیست پرامپتهای خام، خروجی ابزارها یا محتوای حافظه را برای پاسخ به این سؤال ثبت کنید. در تولید، ثبتهای کوچک بررسی زمینه که شمارشها، شناسهها، هشها و برچسبهای سیاست را ضبط میکنند، ترجیح داده میشود:
هدف نگهداری زمینه بیشتر نیست. هدف این است که شواهد کافی باقی بماند تا توسعهدهنده بتواند تشخیص دهد که کدام سیاست زمینه اجرا شده و آیا تماس مدل بعدی به شیوه مورد نظر تغییر کرده است.
فرض کنیم میخواهیم عامل هوش مصنوعی به ما “یک سفر به پاریس رزرو کند.”
• یک عامل ساده که فقط از مهندسی پرسش استفاده میکند ممکن است فقط پاسخ دهد: “باشه، کی دوست داری به پاریس بری؟” این فقط سؤال مستقیم شما را در زمانی که پرسش انجام شد پردازش کرده است.
• یک عامل که از راهبردهای مهندسی زمینه استفاده میکند، کارهای بسیار بیشتری انجام میدهد. قبل از پاسخ دادن، سیستم آن ممکن است:
◦ تقویم شما را بررسی کند برای تاریخهای در دسترس (بازیابی دادههای لحظهای).
◦ اولویتهای سفر گذشته را یادآوری کند (از حافظه بلندمدت) مثل شرکت هواپیمایی مورد علاقه، بودجه، یا اینکه ترجیح میدهید پرواز مستقیم داشته باشید.
◦ ابزارهای در دسترس را شناسایی کند برای رزرو پرواز و هتل.
چیست: وقتی توهم (اطلاعات نادرستی که توسط مدل زبان بزرگ تولید شده) یا خطایی وارد زمینه میشود و مرتباً به آن ارجاع داده میشود، باعث میشود عامل اهداف غیرممکن دنبال کند یا استراتژیهای بیمعنی توسعه دهد.
چه باید کرد: پیادهسازی اعتبارسنجی زمینه و قرنطینه. اطلاعات را قبل از افزودن به حافظه بلندمدت اعتبارسنجی کنید. اگر احتمال مسمومیت تشخیص داده شد، رشتههای جدید زمینه ایجاد کنید تا از گسترش اطلاعات نادرست جلوگیری شود.
مثال رزرو سفر: عامل شما تصور میکند پرواز مستقیم از یک فرودگاه محلی کوچک به یک شهر بینالمللی دوردست وجود دارد که در واقع پرواز بینالمللی ارائه نمیدهد. این جزئیات غیرواقعی پرواز در زمینه ذخیره میشود. بعداً، وقتی از عامل میخواهید رزرو کند، آن مرتباً سعی میکند بلیت مسیر ناممکن را پیدا کند و این به خطاهای مکرر منجر میشود.
راه حل: مرحلهای پیاده کنید که وجود پرواز و مسیرها را از طریق API لحظهای اعتبارسنجی کند قبل از افزودن جزئیات پرواز به زمینه کاری عامل. اگر اعتبارسنجی ناموفق باشد، اطلاعات نادرست «قرنطینه» شده و استفاده نشود.
چیست: وقتی زمینه آنقدر بزرگ شود که مدل بیش از حد روی تاریخچه انباشته شده تمرکز میکند به جای استفاده از آنچه در طول آموزش یاد گرفته است، باعث اعمال تکراری یا غیرمؤثر میشود. مدلها حتی قبل از پر شدن پنجره زمینه ممکن است اشتباه کنند.
چه باید کرد: از خلاصهسازی زمینه استفاده کنید. بهطور دورهای اطلاعات انباشته را به خلاصههای کوتاهتر فشرده کنید، جزئیات مهم را نگه دارید و تاریخچه اضافی را حذف نمایید. این کمک میکند تمرکز «ریست» شود.
مثال رزرو سفر: شما مدتی طولانی درباره مقاصد رویایی سفر صحبت کردهاید، از جمله شرح مفصل سفر کولهپشتیگردی دو سال پیش. وقتی بالاخره میگویید “برای ماه آینده یک پرواز ارزان پیدا کن”، عامل در جزئیات قدیمی و نامربوط غرق میشود و مرتب از شما درباره تجهیزات کولهپشتی یا برنامههای سفر گذشته میپرسد و درخواست فعلی شما را نادیده میگیرد.
راه حل: بعد از تعداد مشخصی چرخش گفتگو یا وقتی زمینه بیش از حد بزرگ شد، عامل باید جدیدترین و مرتبطترین بخشهای گفتگو را خلاصه کند – با تمرکز روی تاریخها و مقصد سفر فعلی – و آن خلاصه را برای تماس بعدی مدل زبان بزرگ استفاده کرده و بخشهای تاریخی کماهمیت را کنار بگذارد.
چیست: وقتی زمینه غیرضروری، اغلب به شکل تعداد زیادی ابزار در دسترس، باعث میشود مدل پاسخهای نادرست تولید کند یا ابزارهای نامربوط را فراخوانی کند. مدلهای کوچکتر بیشتر در معرض این مشکل هستند.
چه باید کرد: مدیریت بار ابزار را با استفاده از تکنیکهای RAG پیاده کنید. توصیف ابزارها را در پایگاه داده برداری ذخیره و فقط مرتبطترین ابزارها را برای هر وظیفه خاص انتخاب کنید. پژوهشها نشان دادهاند که انتخاب ابزار را به کمتر از ۳۰ محدود کنید.
مثال رزرو سفر: عامل شما به دهها ابزار دسترسی دارد: book_flight، book_hotel، rent_car، find_tours، currency_converter، weather_forecast، restaurant_reservations، و غیره. شما میپرسید، “بهترین راه برای چرخیدن در پاریس چیست؟” به دلیل تعداد زیاد ابزار، عامل سردرگم میشود و سعی میکند book_flight را در داخل پاریس فراخوانی کند، یا rent_car حتی اگر شما حملونقل عمومی را ترجیح دهید، چون توصیف ابزارها ممکن است همپوشانی داشته باشد یا عامل نتواند بهترین ابزار را تشخیص دهد.
راه حل: از RAG بر روی توصیف ابزارها استفاده کنید. وقتی میپرسید چگونه در پاریس جابجا شوید، سیستم به صورت پویا فقط مرتبطترین ابزارها مانند rent_car یا public_transport_info را بر اساس پرسش شما بازیابی میکند و مجموعه متمرکزی از ابزارها به مدل زبان بزرگ ارائه میدهد.
چیست: زمانی که اطلاعات متناقض در زمینه وجود دارد که باعث استدلال ناسازگار یا پاسخ نهایی بد میشود. این معمولاً وقتی اتفاق میافتد که اطلاعات به صورت مرحلهای میرسند و فرضیههای نادرست اولیه در زمینه باقی میمانند.
چه باید کرد: از هرس زمینه و بارگذاری خارج استفاده کنید. هرس به معنای حذف اطلاعات قدیمی یا متناقض هنگام ورود جزئیات جدید است. بارگذاری خارج به مدل اجازه میدهد فضای کاری «دفترچه یادداشت» جداگانهای برای پردازش اطلاعات داشته باشد بدون اینکه پنجره زمینه اصلی به هم بریزد.
مثال رزرو سفر: شما ابتدا به نماینده خود میگویید، «میخواهم با کلاس اقتصادی پرواز کنم.» بعداً در مکالمه نظر خود را عوض کرده و میگویید، «در واقع، برای این سفر، بیایید کلاس بیزنس برویم.» اگر هر دو دستورالعمل در متن باقی بمانند، ممکن است نماینده نتایج جستجوی متضاد دریافت کند یا درباره اینکه کدام اولویت را اولویتبندی کند، دچار سردرگمی شود.
راهحل: پیادهسازی اصلاح متن یا کاهش متن. هنگامی که دستورالعمل جدیدی با دستورالعمل قدیمی تضاد دارد، دستورالعمل قدیمی حذف یا بهصراحت در متن لغو میشود. بهطور جایگزین، نماینده میتواند از یک کاغذ یادداشت برای حل تضادهای ترجیحاتی قبل از تصمیمگیری استفاده کند، تا فقط دستورالعمل نهایی و هماهنگ به عملکردهایش راهنمایی کند.
به Microsoft Foundry Discord بپیوندید تا با دیگر یادگیرندگان ملاقات کنید، در ساعات کاری شرکت کنید و پاسخ سوالات خود درباره نمایندگان هوش مصنوعی را دریافت کنید.
سلب مسئولیت: این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.