কনটেক্সট ইঞ্জিনিয়ারিং: প্রম্পটের আগে কাজ
· 6 min read · Filippo Spinella · AI, Agents, Prompting, Developer Tools
মুহূর্তের শব্দ, এআই এজেন্টদের ছোট্ট জগতে, প্রসঙ্গ প্রকৌশল।
আমরা ইতিমধ্যে কিছু বিক্রি করার জন্য অন্য একটি লেবেল উদ্ভাবিত বলে মনে হচ্ছে। অংশে এটি। যাইহোক, প্রায়শই ঘটে, লেবেলটি ধরা পড়ে কারণ এটি একটি প্রকৃত ব্যথার নাম দেয়।
ব্যথা হল: মডেলগুলি ব্যর্থ হয় না কারণ তারা "মনে করে না"। তারা প্রায়ই ব্যর্থ হয় কারণ আমরা তাদের ভুল রুম দিয়ে কাজ করতে পাঠাই।
আমরা তাদের পুরোনো নির্দেশনা দিই। আমরা তার কাছ থেকে গুরুত্বপূর্ণ ফাইল লুকিয়ে রাখি। আমরা তাদের নথিগুলি পাস করি যা খুব দীর্ঘ এবং যা গুরুত্বপূর্ণ তা বলি না। আমরা অগ্রাধিকার ছাড়াই তাদের লগ দেখাই. কখন ব্যবহার করতে হবে তা ব্যাখ্যা না করেই আমরা তাদের দশটি টুল দেই। তারপরে আমরা অবাক হই যদি এজেন্ট একটি অজানা অ্যাপার্টমেন্টে জেগে থাকা ব্যক্তির মতো চলে।
প্রম্পট হল বাক্যাংশটি যা আপনি এটিকে বলছেন। প্রেক্ষাপট হল বিশ্ব আপনি এটির চারপাশে প্রস্তুত করেন।
প্রম্পট ইঞ্জিনিয়ারিং থেকে কনটেক্সট ইঞ্জিনিয়ারিং পর্যন্ত
প্রম্পট ইঞ্জিনিয়ারিংকে প্রায়শই লেখা হিসাবে ভাবা হত। সঠিক শব্দ চয়ন করুন, সঠিক উপায়ে জিজ্ঞাসা করুন, উদাহরণ যোগ করুন, বিন্যাস নির্দিষ্ট করুন।
কনটেক্সট ইঞ্জিনিয়ারিং আর্কিটেকচারের কাছাকাছি।
আপনি শুধু জিজ্ঞাসা করবেন না "আমি কীভাবে অনুরোধটি প্রণয়ন করব?"। এটি জিজ্ঞাসা করে:
- কি তথ্য সত্যিই প্রয়োজন?
- গোলমাল কি?
- উড়ে এসে কি উদ্ধার করতে হবে?
- কি মনে রাখা উচিত?
- কোন সরঞ্জাম উন্মুক্ত করা উচিত?
- কোন নির্দেশাবলী স্থিতিশীল এবং কোনটি কাজের উপর নির্ভর করে?
- আমি কীভাবে এজেন্টকে প্রামাণিক কী বোঝাতে পারি?
এটি একটি সূক্ষ্ম কিন্তু বিশাল পরিবর্তন. কারণ আপনি যখন এজেন্টদের সাথে কাজ করেন, তখন প্রসঙ্গ একটি স্ট্যাটিক ব্লক নয়। এটি প্রতিটি পদক্ষেপে পরিবর্তিত হয়।
এজেন্ট একটি ফাইল খোলে, কিছু শেখে, একটি পরীক্ষা চালায়, একটি ত্রুটি পায়, পরিকল্পনা আপডেট করে, একটি টুল কল করে, একটি নির্ভরতা আবিষ্কার করে। প্রতিটি কোলের সাথে তাকে সিদ্ধান্ত নিতে হবে তার সাথে কি নিয়ে যাবে এবং কোনটি ছেড়ে দেবে।
এটি ইঞ্জিনিয়ারিং।
প্রসঙ্গ ল্যান্ডফিল নয়
বৃহৎ প্রসঙ্গ উইন্ডো সহ টেমপ্লেটগুলি আমাদের একটি প্রলোভন দিয়েছে: আসুন সবকিছু ভিতরে ফেলি৷
এটা বোধগম্য. আমার যদি এক মিলিয়ন টোকেন থাকে, তাহলে আমি কেন বেছে নেব?
কারণ এমনকি যখন আপনি সবকিছু রাখতে পারেন, এর অর্থ এই নয় যে সবকিছুই সাহায্য করে। আসলে, গোলমালের একটা খরচ আছে। এটি টোকেন খরচ করে, এটি মনোযোগ খরচ করে, এটি লেটেন্সি খরচ করে, এটি মানের খরচ করে। একটি মডেল আমাদের মতো অপ্রাসঙ্গিক বিবরণে হারিয়ে যেতে পারে যখন আমরা বিশটি ট্যাব খুলি এবং কেন তা আর মনে নেই।
ভাল প্রসঙ্গের একটি অনুক্রম রয়েছে:
- সিস্টেম নির্দেশাবলী এবং নীতি;
- নির্দিষ্ট উদ্দেশ্য;
- বর্তমান অবস্থা;
- প্রাসঙ্গিক তথ্য;
- সীমাবদ্ধতা;
- উপলব্ধ সরঞ্জাম;
- ইতিমধ্যে করা সিদ্ধান্ত ট্র্যাক.
একই স্তরে সবকিছু চিকিত্সা করার প্রয়োজন নেই। একটি ব্যবহারকারীর কমান্ড একটি পুরানো নোটের চেয়ে বেশি মূল্যবান। একটি ব্যর্থ পরীক্ষা এখন তিন মাস আগে থেকে একটি নান্দনিক পছন্দের চেয়ে বেশি মূল্যবান। একটি নিরাপত্তা নীতি একটি উৎপাদন শর্টকাটের চেয়ে বেশি মূল্যবান।
কনটেক্সট ইঞ্জিনিয়ারিং মানে ওজন দেওয়া, শুধু ডেটা নয়।
স্মৃতি: কম মনে রাখবেন, ভাল মনে রাখবেন
এজেন্টদের মেমরি সবচেয়ে পিচ্ছিল বিষয় এক.
একজন ব্যবহারকারী হিসাবে, আপনি চান এজেন্ট আপনাকে জানুক। আপনি চান যে তিনি সুর, পরিকল্পনা, সম্মেলন, ইতিমধ্যে সিদ্ধান্ত নেওয়া জিনিসগুলি মনে রাখবেন। একজন প্রকৌশলী হিসাবে, আপনি জানেন যে প্রতিটি অবিরাম স্মৃতিও একটি ঝুঁকি: এটি ভুল, পুরানো, খুব ব্যক্তিগত, খুব সাধারণ, যাচাইযোগ্য হতে পারে।
একটি দরকারী স্মৃতিতে কমপক্ষে তিনটি গুণ থাকা উচিত:
- উত্স: এই তথ্য কোথা থেকে আসে?
- তারিখ: কখন এটা সত্য ছিল?
- উদ্দেশ্য: এটি কোন ধরনের কাজের জন্য ব্যবহার করা উচিত?
এই তিনটি জিনিস ছাড়া স্মৃতি কুসংস্কারে পরিণত হয়।
I like to think of agentic memory as a workbook, not as a magical mind. অস্থায়ী নোট, নিশ্চিত সিদ্ধান্ত, শৈলী পছন্দ, প্রযুক্তিগত সীমাবদ্ধতা, উত্স লিঙ্ক আছে. কিছু জিনিসের মেয়াদ শেষ। কিছু আবার লিখতে হবে। কিছুকে অবশ্যই বাদ দিতে হবে কারণ এজেন্ট তাদের ভুল ধারণা দিয়েছে।
একটি ভাল সিস্টেম এই রক্ষণাবেক্ষণ স্বাভাবিক করতে হবে. বীরত্বপূর্ণ নয়।
পুনরুদ্ধার এবং সরঞ্জাম একই জিনিস নয়
আমরা যখন প্রসঙ্গ সম্পর্কে কথা বলি, তখন আমরা প্রায়শই RAG-তে অবিলম্বে শেষ হয়ে যাই। এমবেডিং, ভেক্টর ডাটাবেস, চঙ্কিং, রির্যাঙ্কিং।
সব দরকারী. কিন্তু পুনরুদ্ধার মডেলে তথ্য আনার একমাত্র উপায়। তিনি একমাত্র নন।
একজন এজেন্ট ফাইলগুলি পড়ে, একটি API জিজ্ঞাসা করে, একটি MCP সার্ভারে কল করে, একটি ব্রাউজার খোলার মাধ্যমে, পরীক্ষা চালিয়ে, স্ল্যাক অনুসন্ধান করে, একটি ড্যাশবোর্ডের দিকে তাকিয়ে, মানুষকে জিজ্ঞাসা করে প্রসঙ্গ পেতে পারে।
কোন রুট ব্যবহার করতে হবে এবং কখন তা নির্ধারণ করা আকর্ষণীয় অংশ।
যদি এজেন্টকে একটি ঐতিহাসিক প্রশ্নের উত্তর দিতে হয়, সম্ভবত শুধু পুনরুদ্ধারই যথেষ্ট। যদি তাকে একটি বাগ ঠিক করতে হয় তবে তাকে বাস্তব কোড পড়তে হবে। কেন একটি স্থাপনা ব্যর্থ হয় তা বুঝতে যদি তার প্রয়োজন হয় তবে তাকে নতুন লগগুলি দেখতে হবে। আপনি যদি কোনও গ্রাহককে লিখতে চান তবে আপনাকে টিকিটের সুর, ইতিহাস এবং স্থিতি পুনরুদ্ধার করতে হবে। If he must act on production, he must ask permission.
প্রসঙ্গ একটি ডাটাবেস নয়। এটা একটা ওয়ার্কফ্লো।
ভালো এজেন্টও জানে কিভাবে উপেক্ষা করতে হয়
A sign of maturity in agents will be the ability to say: I don't need this information.
এটা তুচ্ছ মনে হয়, কিন্তু এটা খুব কঠিন. অনেক এজেন্টিক সিস্টেম জমা হয়। প্রতিটি টুল কল টেক্সট যোগ করে। প্রতিটি ত্রুটি বাফারে থেকে যায়। পড়া প্রতিটি ফাইল স্ট্যাকে যোগ করে। শেষ পর্যন্ত মডেলটির একটি খুব দীর্ঘ ইতিহাস এবং কোন মানচিত্র নেই।
কম্প্রেশন প্রয়োজন। মধ্যবর্তী সংশ্লেষণ প্রয়োজন। এটা গঠন করা প্রয়োজন.
"এটাই সব ঘটেছে" নয়, কিন্তু:
- উদ্দেশ্য এখনও বৈধ;
- বর্তমান অনুমান;
- ফাইলগুলি ইতিমধ্যে চেক করা হয়েছে;
- সিদ্ধান্ত নেওয়া;
- খোলা ঝুঁকি;
- পরবর্তী পদক্ষেপ।
এটি এজেন্টকে কম নাটকীয় এবং আরও সহায়ক করে তোলে। তাকে স্মার্ট বলে মনে হয় না, বরং সে একটি পরিপাটি ডেস্কের সাথে কাজ করে বলে।
দলগুলির জন্য প্রসঙ্গ প্রকৌশল, প্রম্পট শিল্পীদের জন্য নয়
এই বিষয়টি আমার আগ্রহের কারণ হল যে এটি ব্যক্তি থেকে সিস্টেমে দায়িত্ব পরিবর্তন করে।
প্রম্পট ইঞ্জিনিয়ারিংয়ে, যিনি মডেলের সাথে সবচেয়ে ভালো কথা বলতে পারেন তিনি প্রায়শই জয়ী হন। প্রসঙ্গ প্রকৌশলে, যে দলটি তার কাজকে সবচেয়ে ভালোভাবে সংগঠিত করে তারা জয়ী হয়: ডকুমেন্টেশন, কনভেনশন, সমস্যা, লগ, পরীক্ষা, মালিকানা, নামকরণ, উৎস।
একটি পরিষ্কার সংগ্রহস্থল একটি ভাল প্রসঙ্গ হয়ে ওঠে। একটি ভাল লিখিত সমস্যা ভাল জ্বালানী হয়ে ওঠে. একটি আপডেট করা রানবুক টোকেন এবং উদ্বেগ সংরক্ষণ করে। একটি পরিষ্কার চেঞ্জলগ হ্যালুসিনেশন হ্রাস করে।
এটা ভালো এবং কিছুটা অস্বস্তিকর খবর। সুন্দর কারণ এটি ভাল অনুশীলনকে পুরস্কৃত করে। অসুবিধাজনক কারণ আপনি একটি চতুর প্রম্পট দিয়ে সবকিছু সমাধান করতে পারবেন না।
এজেন্টরা তাদের খুঁজে পাওয়া সিস্টেমের স্বাস্থ্যবিধি প্রশস্ত করে।
আমি আগামীকাল কীভাবে এটি প্রয়োগ করব
যদি আমি একটি বাস্তব প্রকল্পে প্রসঙ্গ প্রকৌশল প্রবর্তন করি, আমি ছোট জিনিস থেকে শুরু করব:
- একটি সংক্ষিপ্ত এবং রক্ষণাবেক্ষণ প্রকল্প নির্দেশনা ফাইল;
- প্রত্যাশিত আউটপুটের ভাল উদাহরণ;
- উপলব্ধ সরঞ্জামগুলির একটি তালিকা এবং সেগুলি ব্যবহার করার ক্ষেত্রে;
- স্থাপত্য সংক্রান্ত সিদ্ধান্তগুলি একটি উদ্ধৃত পদ্ধতিতে লেখা;
- ন্যূনতম বাধ্যতামূলক প্রসঙ্গ সহ সমস্যা;
- লগ এবং পরীক্ষা পুনরুদ্ধার করা সহজ;
- ক্রমাগত মেমরি মানুষের দ্বারা পরিবর্তনযোগ্য।
তারপরে আমি একটি সাধারণ জিনিস পরিমাপ করব: কতবার এজেন্টকে স্পষ্টীকরণের জন্য জিজ্ঞাসা করতে হয় বা ভুল পথে চলে যায়?
যদি এটি প্রায়ই ঘটে তবে আমি এখনই একটি বড় মডেল যোগ করব না। আমি প্রসঙ্গ তাকান হবে.
আমার পড়া
কনটেক্সট ইঞ্জিনিয়ারিং একটি বিট ফুলানো শব্দ, হ্যাঁ. কিন্তু ধারণা শব্দ.
এটা আমাদের মনে করিয়ে দেয় যে একজন এজেন্টের বুদ্ধিমত্তা শুধু মডেলের মধ্যে থাকে না। এটি সেই পরিবেশের মধ্যে রয়েছে যা আমরা তার জন্য প্রস্তুত করি: তিনি কী দেখেন, কী মনে রাখেন, তিনি কী করতে পারেন, তাকে কী করতে নিষেধ করা হয়েছে, কোন উত্সগুলিকে তিনি সত্য হিসাবে স্বীকৃতি দেন।
মানুষের অংশটি হল: প্রসঙ্গটি ভালভাবে প্রস্তুত করা একটি যত্নের একটি রূপ। এটি এজেন্টকে বলছে, কিন্তু দলকেও বলছে, "আমি চাই না আপনি অনুমান করুন, আমি চাই আপনার যা প্রয়োজন তা আপনার কাছে থাকুক।"
কম জাদু। পরিচ্ছন্ন রুম। এজেন্টদের এটি আমাদের যতটা প্রয়োজন।