مواد پر جائیں
24/30باب 24 از 30

Context Engineering: آپ کا agent ٹرن 40 پر کم عقل کیوں ہو جاتا ہے

prompt میں ایک fact تین لائن نیچے سرکانے سے retrieval 84% سے 19% رہ گئی۔ مسئلہ window کبھی نہیں تھا۔

اس صفحے پر

یہ ایک prompt ہے جو greedy decoding کے ساتھ اسی model کو 288 بار بھیجا گیا۔ یہ 853 tokens لمبا ہے۔ اس میں پچیس support tickets کا register ہے — شہر، queue، priority، owner، extension — اور ایک سوال: Marta Ferreira کو اپنی ticket کے بارے میں call back چاہیے۔ اس ticket کے لیے direct line extension کیا ہے؟

register ہر بار ایک جیسا ہے۔ model ہر بار ایک جیسا ہے۔ صرف ایک چیز بدلتی ہے: پچیس لائنوں میں سے جواب کس لائن میں ہے۔

جواب کا slothitsretrieval rate95 % interval
25 میں سے 127/3284 %68–93 %
25 میں سے 46/3219 %9–35 %
25 میں سے 76/3219 %9–35 %
25 میں سے 109/3228 %16–45 %
25 میں سے 138/3225 %13–42 %
25 میں سے 166/3219 %9–35 %
25 میں سے 196/3219 %9–35 %
25 میں سے 223/329 %3–24 %
25 میں سے 257/3222 %11–39 %

ہر قطار میں بتیس trials، ہر trial میں ایک مختلف ticket، اور Chapter 4 سے Wilson intervals، کیونکہ بیس میں سے سترہ کسی چیز کو کسی چیز سے الگ نہیں کرتے۔

Slot ایک کا جواب 84 % بار درست آتا ہے۔ ہر دوسری position 9 % اور 28 % کے درمیان رہتی ہے، اور ان آٹھوں intervals میں overlap ہے، اس لیے ایماندار reading یہ ہے: پہلا، اور پھر باقی سب۔ Liu et al. نے ایک U پایا — دونوں سروں پر high، بیچ میں low — اور یہاں recency arm صاف نظر نہیں آتا: آخری slot میں 22 % middle والوں کے پھیلاؤ کے اندر ہے۔ جو کسی چیز کے اندر نہیں ہے وہ slot 1 سے slot 4 تک کی گراوٹ ہے۔ تین لائنیں۔

اس model کا context window 32,768 tokens ہے۔ prompt ان میں سے 853 استعمال کرتا ہے، 2.6 %۔ کچھ overflow نہیں ہوا، کچھ truncate نہیں ہوا، کوئی limit نہیں پہنچی، کوئی warning نہیں آئی۔ model نے ایک ایسی لائن ڈھونڈنا چھوڑ دی جو اسے دی گئی تھی، صرف اس لیے کہ وہ لائن پچیس کی list میں تین positions نیچے چلی گئی۔

Chapter 16 نے context window کی قیمت نکالی اور آخر میں خبردار کیا کہ دس لاکھ tokens ہونا انہیں استعمال کرنا نہیں ہے، اور یہاں کی طرف اشارہ کیا۔ یہ وہی جگہ ہے۔

تفصیلات دکھائیں

اس chapter کو پچھلے chapters سے کیا چاہیے۔

  • Chapter 9 نے self-attention اور اس کی O(n2)O(n^2) cost derive کی۔ ہر token ہر دوسرے token پر attend کرتا ہے، اس لیے pairwise relations کی تعداد length کے square کے ساتھ بڑھتی ہے۔ یہ fact نیچے استعمال ہوتا ہے، دوبارہ derive نہیں کیا جاتا۔
  • Chapter 16 نے پانچ billable token buckets گنے اور دکھایا کہ conversation کا bill quadratically بڑھتا ہے۔ یہ chapter بتاتا ہے کہ agent کو توڑے بغیر اس کے بارے میں کیا کیا جائے۔
  • Chapter 18 نے tool catalogue بنایا اور measure کیا کہ بیس tools نے selection کو نقصان نہیں پہنچایا مگر prompt کو چھ گنا کر دیا۔ یہاں ان کا bill ہے۔
  • Chapter 19 نے retrieval بنایا۔ نیچے just-in-time retrieval اسی chapter کو agent کی اپنی history پر apply کرنا ہے؛ chunking دوبارہ explain نہیں کی جاتی۔
  • Chapter 23 نے harness بنایا۔ اس chapter میں ہر چیز ایک policy ہے جو اس کے loop کے اندر چلتی ہے، اسی لیے یہ TypeScript ہے: artefact ایک long-lived service ہے جو state رکھتی ہے، tensors رکھنے والی notebook نہیں۔

Anthropic نے September 2025 میں لکیر کھینچی، اور دونوں sentences ساتھ ساتھ رکھنے کے قابل ہیں۔ Prompt engineering "optimal outcomes کے لیے LLM instructions لکھنے اور organize کرنے کے methods" ہے۔ Context engineering "LLM inference کے دوران tokens (information) کے optimal set کو curate اور maintain کرنے کی strategies کا set ہے، جس میں prompts کے باہر سے وہاں آنے والی تمام دوسری information بھی شامل ہے"۔1

عملی فرق کب اور کس کے ذریعے ہے۔ prompt ایک بار، ایک شخص کے ذریعے authored ہوتا ہے، اور review ہوتا ہے۔ context ہر call پر code کے ذریعے assemble ہوتا ہے جسے کوئی دیکھ نہیں رہا، ایسے material سے جسے کسی نے ہاتھ سے نہیں لکھا: history کے چالیس turns، چھ tool results، چار retrieved passages، user profile، بارہ JSON schemas۔ Chapter 15 نے measure کیا کہ بہتر instructions کیا خریدتی ہیں۔ یہ chapter باقی نوے فیصد tokens کے بارے میں ہے، جو خود بخود آتے ہیں۔

وہی document اس resource کا نام بھی لیتا ہے جو یہ سب خرچ کرتے ہیں: models کے پاس "attention budget" ہوتا ہے جس سے وہ context کی بڑی volumes parse کرتے وقت draw کرتے ہیں۔ ہر نیا token اس budget کو کسی نہ کسی مقدار سے کم کرتا ہے۔ اور وہ symptom کا نام بھی لیتا ہے: "جیسے جیسے context window میں tokens کی تعداد بڑھتی ہے، model کی اس context سے information کو accurately recall کرنے کی صلاحیت کم ہوتی ہے" — context rot۔1

یہ آخری sentence behaviour کے بارے میں claim ہے، جس کا مطلب ہے کہ اسے check کیا جا سکتا ہے، اور اس page کے اوپر کی table وہ check ہے۔

Chapter 22 کے local endpoint کے خلاف چالیس lines — ایک چھوٹا Python server جو CPU پر Qwen2.5-0.5B-Instruct رکھتا ہے اور chat-completions shape میں بات کرتا ہے، تاکہ loop TypeScript رہے اور tensors port کے دوسری طرف رہیں۔

position.tsTS
const DEPTHS = [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1];

for (const d of DEPTHS) {
  const slot = Math.round(d * (N - 1));
  let hits = 0, other = 0;
  for (let t = 0; t < TRIALS; t++) {
    const recs = buildRecords(N, 1000 + t);          // 25 unique tickets
    const gold = recs[Math.floor(rng(7 + t)() * N)]; // a different one each trial
    const rest = recs.filter((x) => x.ticket !== gold.ticket).slice(0, N - 1);
    const lines = [...rest.slice(0, slot).map((x) => x.line),   
                   gold.line,                                   
                   ...rest.slice(slot).map((x) => x.line)];     
    const r = await complete(prompt(lines, ask(gold.owner)), { maxTokens: 12 });
    const said = /\d{4}/.exec(r.text)?.[0];
    if (said === String(gold.ext)) hits++;
    else if (said && recs.some((x) => String(x.ext) === said)) other++;
  }
}

other counter ہی disappointing result کو useful result میں بدلتا ہے: جب model غلط ہے، کیا وہ lost ہے یا confident؟

جواب confident ہے۔ آٹھ non-first positions میں، 205 غلط answers میں سے 136 کسی دوسری ticket کا extension تھے — ایک حقیقی چار ہندسوں کا number، correctly formatted، غلط line سے پڑھا گیا۔ slot 1 پر پانچ misses میں سے صرف ایک ایسا تھا؛ slot 7 پر چھبیس میں سے اکیس تھے۔

production میں یہی distinction اہم ہے۔ جو model کہتا ہے مجھے یہ نہیں مل رہا وہ bug ہے جسے آپ notice کرتے ہیں؛ جو model ساتھ والی row کا number return کرتا ہے وہ bug ہے جسے آپ ship کرتے ہیں، کیونکہ screen پر دونوں ایک جیسے لگتے ہیں۔ یہ وہ failure ہے جس کے خلاف Chapter 19 نے verifiable citations بنائی تھیں، مگر اب یہ index کے بجائے prompt کے اندر سے آ رہی ہے۔

یہ صرف کہاں نہیں۔ یہ کتنا بھی ہے۔

اس حصے کا لنک: یہ صرف کہاں نہیں۔ یہ کتنا بھی ہے۔

Position ایک axis ہے۔ Length دوسری ہے، اور test کرنا آسان ہے: answer کو middle میں رکھیں اور list بڑھاتے جائیں۔

recordsprompt tokenshitsrate95 % intervalwrong lineneither
19718/2090 %70–97 %02
315911/2055 %34–74 %90
83153/2015 %5–36 %170
206952/2010 %3–30 %162
401,3243/2015 %5–36 %152
802,5871/205 %1–24 %181
1404,4772/2010 %3–30 %180

ایک record اور 97 tokens: 90 %۔ تین records اور 159 tokens: 55 %۔ آٹھ records اور 315 tokens: 15 %، اور اس کے بعد 140 records اور 4,477 tokens تک flat اور low۔ سارا collapse list کی پہلی اور آٹھویں line کے درمیان ہو جاتا ہے۔

آخری column ہر وہ چیز ہے جو نہ درست extension ہے نہ کسی دوسرے record کا، جو page پر ایک single record کے ساتھ وہ واحد جگہ ہے جہاں wrong answer جا سکتا ہے۔ ایک record پر دو misses کو round away کرنے کے بجائے report کرنا ضروری ہے، کیونکہ دونوں میں سے کوئی refusal نہیں تھا: ایک نے ایسے register کے جواب میں 5806 کہا جس کی اکلوتی line 5805 کہتی ہے۔ 97 tokens پر، single candidate کے ساتھ بھی یہ model بیس میں دو بار digit غلط copy کرتا ہے، اور یہی وہ floor ہے جس کے against باقی سب measure ہوتا ہے۔

دو باتیں نکلتی ہیں۔ بڑا context زیادہ بھیجنے کا حق خریدتا ہے، پڑھے جانے کی certainty نہیں: اس model کے پاس 32,768-token window ہے اور اس task پر working range چند سو tokens کی ہے۔ اور کوئی threshold نہیں، کوئی cliff نہیں، کوئی "context full" state نہیں — degradation تیسرے record پر شروع ہے اور آٹھویں تک complete، window کے ایک فیصد پر۔ context limit جو بھی ہے، اس کو govern کرنے والی چیز وہ نہیں۔

عام طور پر دو mechanisms پیش کیے جاتے ہیں۔ پہلا Chapter 9 کی arithmetic ہے، جسے Anthropic اسی terms میں بیان کرتا ہے جیسے یہ course کرتا ہے: models "transformer architecture پر based ہیں، جو ہر token کو پورے context میں ہر دوسرے token پر attend کرنے کے قابل بناتا ہے۔ اس سے n tokens کے لیے n² pairwise relationships بنتے ہیں"۔1 لمبی sequence پر attention زیادہ material پر وہی operation apply کرنا نہیں؛ یہ probability mass کا ایک fixed budget ہے جو زیادہ competitors پر spread ہوتا ہے۔ دوسرا training ہے: models short sequences زیادہ دیکھتے ہیں long ones کے مقابلے میں، اس لیے long-range positional patterns network کا سب سے کم practised حصہ ہیں۔ یہ argument ہے، measurement نہیں، اور یہ chapter اسے settle نہیں کر سکتا۔

جو settled ہے وہ shape ہے، اور 2023 سے ہے۔ Liu et al. نے model families اور sizes میں multi-document question answering اور key-value retrieval test کیا اور پایا کہ "performance اکثر highest ہوتی ہے جب relevant information input context کے beginning یا end پر ہوتی ہے، اور significantly degrade ہوتی ہے جب models کو long contexts کے middle میں relevant information access کرنی پڑتی ہے، یہاں تک کہ explicitly long-context models کے لیے بھی2 Chapter 15 نے اسی paper سے اپنی position rule لی؛ Chapter 19 نے اسی سے وجہ لی کہ بیس retrieved chunks چار سے worse score کر سکتے ہیں۔ اس fact کی practical form صرف ایک sentence ہے جس پر آپ کو act کرنا چاہیے: آپ کے اپنے model پر، آپ کے اپنے data کے ساتھ، اسے measure کرنے میں پانچ منٹ لگتے ہیں، اور کوئی published curve آپ کی curve کا substitute نہیں۔

کسی کو نہیں معلوم ان کی window میں کیا ہے

اس حصے کا لنک: کسی کو نہیں معلوم ان کی window میں کیا ہے

کسی team سے پوچھیں کہ ان کے agent کا context کیا fill کرتا ہے تو estimate ملتا ہے، کیونکہ کوئی API جواب return نہیں کرتی: response آپ کو prompt_tokens دیتی ہے، سب کے لیے ایک number۔

آپ چار counts اور تین subtractions سے breakdown recover کر سکتے ہیں — پورا rendered prompt، وہی tool definitions کے بغیر، system message اکیلا ان کے ساتھ اور ان کے بغیر، اور سب کچھ tool results removed کے ساتھ:

buckets.tsTS
async function buckets(messages: Msg[]) {
  const sys = messages.slice(0, 1);
  const withoutResults = messages.filter((m) => m.role !== "tool");
  const [total, sysWithTools, sysNoTools, noResults] = await Promise.all([
    countPrompt(messages, CATALOGUE),        // everything
    countPrompt(sys, CATALOGUE),             // system + scaffolding + schemas
    countPrompt(sys),                        // system + scaffolding
    countPrompt(withoutResults, CATALOGUE),  // everything but tool output
  ]);
  return {
    system: sysNoTools,
    tools: sysWithTools - sysNoTools,                                  
    toolResults: total - noResults,                                    
    conversation: total - sysWithTools - (total - noResults),          
    total,
  };
}

countPrompt tokenizing سے پہلے model کا اپنا chat template apply کرتا ہے، جو سننے سے زیادہ اہم ہے: آپ کا text وہ نہیں جو count ہوتا ہے۔ Role markers، tool-calling preamble اور schema rendering سب tokens ہیں جن کی قیمت آپ دیتے ہیں اور کبھی type نہیں کرتے۔ Chapter 7 نے tokenizer بنایا اور Chapter 16 نے js-tiktoken کے ساتھ count کیا؛ یہاں count اسی model سے آتا ہے جو prompt پڑھے گا، جو واحد count ہے جو exactly right ہے۔

اب ایک real agent کو اس سے گزاریں: incident investigation کے چالیس turns، بارہ tools، ایک fake operations environment جو realistic log dumps اور metric series return کرتا ہے۔

turnsystemtool definitionsconversationtool resultstotal promptinput billed this turn
1851,8171554902,5474,370
2851,8172825292,7135,275
5851,8176471,8704,4198,093
10851,8179462,1414,9894,951
20851,8171,5002,9436,3456,316
30851,8172,1874,0008,0898,059
40851,8173,0535,67710,63221,090

پہلی row کو آخری کے مقابل پڑھیں۔

turn 1 پر prompt 2,547 tokens ہے اور اس کا 71 % tool definitions ہیں۔ system prompt 3 % ہے۔ user نے جو type کیا وہ 6 % ہے۔ agent نے ابھی کچھ نہیں کیا اور پہلے ہی JSON schema کے 1,817 tokens اٹھائے ہوئے ہے۔

turn 40 تک prompt 10,632 tokens ہے اور shares الٹ چکے ہیں: definitions 17 %، conversation 29 %، tool results 53 %۔ Tool output نے turn 5 پر definitions کو پیچھے چھوڑ دیا؛ conversation نے انہیں turn 25 تک نہیں چھوڑا، اس لیے session کے پہلے ساٹھ فیصد میں tool catalogue ان تمام باتوں سے بڑا تھا جو کہی گئی تھیں۔

پھر total۔ 57 model calls میں run نے final context 10,632 کے لیے 370,291 input tokens bill کیے — آخری prompt تقریباً پینتیس بار pay ہوا، جو Chapter 16 کا quadratic ہے جس کے اوپر agent کا multiplier ہے۔ ان 370,291 میں سے، 103,569، یعنی bill ہونے والی ہر چیز کا 28 %، بارہ tool definitions تھے، جو ہر call پر byte-identical دوبارہ بھیجے گئے۔

tool catalogue agent کی سب سے بڑی fixed cost ہے اور invisible ہے، کیونکہ آپ اسے کبھی نہیں دیکھتے: آپ objects کی array pass کرتے ہیں اور provider اسے آپ کے لیے prompt میں render کرتا ہے۔ اسی بارہ tools پر measure کیا گیا:

tooldefs.ts outputTEXT
system prompt + chat scaffolding, no tools:        85 tokens
all twelve definitions:                          1,817 tokens
  of which fixed tool-calling scaffolding:         126 tokens
three tools instead of twelve:                     605 tokens
same twelve, one-sentence descriptions,
  no parameter prose:                            1,291 tokens  (-29 %)

ہر tool کی marginal cost get_current_time کے لیے 80 tokens سے چلتی ہے، جو ایک string لیتا ہے، search_tickets کے لیے 263 تک، جو enum اور ہر parameter کے لیے guidance کے ایک sentence کے ساتھ چار parameters لیتا ہے۔ یہ Chapter 18 کی central advice کے پیچھے exchange rate ہے کہ description ہی API ہے: اچھی description agent کی باقی زندگی میں ہر request پر تقریباً سو tokens cost کرتی ہے۔ تین consequences۔

جو tool آپ use نہیں کرتے وہ بھی bill ہوتا ہے۔ agent نے بارہ میں سے سات call کیے۔ باقی پانچ نے 57 requests میں سے ہر ایک پر 697 tokens cost کیے — کل 39,729، run کے bill کی دسویں سے زیادہ، ان capabilities کے لیے جنہیں اس نے کبھی touch نہیں کیا۔ ان پانچ میں سے ایک trace کی sharpest detail رکھتا ہے: model نے تین بار read_log call کرنے کی کوشش کی، جو exist نہیں کرتا۔ وہ tool جو اسے چاہیے تھا search_logs تھا، catalogue میں 237 tokens پر دوسری سب سے expensive definition۔ اس نے اس definition کے لیے 57 بار pay کیا، کبھی use نہیں کیا، اور اس کا نام کبھی نہیں ڈھونڈا۔

prose trim کرنا سب سے سستی optimisation ہے، اور یہ trade ہے۔ descriptions کو ایک sentence تک کاٹنے اور parameter documentation drop کرنے سے ہر call پر 526 tokens، 29 per cent، saved ہوئے، logic کی ایک line چھوئے بغیر — اور model نے tools worse call کیے، جو Chapter 18 نے measure کیا۔ point یہ ہے کہ اس trade کے دونوں sides اب ایک ہی unit میں ہیں۔

کسی scale پر definitions بھیجنا ہی sense نہیں رکھتا۔ Anthropic نے November 2025 میں اس پر number رکھا: connected servers کا بڑا set request پڑھنے سے پہلے definitions کے "hundreds of thousands of tokens" process کراتا ہے، اور اسے code execution سے replace کرنا — agent کا صرف وہ definitions discover اور load کرنا جن کی اسے ضرورت ہے — "token usage کو 150,000 tokens سے 2,000 tokens تک کم کرتا ہے، وقت اور cost میں 98.7% saving"۔3 باقی chapter جیسا ہی idea، history کے بجائے schemas پر apply: index رکھیں، entry کو demand پر resolve کریں۔

اس forty-turn transcript میں دو چیزیں planted تھیں۔ turn 2 پر، کسی real work سے پہلے، user ایک standing rule بیان کرتا ہے: آپ جو بھی ticket کھولیں اسے میرے employee number، 4417، کے تحت file کرنا ہے۔ turn 19 پر، incident کے middle میں، ایک fact: affected shard pay-shard-7 ہے، payments team نے confirm کیا ہے۔ turn 40 پر user agent سے incident ticket open کرنے کو کہتا ہے، جس کے لیے دونوں چاہیے۔ ہر probe چھ different phrasings میں پوچھا جاتا ہے اور چھ میں score ہوتا ہے — greedy decoding deterministic ہے، اس لیے ایک call ایک unrepeatable yes یا no دیتا ہے اور چھ ایک rate دیتے ہیں۔

transcript پھر سات context policies کے تحت replay ہوتا ہے۔ Replayed، re-run نہیں، جان بوجھ کر: messages، tool calls اور tool results ساتوں میں byte-identical ہیں، اس لیے واحد variable ہے ہر policy نے کیا keep کرنا choose کیا۔ Chapter 16 نے دکھایا کہ sliding window ایک بری economic move کیوں ہے، کیونکہ یہ cacheable prefix destroy کرتی ہے۔ یہاں دیکھیں یہ behaviour کے ساتھ کیا کرتی ہے:

context policy40 turns کے دوران input tokensturn-40 promptturn-2 ruleturn-19 fact
full history370,29110,6326/65/6
sliding window، last 12 messages157,5782,9225/60/6
4 turns سے پرانے tool results elide243,4456,3116/63/6
ہر 6 turns پر compaction195,5153,2206/60/6
compaction plus model-written notes200,8493,2866/60/6
user کے اپنے turns کو front پر pin کریں168,5503,5596/65/6
user کے اپنے turns کو back پر pin کریں168,8353,5646/66/6
control: صرف دو turns اور کچھ نہیں1,9816/66/6

compaction rows میں compacting کی cost شامل ہے: سات summaries کے لیے 18,581 input tokens اور note-taker کے لیے 3,392 مزید۔ control row اس لیے ہے کہ zero کو zero پڑھا جا سکے — دو messages alone کے ساتھ 1,981-token prompt میں یہ model دونوں probes perfectly answer کرتا ہے، اس لیے کوئی row task کے too hard ہونے کی وجہ سے نہیں۔

Full history یاد رکھتی ہے، اور table کی سب سے expensive چیز ہے: ایک session کے لیے 370,291 input tokens جس کا durable content دو sentences ہے۔

یہ اس سوال کا جواب دیتا ہے جو opening نے کھلا چھوڑا تھا۔ 10,632-token transcript ایک fact کیوں hold کرتی ہے جسے 853-token register lose کر دیتا ہے؟ کیونکہ length غلط variable ہے۔ register پچیس identical sentences میں پچیس four-digit extensions رکھتا ہے — مطلوبہ answer کے لیے چوبیس near-perfect decoys۔ transcript میں exactly ایک employee number اور ایک shard name ہے۔ Context rot volume سے پہلے interference ہے، اسی لیے اوپر 205 wrong answers میں سے 136 neighbour کی value تھے۔ window کے بارے میں useful question یہ نہیں کہ وہ کتنی لمبی ہے؛ یہ ہے کہ اس میں کتنی چیزیں answer جیسی لگتی ہیں۔

sliding window 57 % سستی ہے اور incident کھو چکی ہے۔ employee number صرف اس لیے survive کرتا ہے کہ agent نے اسے recent turns میں repeat کیا تھا۔ shard، جو turn 19 پر ایک بار stated تھا، last twelve messages میں نہیں ہے — اور model یہ نہیں کہتا۔ چھ بار پوچھنے پر اس نے "the affected payment shard is shard 4417" جواب دیا، employee number تک پہنچتے ہوئے، جو اس کی window میں left واحد دوسرا identifier تھا، اور دو بار "pool"، جو log line کے string pool_exhausted سے اٹھایا گیا تھا۔

Compaction cheap ہے اور وہی fact کھو دیتی ہے۔ سات summaries، model نے explicit instruction کے تحت لکھیں کہ identifiers، numbers، standing instructions اور open questions keep کریں، اور pay-shard-7 ان میں سے کسی relevant summary میں نہیں؛ چھ guesses shard 1، pay_shard_1 اور pool تھے۔ Compaction loudly fail نہیں کرتی۔ یہ ایک fluent، plausible، بہت shorter session produce کرتی ہے جس نے خاموشی سے ایک line drop کر دی ہے۔

تین rows نے turn-19 fact پر 0/6 score کیا — sliding window، compaction، اور compaction with notes۔ ان کے درمیان اٹھارہ wrong answers، اور ان میں سے ایک بھی "I do not know" نہیں تھا۔

پھر وہ row جو embarrassing ہونی چاہیے۔ user کے اپنے چالیس messages verbatim رکھنا، plus last four turns in full اور کچھ نہیں، 168,550 tokens cost کرتا ہے — full history سے 54 % کم — اور دونوں probes کو full history جتنا یا بہتر answer کرتا ہے۔ نہ summariser، نہ note-taker، نہ second model: role === "user" پر ایک filter۔ user کے words agent کی window میں سب سے سستے high-value tokens ہیں، اور زیادہ تر designs انہیں باقی سب کے ساتھ discard کر دیتے ہیں۔

آخری دو rows opening table دوبارہ ہیں، agent کے اندر۔ وہی pinned block، system message سے prompt کے end تک move کیا گیا: 5/6 سے 6/6۔ چھ trials پر یہ significant difference نہیں اور اسے ایسا پیش نہیں کیا جا رہا — یہ reminder کے طور پر ہے کہ کہاں ایک parameter ہے جسے آپ set کر رہے ہیں، چاہے آپ کو معلوم ہو یا نہیں۔

نیچے چار strategies Anthropic کی ہیں، اسی order میں، اگرچہ صرف آخری تین اس کی long-horizon list ہیں۔1 چاروں ایک instruction کی variations ہیں: جو fetch کیا جا سکتا ہے اسے carry نہ کریں، اور جسے compressed carry کیا جا سکتا ہے اسے raw carry نہ کریں۔

Content pre-load نہ کریں۔ identifiers رکھیں — file path، query، ticket number، tool name اور اس کے arguments — اور ضرورت پڑنے پر انہیں resolve کریں۔ اوپر agent میں سب سے بڑا bucket tool output ہے جو ایک بار read ہوا، ایک بار use ہوا اور پھر تیس مزید turns تک carry ہوا۔ چار turns سے پرانے ہر result کو ایک stub سے replace کرنا جو کہے وہ کیا تھا اور واپس کیسے لانا ہے، چھ lines ہیں:

policies.tsTS
const elide: Policy = (h) => [SYSTEM, ...h.flatMap((turn, ti) =>
  turn.map((m) => (ti < h.length - 4 && m.role === "tool"
    ? { role: "tool", name: m.name,
        content: `[${m.name} result from turn ${ti + 1}, ${m.content.length} chars, ` +
                 `elided; call ${m.name} again with the same arguments to re-read it]` }
    : m)))];

یہ Chapter 19 ہے جس میں corpus کی جگہ agent کا اپنا past ہے۔ retrieval machinery پہلے ہی موجود ہے — یہی tool catalogue ہے۔

جب transcript threshold سے گزرے، اس کے oldest part کو model-written summary سے replace کریں اور continue کریں۔ summary لکھنے والا prompt ہی پورا design ہے، اور compaction وہیں جیتی یا ہارتی ہے: identifiers، numbers، standing instructions اور open questions keep کریں؛ pleasantries اور وہ tool output drop کریں جسے آپ دوبارہ fetch کر سکتے ہیں۔

Compaction by construction lossy ہے، یہ کیا lose کرتی ہے وہ model آپ کی طرف سے choose کرتا ہے، اور جب وہ غلط choose کرے تو کچھ error نہیں دیتا۔ یہ free بھی نہیں: ہر compaction ایک extra call ہے جس کا input وہ چیز ہے جو compact ہو رہی ہے۔

context کے باہر ایک small store maintain کریں اور ہر turn پر اسے whole re-inject کریں۔ summary کے برخلاف یہ append-only اور addressable ہے: turn 2 پر لکھی rule turn 400 پر بھی verbatim موجود ہے۔ یہاں measured version ہر user message کے بعد model سے پوچھتا ہے کہ کیا اس میں کوئی durable چیز ہے:

notes.tsTS
const r = await complete([
  { role: "system", content:
      "You keep a durable note file for a support session. Given one user message, " +
      "output one short note ONLY if it states a standing rule, an identifier or a fact " +
      "that must survive the rest of the session. Otherwise output exactly NONE." },
  { role: "user", content: `Turn ${i + 1}: ${user}` },
], { maxTokens: 40 });
if (!/^none\b/i.test(r.text.trim())) notes.push(`turn ${i + 1}: ${r.text.trim()}`);

یہ یہاں highest ceiling والی strategy ہے، اور یہی measurement میں failed ہوئی۔ چالیس user messages میں note-taker نے تین notes keep کیے اور دونوں important نہیں: runbook advice کی ایک line، session کے ending کا announcement، اور Europe/Madrid is currently 13:45 — ایک time جو اس نے invent کیا، کیونکہ جس tool کو وہ paraphrase کر رہا تھا وہ 09:52 UTC return کر رہا تھا۔ note-taker ایک model ہے، اور اس chapter کی ہر چیز اس پر بھی apply ہوتی ہے۔

Focused task کو اس کی اپنی window دیں — اس کا اپنا system prompt، اس کا اپنا small catalogue، parent کی history میں سے کچھ نہیں — اور transcript کے بجائے short answer return کریں۔ Chapter 23 نے ایک کو tool schema کے پیچھے رکھا اور bill یہاں چھوڑا؛ bill یہ ہے کہ child کا answer ہی child کی window کا واحد حصہ ہے جس کی قیمت parent کبھی دیتا ہے۔

sub-agent اوپر table میں نہیں ہے کیونکہ یہ چالیس turns کے لیے نہیں چلتا: یہ ایک بار، ایسی window میں چلتا ہے جسے کسی نے اس کے لیے scoped کیا۔ system prompt، turns 17 سے 19 اور کچھ نہیں — 2,737 tokens — دیے جانے پر اس نے shard probe 6/6 answer کیا، table کی ہر policy سے بہتر، اور employee probe 0/6، کیونکہ وہ number ان تین turns میں نہیں تھا جو اسے دیے گئے۔

یہ sub-agents ہیں دو numbers میں: clean window intelligence نہیں، scope ہے، اور scoping پہلے سے code کرتا ہے جسے پہلے ہی معلوم ہونا چاہیے کہ کون سے turns matter کرتے ہیں۔ ان answers میں ایک اور چیز preserve کرنے کے قابل ہے۔ یہی واحد policy تھی جس نے کچھ invent کرنے کے بجائے "None available" reply کیا۔ small، coherent context والا model جانتا ہے کہ کیا missing ہے؛ large، noisy context والا نہیں۔

agent memory کے بارے میں تقریباً ہر confused conversation ایک لفظ پہنے تین mechanisms ہے۔ ان کی lifetimes، owners اور failure modes مختلف ہیں، اور جو system انہیں ایک ہی place میں رکھتا ہے اسے ایک مسئلہ ہے جو اس نے ابھی notice نہیں کیا۔

conversation historyretrievalpersistent user memory
holdsاس session میں جو کہا گیاآپ کے documentsکسی person کے بارے میں facts
livesایک sessionre-index ہونے تکتمام sessions میں، ہمیشہ
written byloop، automaticallyingestion pipelinemodel، on purpose
enters the promptfull، ہر callچار passages، جب query match کرےfull، ہر call
fails byبڑھتے بڑھتے rot ہوناغلط chunk retrieve کرناآپ کے بارے میں غلط چیز remember کرنا
built inChapter 23Chapter 19یہ chapter

academic framing CoALA کی ہے، جو language agents کو "modular memory components" کے گرد organize کرتی ہے اور working memory کو episodic، semantic اور procedural stores سے separate کرتی ہے۔4 MemGPT اسی idea کو literal لیتا ہے، operating systems سے virtual memory borrow کرتے ہوئے: window کے اندر fast tier، اس کے باہر slow tier، اور model خود function calls کے ساتھ data کو ان کے درمیان move کرتا ہے۔5 دونوں وہ question force کرتے ہیں جس کا product کو ویسے بھی answer دینا ہے — یہ نہیں کہ میں کتنا keep کر سکتا ہوں، بلکہ یہ کس store میں belong کرتا ہے، اور کب expire ہوتا ہے۔

practical test ہر fact کے لیے ایک question ہے: کل بھی کیا true رہنا چاہیے؟ turn 12 کا tool result، کچھ نہیں۔ session کی summary، session end ہونے تک۔ یہ کہ user کا employee number 4417 ہے، جب تک وہ job change نہ کریں۔ تین answers، تین stores۔

اب آپ measure کر سکتے ہیں کہ window میں کیا ہے، decide کر سکتے ہیں کہ اس میں کیا رہے، اور اس agent کے درمیان فرق بتا سکتے ہیں جو کچھ بھول گیا تھا اور جو اسے carry کر رہا تھا مگر دیکھا نہیں۔

چار strategies میں آخری وہ ہے جو یہاں fit نہیں ہوتی۔ sub-agent context policy نہیں، دوسرا agent ہے، اور جیسے ہی دو ہوں آپ کو decide کرنا پڑتا ہے کہ ان کے درمیان کیا pass ہو اور charge کس کے پاس ہو۔ Chapter 25 یہی ہے: پانچ orchestration patterns اور ان کے names اصل میں کہاں سے آتے ہیں، دو topologies جو mix up ہوتی ہیں — sub-agent سے پوچھ کر answer واپس لینا، بمقابلہ اسے conversation hand کرنا اور واپس نہ لینا — اور measured finding کہ جس task کی یہ قیمت لگاتا ہے اس پر simpler arrangement جیتتا ہے — پھر وہ test کہ کب یہ جیتنا چھوڑتا ہے۔

یہ بھی exactly وہی inherit کرتا ہے جو اس chapter نے ابھی measure کیا۔ sub-agent summary return کرتا ہے۔ summary ایک compaction ہے جو آپ نے نہیں لکھی، ایسے model سے produced جس کی window آپ نہیں دیکھ سکتے، اور parent کے پاس good summary کو confident wrong summary سے الگ کرنے کا کوئی طریقہ نہیں — وہی distinction جس نے اس page کے اوپر 84 % کو 19 % سے الگ کیا، اور اٹھارہ missing facts کو اٹھارہ invented ones میں بدل دیا۔ تو: جب sub-agent غلط ہو، parent آخر کس چیز کو دیکھ سکتا ہے؟


یہاں ہر number اسی machine پر produced ہوا اور کوئی estimated نہیں تھا۔ model CPU پر float32 میں Qwen2.5-0.5B-Instruct ہے، greedy decoding کے ساتھ، loopback پر ایک چھوٹے Python endpoint کے ذریعے serve ہوتا ہے جو chat-completions shape بولتا ہے اور token-count route expose کرتا ہے — Chapter 14 کا seam دوبارہ، tensors Python side پر اور loop TypeScript side پر — اس لیے ہر count اسی model کا اپنا tokenizer ہے جو اس کے اپنے chat template پر apply ہوا۔ position table 288 calls ہے، نو positions by thirty-two trials with a different ticket each trial؛ length table 140 calls ہے؛ agent run wall clock کے 43 minutes میں 57 model calls ہے؛ policy table وہی ایک transcript ہے جو سات policies کے تحت replay ہوا۔ Intervals Wilson کے ہیں، Chapter 4 سے۔ کوئی paid API call نہیں ہوئی، اسی لیے chapter میں ایک بھی price نہیں: token counts exact ہیں اور rates جن سے آپ انہیں multiply کریں گے وہ Chapter 16 کے ہیں۔

  1. Anthropic، Effective context engineering for AI agents، 29 September 2025، anthropic.com/engineering/effective-context-engineering-for-ai-agents، read 7 September 2026۔ اوپر quote کی گئی دو definitions کا source، "attention budget" اور یہ statement کہ ہر نیا token اسے deplete کرتا ہے، context rot کی description، n² pairwise-relationships framing، اور اس chapter کی spine کے طور پر استعمال ہونے والی strategies کا source۔ ان میں سے تین اس کی long-horizon list ہیں — compaction، structured note-taking اور multi-agent architectures؛ just-in-time retrieval اسی article میں پہلے context retrieval اور agentic search کے under آتا ہے، اور یہاں ان کے ساتھ grouped ہے۔ 2 3 4

  2. Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F. and Liang, P. Lost in the Middle: How Language Models Use Long Contexts. arXiv:2307.03172 (v1 July 2023, v3 November 2023). Chapters 15، 16 اور 19 میں cited اور یہاں measured۔ quoted sentence abstract سے ہے؛ paper کے دو tasks multi-document question answering اور key-value retrieval ہیں، اور یہ finding کہ effect explicitly long-context models میں بھی persist کرتا ہے، product decision کے لیے اہم part ہے۔

  3. Anthropic، Code execution with MCP: building more efficient agents، 4 November 2025، anthropic.com/engineering/code-execution-with-mcp، read 7 September 2026۔ 150,000-to-2,000-token reduction اور 98.7 % figure کا source، اور اس observation کا کہ up front loaded tool definitions request پڑھنے سے پہلے context occupy کرتی ہیں۔

  4. Sumers, T. R., Yao, S., Narasimhan, K. and Griffiths, T. L. Cognitive Architectures for Language Agents. arXiv:2309.02427 (2023). language agents کو "modular memory components, a structured action space to interact with internal memory and external environments, and a generalized decision-making process to choose actions" کے گرد organize کرتا ہے، اور memory کو working، episodic، semantic اور procedural میں split کرتا ہے۔ Chapter 22 نے learning agent کے لیے اس کی taxonomy use کی؛ اوپر تین-store table اس کا practical shadow ہے۔

  5. Packer, C., Wooders, S., Lin, K., Fang, V., Patil, S. G., Stoica, I. and Gonzalez, J. E. MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560 (October 2023). "virtual context management, a technique drawing inspiration from hierarchical memory systems in traditional operating systems" propose کرتا ہے، جس میں model خود window کے اندر fast tier اور اس کے باہر slow tier کے درمیان data move کرتا ہے۔ کہیں بھی اس بات کا سب سے صاف statement کہ window cache ہے، memory نہیں۔


تیار کردہ

David Vicente Campos

NeuraLIA Labs کے بانی اور MyRealFood کے شریک بانی

میں یونیورسٹی آف لیون سے کمپیوٹر انجینئر ہوں۔ میں نے MyRealFood کی مشترکہ بنیاد رکھی، جہاں بطور CTO میں نے وہ ایپ بنائی جسے لاکھوں لوگ بہتر غذا کے لیے استعمال کر چکے ہیں، اور میں نے NeuraLIA Labs قائم کیا، جہاں میں AI مصنوعات بناتا ہوں۔ یہاں میں ان باتوں کے بارے میں لکھتا ہوں جو اس سفر میں مجھے سمجھنی پڑیں، اس طرح جس طرح کاش کسی نے مجھے سمجھائی ہوتیں۔

مصنف کے بارے میں مزید

NeuraLIA Labs کی جانب سے شائع کردہ۔

نئی پوسٹس اپنے ان باکس میں پائیں

AI کی خبریں، گائیڈز اور پروڈکٹ اپ ڈیٹس — جب ہم آپ کے وقت کے قابل کچھ شائع کریں تو ایک مختصر ای میل۔

کورس انڈیکس

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev14 منٹ مطالعہ

Jev AI ماڈل فیصلوں کے لیے بنایا گیا ہے، نثر کے لیے نہیں

TypeSafe AI کا Jev اس لیے توجہ کھینچ رہا ہے کہ یہ software intelligence کو احتمال کے مسئلے کے طور پر دیکھتا ہے: درست branch چنیں، confidence منسلک کریں، اور جب code کو فیصلہ چاہیے ہو تو text لکھوانے کے لیے LLM کو ادائیگی سے بچیں۔

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering14 منٹ مطالعہ

طویل مدتی AI ایجنٹس کے لیے کانٹیکسٹ انجینئرنگ

طویل عرصے تک چلنے والے ایجنٹس صرف اس لیے ناکام نہیں ہوتے کہ ونڈو چھوٹی ہے۔ وہ اس وقت ناکام ہوتے ہیں جب فائلیں، ٹول آؤٹ پٹس اور پرانی ہسٹری اس کام کو باہر دھکیل دیتی ہیں جسے ایجنٹ نے مکمل کرنا تھا۔

ماڈل چننے کا کام LIA کے سپرد کرنے کے لیے تیار ہیں؟

ہر AI ماڈل ایک ہی جگہ — آج ہی مفت شروع کریں۔