पाठ 17 / 29

Context Windows और Token Budgets

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

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

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

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

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

चार निर्णय: बजट, क्रम, retrieve, सार।
चित्र 5.1 — बजट, क्रम, retrieve और सार।

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

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

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']

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

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

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