# Context Windows और Token Budgets — Prompt Engineering

Source: https://www.geekswithgeeks.com/hi/prompt-engineering/x-budget

> निर्देश, इतिहास और दस्तावेज़ सीमा में बैठाएँ।

## निश्चित आकार का बस्ता

**Context window** अधिकतम tokens (prompt और उत्तर मिलाकर) है जिन्हें मॉडल एक call में सँभालता है। बजट सोच-समझकर बाँटें: system निर्देश, retrieved दस्तावेज़, बातचीत का इतिहास, user का सवाल, और **उत्तर के लिए जगह**। कुछ हटाना पड़े तो सबसे पुरानी और सबसे कम प्रासंगिक सामग्री पहले हटाएँ या संक्षिप्त करें और system नियम व नवीनतम turns रखें। हमेशा provider के tokenizer से मापें; 4-अक्षर-प्रति-token नियम अंग्रेज़ी का मोटा अनुमान है, और हिंदी को प्रति शब्द अक्सर ज़्यादा tokens लगते हैं।

## Window में क्या जाता है

Context window एक बजट है: चुनें क्या डालें, किस क्रम में।

![चार निर्णय: बजट, क्रम, retrieve, सार।](assets/figures/prompt-engineering/section-5-map.svg) — चित्र 5.1 — बजट, क्रम, retrieve और सार।

## बजट में इतिहास काटना, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। 120-token बजट के साथ system prompt और सवाल कुछ tokens लेते हैं, फिर बजट भरने तक नवीनतम संदेश जोड़े जाते हैं: 8 में से 4 संदेश (नवीनतम, संख्या 5 से 8) रखे जाते हैं, मोटे अनुमान से 101 tokens उपयोग करते हुए।

```python
def rough_tokens(text): return max(1, round(len(text) / 4))

def fit(system, history, question, budget):
    used = rough_tokens(system) + rough_tokens(question)
    kept = []
    for msg in reversed(history):          # keep the newest messages first
        t = rough_tokens(msg)
        if used + t > budget: break
        kept.append(msg); used += t
    return list(reversed(kept)), used

history = ["message " + str(i) + " " + "x" * 80 for i in range(1, 9)]
kept, used = fit("You are a helpful assistant.", history, "And what about refunds?", 120)
print("kept", len(kept), "of", len(history), "messages; tokens used:", used)
print([m.split()[1] for m in kept])

```

Output:

```
kept 4 of 8 messages; tokens used: 101
['5', '6', '7', '8']
```

**Quiz:** इतिहास बहुत लंबा हो तो आम तौर पर पहले क्या हटाया जाता है?

- [ ] User का नवीनतम सवाल
- [ ] System नियम
- [x] सबसे पुराने, सबसे कम प्रासंगिक संदेश
- [ ] उत्तर के लिए आरक्षित जगह

*Answer:* सबसे पुराने, सबसे कम प्रासंगिक संदेश. पुरानी बातचीत सबसे कम मायने रखती है; नियम और वर्तमान turn सबसे ज़्यादा।
