(اس سبق کی ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں)
آپ جس ایپلیکیشن کے لیے AI ایجنٹ بنا رہے ہیں اس کی پیچیدگی کو سمجھنا ایک معتبر ایجنٹ بنانے کے لیے ضروری ہے۔ ہمیں ایسے AI ایجنٹس بنانے کی ضرورت ہے جو پیچیدہ ضروریات کو پورا کرنے کے لیے مؤثر طریقے سے معلومات کا انتظام کریں، جو صرف پرامپٹ انجینئرنگ سے آگے ہوں۔
اس سبق میں، ہم دیکھیں گے کہ کانٹیکسٹ انجینئرنگ کیا ہے اور AI ایجنٹس کی تعمیر میں اس کا کیا کردار ہے۔
اس سبق میں یہ موضوعات شامل ہوں گے:
• کانٹیکسٹ انجینئرنگ کیا ہے اور یہ پرامپٹ انجینئرنگ سے کیسے مختلف ہے۔
• موثر کانٹیکسٹ انجینئرنگ کی حکمت عملیاں، جیسے کہ معلومات لکھنے، منتخب کرنے، کمپریس کرنے، اور الگ کرنے کے طریقے۔
• عام کانٹیکسٹ کی ناکامیاں جو آپ کے AI ایجنٹ کو متاثر کر سکتی ہیں اور انہیں کیسے درست کیا جائے۔
اس سبق کو مکمل کرنے کے بعد، آپ سیکھیں گے کہ کیسے:
• کانٹیکسٹ انجینئرنگ کی تعریف کریں اور اسے پرامپٹ انجینئرنگ سے فرق کریں۔
• بڑے لینگویج ماڈل (LLM) ایپلیکیشنز میں کانٹیکسٹ کے اہم اجزاء کی شناخت کریں۔
• کانٹیکسٹ کو لکھنے، منتخب کرنے، کمپریس کرنے، اور الگ کرنے کی حکمت عملیوں کا اطلاق کریں تاکہ ایجنٹ کی کارکردگی بہتر بنائی جا سکے۔
• عام کانٹیکسٹ کی ناکامیاں جیسے کہ زہریلاپن، توجہ ہٹانا، الجھن، اور تصادم کو پہچانیں اور انہیں کم کرنے کی تکنیکیں نافذ کریں۔
AI ایجنٹس کے لیے، کانٹیکسٹ وہ ہے جو AI ایجنٹ کی منصوبہ بندی کو کسی مخصوص عمل کی طرف لے جاتا ہے۔ کانٹیکسٹ انجینئرنگ اس بات کو یقینی بنانے کا عمل ہے کہ AI ایجنٹ کے پاس اگلا مرحلہ مکمل کرنے کے لیے درست معلومات موجود ہوں۔ کانٹیکسٹ ونڈو کی سائز محدود ہوتی ہے، اس لیے ایجنٹ بنانے والوں کو ایسی نظام اور عمل بنانا ہوتے ہیں جو کانٹیکسٹ ونڈو میں معلومات کو شامل کرنے، نکالنے، اور مختصر کرنے کا انتظام کر سکیں۔
پرامپٹ انجینئرنگ ایک ہی سادہ، جامد ہدایات پر مرکوز ہوتی ہے تاکہ AI ایجنٹس کو قواعد کے ایک مجموعہ کے ساتھ مؤثر طریقے سے رہنمائی دی جا سکے۔ کانٹیکسٹ انجینئرنگ معلومات کے متحرک مجموعے کا انتظام کرنا سکھاتی ہے، جس میں ابتدائی پرامپٹ بھی شامل ہے، تاکہ یہ یقینی بنایا جا سکے کہ AI ایجنٹ وقت کے ساتھ اپنی ضرورت کی معلومات رکھے۔ کانٹیکسٹ انجینئرنگ کا بنیادی خیال اس عمل کو دہرانے کے قابل اور معتبر بنانا ہے۔
یاد رکھنا ضروری ہے کہ کانٹیکسٹ صرف ایک چیز نہیں ہے۔ AI ایجنٹ کو جس معلومات کی ضرورت ہوتی ہے وہ مختلف ذرائع سے آ سکتی ہے اور ہمارا کام ہے کہ ہم ایجنٹ کو ان ذرائع تک رسائی دیں:
AI ایجنٹ کو جو کانٹیکسٹ منظم کرنا ہو سکتا ہے اس کی اقسام میں شامل ہیں:
• ہدایات: یہ ایجنٹ کے “قواعد” کی مانند ہیں – پرامپٹس، نظامی پیغامات، چند شاٹ کی مثالیں (جیسے AI کو کچھ کرنا سکھانا)، اور استعمال کیے جانے والے ٹولز کی تفصیل۔ یہاں پرامپٹ انجینئرنگ اور کانٹیکسٹ انجینئرنگ کا رابطہ ہوتا ہے۔
• علم: اس میں حقائق، ڈیٹا بیس سے حاصل کی گئی معلومات، یا لمبے عرصے کی یادیں شامل ہیں جو ایجنٹ نے جمع کی ہوتی ہیں۔ اس میں Retrieval Augmented Generation (RAG) سسٹم کو شامل کرنا بھی شامل ہے اگر ایجنٹ کو مختلف علم کے ذخائر اور ڈیٹا بیسز تک رسائی کی ضرورت ہو۔
• ٹولز: یہ خارجی فنکشنز، APIs، اور MCP سرورز کی وضاحتیں ہیں جنہیں ایجنٹ بلا سکتا ہے، اور ان کا استعمال کرنے پر ملنے والے فیڈبیک (نتائج) بھی شامل ہیں۔
• مکالمے کی تاریخ: صارف کے ساتھ جاری گفتگو۔ جیسے جیسے وقت گزرتا ہے، یہ بات چیت لمبی اور پیچیدہ ہو جاتی ہے اور کانٹیکسٹ ونڈو میں جگہ لیتے ہیں۔
• صارف کی ترجیحات: صارف کی پسندیدگی اور ناپسندیدگی کے بارے میں وقت کے ساتھ سیکھی گئی معلومات۔ انہیں اہم فیصلوں میں صارف کی مدد کے لیے ذخیرہ اور استعمال کیا جا سکتا ہے۔
اچھی کانٹیکسٹ انجینئرنگ اچھی منصوبہ بندی سے شروع ہوتی ہے۔ یہاں ایک طریقہ ہے جو آپ کو کانٹیکسٹ انجینئرنگ کے تصور کو لاگو کرنے پر غور کرنے میں مدد دے گا:
منصوبہ بندی اہم ہے، لیکن جب معلومات ہمارے ایجنٹ کے کانٹیکسٹ ونڈو میں داخل ہونا شروع ہو جاتی ہیں، تب ہمیں ان کا انتظام کرنے کے لیے عملی حکمت عملیاں درکار ہوتی ہیں:
جبکہ کچھ معلومات خود بخود کانٹیکسٹ ونڈو میں شامل ہو جاتی ہیں، کانٹیکسٹ انجینئرنگ اس معلومات کا زیادہ فعال کردار ادا کرنا ہے، جسے چند حکمت عملیوں کے ذریعے کیا جا سکتا ہے:
ایجنٹ اسکریچ پیڈ یہ AI ایجنٹ کو اجازت دیتا ہے کہ وہ موجودہ کاموں اور صارف کے ساتھ تعاملات کی اہم معلومات کے نوٹس ایک سیشن کے دوران لے سکے۔ یہ کانٹیکسٹ ونڈو کے باہر کسی فائل یا رن ٹائم آبجیکٹ میں ہونا چاہیے جسے ایجنٹ بعد میں اسی سیشن میں ضرورت پڑنے پر بازیافت کر سکے۔
یادیں (Memories) اسکریچ پیڈز ایک سیشن کی کانٹیکسٹ ونڈو سے باہر معلومات کے انتظام کے لیے اچھے ہیں۔ یادیں ایجنٹس کو متعدد سیشنز کے دوران متعلقہ معلومات ذخیرہ اور بازیافت کرنے کی اجازت دیتی ہیں۔ اس میں خلاصے، صارف کی ترجیحات، اور بہتری کے لیے فیڈبیک شامل ہو سکتے ہیں۔
کانٹیکسٹ کو کمپریس کرنا جب کانٹیکسٹ ونڈو کا سائز بڑھ جائے اور اپنی حد کے قریب ہو، تو خلاصہ سازی اور تراشنے جیسی تکنیکیں استعمال کی جا سکتی ہیں۔ اس میں صرف سب سے متعلقہ معلومات رکھنا یا پرانے پیغامات کو حذف کرنا شامل ہے۔
کثیر ایجنٹ سسٹمز کثیر ایجنٹ سسٹم تیار کرنا کانٹیکسٹ انجینئرنگ کی ایک شکل ہے کیونکہ ہر ایجنٹ کا اپنا کانٹیکسٹ ونڈو ہوتا ہے۔ یہ منصوبہ بندی کرنا کہ یہ کانٹیکسٹ کیسے شیئر کیا جائے اور مختلف ایجنٹس کو منتقل کیا جائے، ان سسٹمز کی تعمیر میں ایک اور اہم چیز ہے۔
سینڈ باکس ماحولیات اگر ایجنٹ کو کچھ کوڈ چلانا ہو یا کسی دستاویز میں بڑی مقدار میں معلومات کا تجزیہ کرنا ہو، تو اس میں بہت زیادہ ٹوکنز لگ سکتے ہیں۔ اس کی بجائے کہ یہ سب کچھ کانٹیکسٹ ونڈو میں محفوظ کیا جائے، ایجنٹ ایسے سینڈ باکس ماحول کا استعمال کر سکتا ہے جو کوڈ چلا سکے اور صرف نتائج اور متعلقہ معلومات پڑھ سکے۔
رن ٹائم اسٹیٹ آبجیکٹس یہ اس وقت کیا جاتا ہے جب معلومات کے کنٹینرز بنائے جاتے ہیں تاکہ حالات کا انتظام کیا جا سکے جب ایجنٹ کو مخصوص معلومات تک رسائی کی ضرورت ہو۔ ایک پیچیدہ کام کے لیے، یہ ایجنٹ کو اجازت دیتا ہے کہ ہر ذیلی کام کے نتائج کو مرحلہ وار ذخیرہ کرے، جس سے کانٹیکسٹ صرف اس مخصوص ذیلی کام کے ساتھ منسلک رہے۔
جب آپ ان میں سے کوئی حکمت عملی اپلائی کر لیں، تو یہ چیک کرنا مفید ہوتا ہے کہ اگلے ماڈل کال میں حقیقت میں کیا وصول ہوا۔ ایک مفید ڈی بگنگ سوال یہ ہے:
کیا ایجنٹ نے بہت زیادہ کانٹیکسٹ لوڈ کیا، غلط کانٹیکسٹ لوڈ کیا، یا ضروری کانٹیکسٹ کو چھوڑ دیا؟
اس سوال کا جواب دینے کے لیے آپ کو خام پرامپٹس، ٹول کے آؤٹ پٹ، یا یادداشت کے مواد کو لاگ کرنے کی ضرورت نہیں۔ پروڈکشن میں، چھوٹے کانٹیکسٹ معائنہ ریکارڈ جو گنتی، شناختی نمبرز، ہیشز، اور پالیسی لیبلز کو محفوظ کریں، ترجیح دی جاتی ہے:
مقصد زیادہ کانٹیکسٹ رکھنے کا نہیں ہے۔ بلکہ اتنے شواہد چھوڑنا ہے کہ ڈویلپر بتا سکے کہ کون سی کانٹیکسٹ حکمت عملی چلائی گئی اور کیا اس نے اگلے ماڈل کال کو مطلوبہ طریقے سے تبدیل کیا۔
فرض کریں ہم چاہتے ہیں کہ ایک AI ایجنٹ “میرے لیے پیرس کا سفر بک کرے۔”
• ایک سادہ ایجنٹ جو صرف پرامپٹ انجینئرنگ استعمال کرتا ہے شاید صرف جواب دے: “ٹھیک ہے، آپ پیرس کب جانا چاہیں گے؟” یہ صرف آپ کا سیدھا سوال اس وقت پراسیس کرتا ہے جب صارف پوچھتا ہے۔
• ایک ایجنٹ جو کانٹیکسٹ انجینئرنگ کی حکمت عملیاں استعمال کرتا ہے، وہ بہت کچھ کرتا ہے۔ جواب دینے سے پہلے، اس کا نظام ممکنہ طور پر:
◦ آپ کا کیلنڈر چیک کرتا ہے کہ کون سی تاریخیں خالی ہیں (حالیہ ڈیٹا حاصل کرنا)۔
◦ پچھلی سفر کی پسندیدگیاں یاد کرتا ہے (طویل مدتی یادداشت سے) جیسے آپ کی پسندیدہ ایئر لائن، بجٹ، یا آپ کیا براہ راست پروازیں پسند کرتے ہیں۔
◦ پرواز اور ہوٹل بک کرنے کے دستیاب ٹولز کی شناخت کرتا ہے۔
یہ کیا ہے: جب ایک ہیلوسینیشن (LLM کی جانب سے بنائی گئی غلط معلومات) یا کوئی خطا کانٹیکسٹ میں شامل ہو جاتی ہے اور بار بار اس کا حوالہ دیا جاتا ہے، جس کی وجہ سے ایجنٹ ناممکن اہداف کا تعاقب کرتا ہے یا بے معنی حکمت عملیاں بناتا ہے۔
کیا کریں: کانٹیکسٹ کی توثیق اور قرنطینہ نافذ کریں۔ معلومات کو طویل مدتی یادداشت میں شامل کرنے سے پہلے جانچیں۔ اگر ممکنہ زہریلا پن کا پتہ چلے تو خراب معلومات کے پھیلاؤ کو روکنے کے لیے تازہ کانٹیکسٹ تھریڈز شروع کریں۔
سفر کی بکنگ کی مثال: آپ کا ایجنٹ ایک چھوٹے مقامی ہوائی اڈے سے ایک دور دراز بین الاقوامی شہر کے لیے براہ راست پرواز کا وہم پیدا کرتا ہے جہاں واقعی بین الاقوامی پروازیں نہیں جاتیں۔ یہ موجود نہ ہونے والی پرواز کی تفصیل کانٹیکسٹ میں محفوظ ہو جاتی ہے۔ بعد میں، جب آپ ایجنٹ سے بکنگ کروانے کو کہتے ہیں، تو یہ ناممکن راستے کے لیے ٹکٹ تلاش کرنے کی کوشش کرتا رہتا ہے، جس سے مسلسل غلطیاں ہوتی ہیں۔
حل: ایک ایسا قدم نافذ کریں جو اصلی وقت کی API کے ذریعے پرواز کی موجودگی اور راستوں کی تصدیق کرے۔ اس سے پہلے کہ پرواز کی تفصیلات ایجنٹ کے ورکنگ کانٹیکسٹ میں شامل کی جائیں۔ اگر تصدیق ناکام ہو، تو غلط معلومات کو “قرنطینہ” میں رکھا جائے اور آگے استعمال نہ کیا جائے۔
یہ کیا ہے: جب کانٹیکسٹ اتنا بڑا ہو جاتا ہے کہ ماڈل تربیت کے دوران سیکھی گئی چیزوں کی بجائے جمع شدہ تاریخ پر زیادہ توجہ دیتا ہے، جس کی وجہ سے بار بار یا غیر مددگار عمل ہوتے ہیں۔ ماڈلز اس سے پہلے بھی غلطیاں کرنا شروع کر سکتے ہیں کہ کانٹیکسٹ ونڈو مکمل ہو۔
کیا کریں: کانٹیکسٹ کا خلاصہ کریں۔ وقتاً فوقتاً جمع کی گئی معلومات کو مختصر خلاصوں میں کمپریس کریں، اہم تفصیلات رکھیں اور غیر ضروری تاریخ کو ہٹائیں۔ اس سے توجہ کو “ری سیٹ” کرنے میں مدد ملتی ہے۔
سفر کی بکنگ کی مثال: آپ نے کافی عرصے سے مختلف خوابوں کے سفر کے مقامات پر بات کی ہے، جس میں دو سال پہلے کی آپ کی بیگ پیکنگ ٹرپ کی تفصیلی کہانی بھی شامل ہے۔ جب آپ بالآخر پوچھتے ہیں “اگلے مہینے کے لیے مجھے سستی پرواز تلاش کرو۔” تو ایجنٹ پرانے، غیر متعلقہ تفصیلات میں الجھ جاتا ہے اور بار بار آپ سے آپ کے بیگ پیکنگ گیئر یا ماضی کے سفرناموں کے بارے میں سوال کرتا رہتا ہے، آپ کی موجودہ درخواست کو نظر انداز کر دیتا ہے۔
حل: ایک خاص تعداد میں ٹرنز یا جب کانٹیکسٹ بہت بڑا ہو جائے، ایجنٹ کو چاہیے کہ وہ بات چیت کے تازہ ترین اور متعلقہ حصوں کا خلاصہ کرے – آپ کی موجودہ سفر کی تاریخوں اور منزل پر توجہ مرکوز کرتے ہوئے – اور اس مختصر خلاصے کو اگلے LLM کال کے لیے استعمال کرے، کم متعلقہ پرانے تاریخی بات چیت کو ترک کر دے۔
یہ کیا ہے: جب غیر ضروری کانٹیکسٹ، عموماً زیادہ تعداد میں دستیاب ٹولز کی صورت میں، ماڈل کو غلط جوابات پیدا کرنے یا غیر متعلقہ ٹولز کال کرنے پر مجبور کرتا ہے۔ چھوٹے ماڈلز خاص طور پر اس کے زیادہ شکار ہوتے ہیں۔
کیا کریں: RAG تکنیکوں کے استعمال سے ٹول لوڈ آؤٹ مینجمنٹ نافذ کریں۔ ٹول کی تفصیلات کو ویکٹر ڈیٹا بیس میں ذخیرہ کریں اور ہر مخصوص کام کے لیے صرف سب سے متعلقہ ٹولز منتخب کریں۔ تحقیق سے معلوم ہوتا ہے کہ ٹولز کی تعداد 30 سے کم رکھنی چاہیے۔
سفر کی بکنگ کی مثال: آپ کے ایجنٹ کے پاس درجنوں ٹولز تک رسائی ہے: book_flight، book_hotel، rent_car، find_tours، currency_converter، weather_forecast، restaurant_reservations وغیرہ۔ آپ پوچھتے ہیں، “پیرس میں گزر بسر کرنے کا بہترین طریقہ کیا ہے؟” ٹولز کی کثرت کی وجہ سے، ایجنٹ الجھ جاتا ہے اور book_flight کو پیرس کے اندر کال کرنے کی کوشش کرتا ہے، یا rent_car کا انتخاب کرتا ہے حالانکہ آپ پبلک ٹرانسپورٹ کو ترجیح دیتے ہیں، کیونکہ ٹولز کی تفصیلات آپس میں اوورلیپ ہو سکتی ہیں یا ایجنٹ بہترین انتخاب نہیں کر پاتا۔
حل: ٹول کی تفصیلات پر RAG کا استعمال کریں۔ جب آپ پیرس میں گزر بسر کے بارے میں پوچھیں، تو سسٹم متحرک طور پر صرف سب سے متعلقہ ٹولز جیسے rent_car یا public_transport_info کو بازیافت کرے، اور LLM کو ٹولز کا ٹھوس “لوڈ آؤٹ” پیش کرے۔
یہ کیا ہے: جب کانٹیکسٹ میں متنازعہ معلومات موجود ہو، جو غیر مستقل اندازِ فکر یا خراب آخری جوابات کا باعث بنتی ہے۔ یہ اکثر اس وقت ہوتا ہے جب معلومات مرحلہ وار آتی ہے اور ابتدائی غلط مفروضے کانٹیکسٹ میں رہتے ہیں۔
کیا کریں: کانٹیکسٹ کو ترشیں (prune) اور آف لوڈ کریں۔ ترشنے کا مطلب ہے پرانی یا متضاد معلومات کو ہٹانا جیسے ہی نئی تفصیلات آتی ہیں۔ آف لوڈ کرنے کا مطلب ہے ماڈل کو ایک الگ “اسکریچ پیڈ” کام کی جگہ دینا تاکہ معلومات کو پراسیس کیا جا سکے بغیر مرکزی کانٹیکسٹ کو بھاری کئے۔
سفر کی بکنگ کی مثال: آپ شروع میں اپنے ایجنٹ کو بتاتے ہیں، “میں اکانومی کلاس میں پرواز کرنا چاہتا ہوں۔” بعد میں گفتگو میں آپ اپنا ارادہ بدل کر کہتے ہیں، “درحقیقت، اس سفر کے لیے، چلیں بزنس کلاس میں چلتے ہیں۔” اگر دونوں ہدایات متون میں موجود رہیں تو ایجنٹ کو متضاد تلاش کے نتائج موصول ہو سکتے ہیں یا اسے سمجھ نہیں آئے گی کہ کس ترجیح کو اولیت دینی ہے۔
حل: context pruning کو لاگو کریں۔ جب کوئی نئی ہدایت پرانی ہدایت سے متصادم ہو تو پرانی ہدایت کو متون سے ہٹا دیا جاتا ہے یا واضح طور پر اسے ترجیح دی جاتی ہے۔ متبادل طور پر، ایجنٹ scratchpad استعمال کر سکتا ہے تاکہ متضاد ترجیحات کو مطابقت دے کر فیصلہ کرے، یقینی بناتے ہوئے کہ صرف آخری، مستقل ہدایت اس کے عمل کی رہنمائی کرے۔
شامل ہوں Microsoft Foundry Discord پر تاکہ دوسرے سیکھنے والوں سے ملاقات کریں، آفس آورز میں شرکت کریں اور اپنے AI Agents کے سوالات کے جواب حاصل کریں۔
ڈس کلیمر: یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔