پرش به محتوا
مفهوم‌ها

پنجرهٔ زمینه (Context Window) چیست؛ چرا گفت‌وگوی طولانی گران‌تر و فراموش‌کارتر می‌شود

مدل حافظه ندارد؛ هر پیام تاریخچهٔ گفت‌وگو را دوباره می‌فرستد. ببینید این کار چطور هم کیفیت را پایین می‌آورد و هم هزینه را بالا می‌برد، و با پنج عادت ساده مهارش کنید.

تیم گیسو ۱۱ دقیقه مطالعه
پنجرهٔ زمینه (Context Window) چیست؛ چرا گفت‌وگوی طولانی گران‌تر و فراموش‌کارتر می‌شود

فرض کنید برای صفحهٔ یک کافه، یک گفت‌وگوی بلند با مدل ساخته‌اید؛ اول لحن برند را توضیح داده‌اید، بعد ۳۰ ایدهٔ پست گرفته‌اید، بعد کپشن‌ها را ویرایش کرده‌اید. پیام پنجاهم که می‌رسد، مدل همان قانونی را فراموش می‌کند که اول کار گفته بودید: «از شوخی‌های کلیشه‌ای استفاده نکنید». هم‌زمان هزینهٔ هر پاسخ هم بیشتر می‌شود. ریشهٔ هر دو اتفاق، پنجرهٔ زمینه است؛ این راهنما نشان می‌دهد پشت پرده چه چیزی بزرگ می‌شود و چطور مهارش کنید.

پنجرهٔ زمینه همان بستهٔ ورودی هر پاسخ است

مدل، حافظهٔ شخصی و پنهانی بین دو پیام ندارد. هر بار که شما پیام تازه‌ای می‌فرستید، سامانه یک بستهٔ ورودی می‌سازد و آن را به مدل می‌دهد: دستور سیستمی (System Prompt)، پیام‌های قبلی، پیام جدید، و متن استخراج‌شده از فایل‌هایی که فرستاده‌اید. مدل فقط همان بسته را می‌بیند و بر اساس همان پاسخ می‌دهد.

به این بسته، زمینه می‌گوییم. پنجرهٔ زمینه (Context Window) سقف همان بسته است؛ یعنی بیشترین مقدار متنی که مدل می‌تواند در یک نوبت ببیند. اگر می‌پرسید context window چیست، پاسخ کوتاه همین است: ظرفیت دیدن گذشتهٔ گفت‌وگو، نه حافظهٔ واقعی.

این نکته سوءتفاهم مهمی را روشن می‌کند. وقتی می‌گوییم حافظهٔ مدل هوش مصنوعی ضعیف شده، معمولاً منظورمان حافظه به معنای انسانی نیست. مدل یا آن بخش را دیگر در ورودی نمی‌بیند، یا در میان حجم زیادی متن کمتر به آن توجه می‌کند. در گفت‌وگوی خیلی بلندِ چت گیسو، قدیمی‌تر از ۶۰ پیام آخر دیگر فرستاده نمی‌شود و خلاصه هم نمی‌شود؛ دستور سیستمی پروژه اما همراه همهٔ پیام‌ها می‌رود. حافظهٔ خودکار بین چت‌ها هم وجود ندارد؛ بخش «دربارهٔ شما» و «پاسخ‌ها چطور باشد» در تنظیمات خوانده می‌شود، اما مدل خودش جزئیات چت‌های قبلی را به چت تازه منتقل نمی‌کند.

اگر یک قانون ثابت دارید، آن را در ابتدای هر پیام تکرار نکنید. راه درست‌تر این است که آن را در دستور سیستمی پروژه بگذارید. برای نوشتن این بخش، راهنمای دستور سیستمی کاربردی کمک می‌کند.

اندازهٔ پنجره در مدل‌ها فرق دارد

ظرفیت زمینه با توکن سنجیده می‌شود. توکن، تکهٔ خردشدهٔ متن برای مدل است. یک واژهٔ فارسی گاهی یک توکن است و اغلب به دو یا چند توکن می‌شکند، پس «۱۲۸ هزار توکن» را نباید با «۱۲۸ هزار کلمهٔ فارسی» یکی گرفت. عدد دقیق به متن، فاصله‌ها، نشانه‌گذاری و ترکیب فارسی و انگلیسی بستگی دارد.

در فهرست مدل‌های گیسو، اندازهٔ پنجره‌ها بسیار متفاوت است. چند نمونهٔ کاربردی را ببینید:

مدلپنجرهٔ زمینهکاربرد معمول
gpt-4o-mini۱۲۸ هزار توکنچت روزمره، متن‌های متوسط، فایل‌های کوتاه
gpt-5-mini و gpt-5۴۰۰ هزار توکنتحلیل طولانی‌تر، چند سند، گفت‌وگوی کاری بلند
gpt-5.5، gemini-3.8-flash، openrouter/anthropic/claude-sonnet-5 و deepseek-v4-proحدود ۱ میلیون توکنپرونده‌های بزرگ، کد زیاد، یا پروژه‌هایی که واقعاً به زمینهٔ بلند نیاز دارند

فهرست کامل مدل‌ها و قیمت هرکدام را از کتابخانهٔ مدل‌ها ببینید. یک نکته را جدا نگه دارید: پاسخ مدل هم سقف خودش را دارد. حتی اگر مدل بتواند ورودی بسیار بزرگی بخواند، خروجی با تنظیم «حداکثر توکن خروجی» محدود می‌شود. پس پنجرهٔ بزرگ یعنی مدل متن بیشتری را می‌بیند، نه اینکه هر بار متن بسیار طولانی تحویل بدهد.

چت بلند پیش از پر شدن پنجره هم افت می‌کند

پر نشدن سقف، به معنی کیفیت ثابت نیست. مدل‌ها در متن‌های بسیار بلند معمولاً به ابتدا و انتهای ورودی بهتر توجه می‌کنند و بخش‌های میانی بیشتر گم می‌شود. پژوهشگران به این رفتار «گم‌شدن در میانه (lost in the middle)» می‌گویند. برای کار روزمره، معنی‌اش ساده است: قانونی که ۴۰ پیام پیش، وسط گفت‌وگو نوشته‌اید، ممکن است ضعیف‌تر از آخرین جملهٔ شما اثر بگذارد.

مشکل دوم، انباشت دستورهای متناقض است. شما اول می‌نویسید «لحن رسمی باشد»، بعد در پیام دهم می‌گویید «صمیمی‌تر بنویسید»، بعد در پیام بیست‌وپنجم می‌خواهید «مثل متن سایت حقوقی باشد». مدل همهٔ این‌ها را می‌بیند و باید حدس بزند کدام مهم‌تر است. اگر پیام آخر شفاف نباشد، خروجی نوسان پیدا می‌کند.

مشکل سوم، رقابت جزئیات است. در یک گفت‌وگوی طولانی دربارهٔ فروشگاه، ممکن است نام برند، مخاطب، محدودیت‌های محصول، تقویم محتوا، لحن، و چند فایل اکسل کنار هم قرار بگیرند. وقتی سؤال آخر شما فقط می‌گوید «این را بهتر کنید»، مدل باید بفهمد «این» دقیقاً به کدام بخش برمی‌گردد. هرچه زمینه شلوغ‌تر باشد، احتمال برداشت اشتباه بالاتر می‌رود.

در چت‌های طولانی، پیام آخر را مستقل‌تر بنویسید. به جای «ادامه بدهید»، بنویسید: «با همان لحن رسمی، فقط برای مخاطب دانشجو، ۳ کپشن کوتاه برای پست معرفی دوره بنویسید.»

طول گفت‌وگو و هزینه با هر پیام رشد می‌کند

هزینهٔ چت فقط به پیام تازهٔ شما مربوط نیست. چون هر پاسخ تازه با ارسال دوبارهٔ تاریخچهٔ قابل‌مشاهده ساخته می‌شود، پیام پنجاهم معمولاً ورودی بسیار بزرگ‌تری از پیام پنجم دارد. اگر اندازهٔ سؤال و پاسخ ثابت بماند، همین رشد تاریخچه باعث افزایش هزینه می‌شود.

جدول زیر همین اثر را نشان می‌دهد. آن را این‌طور بخوانید: سؤال و اندازهٔ پاسخ یکسان فرض شده، مدل هم همان است؛ تنها چیزی که تغییر می‌کند شمارهٔ پیام و مقدار تاریخچه‌ای است که دوباره فرستاده می‌شود.

هزینهٔ یک پیام در گفت‌وگوی کوتاه و طولانی، به سکه با قیمت امروز
هزینهٔ یک پیام در گفت‌وگوی کوتاه و طولانی، به سکه
مدل پیام شمارهٔ ۱ پیام شمارهٔ ۱۰ پیام شمارهٔ ۲۰ پیام شمارهٔ ۳۰
GPT-5 nano OpenAI ۷۴ سکه ۱۷۱ سکه ۲۸۰ سکه ۳۸۸ سکه
GPT-5 mini OpenAI ۳۶۶ سکه ۸۵۴ سکه ۱,۳۹۵ سکه ۱,۹۳۷ سکه
DeepSeek Flash DeepSeek ۲۴۴ سکه ۸۲۹ سکه ۱,۴۷۹ سکه ۲,۱۲۹ سکه
Gemini 3.8 Flash Google Gemini ۷۳۲ سکه ۲,۱۹۴ سکه ۳,۸۱۹ سکه ۵,۴۴۴ سکه
توکن ورودی همان پیام ۴۵۰ ۵,۸۵۰ ۱۱,۸۵۰ ۱۷,۸۵۰

فرض جدول: دستور سیستمی ۳۰۰ توکن، هر پرسش ۱۵۰ توکن و هر جواب ۴۵۰ توکن؛ همهٔ پیام‌های قبلی در هر نوبت دوباره فرستاده می‌شوند. عدد هر خانه هزینهٔ همان یک پیام است، نه جمع گفت‌وگو.

چت گیسو از ۶۰ پیام آخر (حدود ۳۰ نوبت) قدیمی‌تر را دیگر نمی‌فرستد؛ در وب‌سرویس (API) هر چه خودتان بفرستید حساب می‌شود.

به‌روزرسانی: ۱۴۰۵/۰۷/۰۹ ۰۳:۲۵ مبلغ‌ها به سکه، با قیمت امروز همان مدل در گیسو

فایل‌ها هم همین رفتار را دارند. در چت گیسو، متن فایل‌های PDF، Word، Excel، PowerPoint، فایل‌های متنی و کد استخراج می‌شود تا مدل بتواند آن‌ها را بخواند. این متن جزو ورودی حساب می‌شود. اگر یک PDF بلند را در ابتدای چت فرستاده باشید و بعد ۲۰ بار دربارهٔ آن سؤال کنید، متن استخراج‌شده هم در زمینه اثر می‌گذارد. برای کار با سندها، راهنمای خلاصه‌کردن PDF با هوش مصنوعی مسیر بهتری پیشنهاد می‌کند.

برای کوتاه نگه داشتن زمینه این کارها را انجام دهید

  1. برای هر موضوع یک چت تازه بسازید. تقویم محتوای کافه، ویرایش صفحهٔ دربارهٔ ما، و تحلیل فایل فروش را در یک گفت‌وگو نگه ندارید. جدا کردن موضوع‌ها، هم زمینه را سبک می‌کند و هم ارجاع‌ها را دقیق‌تر نگه می‌دارد.
  2. قبل از جابه‌جایی، خلاصهٔ کوتاه بگیرید. وقتی می‌خواهید از چت قدیمی به چت تازه بروید، از مدل بخواهید خلاصه‌ای قابل انتقال بسازد. نمونهٔ قابل کپی: «از این گفت‌وگو یک خلاصهٔ ۱۰ بندی بسازید؛ فقط تصمیم‌های نهایی، لحن برند، محدودیت‌ها و کارهای ناتمام را بنویسید. جزئیات ردشده را حذف کنید.»
  3. قانون‌های ثابت را در پروژه بگذارید. در گیسو، هر پروژه دستور سیستمی، مدل پیش‌فرض و تنظیمات خودش را دارد. اگر برای برندتان همیشه باید لحن آرام، جمله‌های کوتاه و پرهیز از اغراق رعایت شود، آن را در پروژه بنویسید؛ نه اینکه هر بار وسط چت تکرارش کنید.
  4. فقط صفحه‌های لازم را پیوست کنید. اگر از یک قرارداد ۸۰ صفحه‌ای فقط بندهای فسخ را می‌خواهید، همان صفحه‌ها را جدا کنید. فایل بزرگ‌تر یعنی ورودی سنگین‌تر. PDF اسکن‌شده متن قابل استخراج ندارد؛ صفحه‌های لازم را به‌صورت تصویر برای مدل‌های بینایی بفرستید.
  5. مدل بزرگ‌پنجره را برای نیاز واقعی انتخاب کنید. پنجرهٔ بزرگ برای پروندهٔ حجیم یا کد زیاد ارزش دارد. برای کپشن، ایمیل، ایدهٔ پست یا ویرایش متن کوتاه، مدل کوچک‌تر معمولاً کافی است. اگر کار شما استدلال پیچیده می‌خواهد، راهنمای مدل‌های استدلالی را هم بخوانید؛ توکن‌های فکرکردن در این مدل‌ها بخشی از خروجی حساب می‌شوند.

برای توسعه‌دهنده‌ها زمینه را آگاهانه بسته‌بندی کنید

در وب‌سرویس (API)، کنترل تاریخچه با شما است. اگر هر بار همهٔ پیام‌های قدیمی را بی‌کم‌وکاست بفرستید، هزینه و تأخیر بالا می‌رود و کیفیت هم لزوماً بهتر نمی‌شود. پاسخ هر درخواست، فیلد usage دارد و prompt_tokens مقدار ورودی مصرف‌شده را نشان می‌دهد. این عدد را لاگ کنید و بر اساس آن تصمیم بگیرید چه زمانی خلاصه بسازید یا پیام‌های قدیمی را حذف کنید.

الگوی ساده این است: پیام سیستمی را نگه دارید، یک خلاصهٔ جاری از تصمیم‌های قبلی داشته باشید، و فقط چند نوبت آخر را بفرستید. برای سندهای بلند، همهٔ متن را در هر درخواست نریزید؛ بخش‌های مرتبط را پیدا کنید و همان‌ها را بفرستید. برای پاسخ هم max_tokens بگذارید تا خروجی از حد نیاز بزرگ‌تر نشود؛ در مدل استدلالی مثل gpt-5-mini فکر کردن هم از همین سقف خرج می‌کند، پس آن را خیلی تنگ نگیرید. جزئیات پارامترهای چت در مستندات چت API آمده است.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GISOO_API_KEY"],
    base_url="https://gisoo.pro/api/v1",
)

def rough_tokens(text: str) -> int:
    # Approximation only; use real tokenizer in production.
    return max(1, len(text) // 3)

def pack_messages(system_prompt, summary, turns, budget_tokens=12000, last_n=12):
    messages = [{"role": "system", "content": system_prompt}]

    if summary:
        messages.append({
            "role": "user",
            "content": "خلاصهٔ گفت‌وگوی قبلی:\n" + summary,
        })

    total = sum(rough_tokens(m["content"]) for m in messages)
    kept = []

    for msg in reversed(turns[-last_n:]):
        cost = rough_tokens(msg["content"])
        if total + cost > budget_tokens:
            break
        kept.append(msg)
        total += cost

    messages.extend(reversed(kept))
    return messages

system_prompt = "شما یک دستیار فارسی‌نویس دقیق هستید. کوتاه و روشن پاسخ بدهید."
summary = "کاربر فروشگاه قهوه دارد. لحن برند آرام، دقیق و بدون اغراق است."
turns = [
    {"role": "user", "content": "برای معرفی قهوه کلمبیا کپشن بنویسید."},
    {"role": "assistant", "content": "سه نسخهٔ کوتاه پیشنهاد شد."},
    {"role": "user", "content": "حالا نسخهٔ رسمی‌تر برای لینکدین بسازید."},
]

messages = pack_messages(system_prompt, summary, turns)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=messages,
    reasoning_effort="low",
    max_tokens=2000,  # reasoning tokens count toward this cap
)

print(response.choices[0].message.content)
print("prompt_tokens:", response.usage.prompt_tokens)

این کد شمارش توکن را تقریبی انجام می‌دهد. برای سامانهٔ جدی، از شمارندهٔ سازگار با مدل خودتان استفاده کنید یا با پایش usage.prompt_tokens سقف‌های عملی بسازید.

خلاصهٔ خوب، حافظهٔ بهتر از تاریخچهٔ خام می‌سازد

تاریخچهٔ خام همیشه بهترین خوراک برای مدل نیست. خلاصهٔ خوب، تصمیم‌های مهم را بالا می‌آورد و حاشیه‌ها را حذف می‌کند. اگر یک چت تولید محتوا ۶۰ پیام دارد، مدل لازم نیست همهٔ نسخه‌های ردشدهٔ کپشن را دوباره ببیند. کافی است بداند کدام لحن انتخاب شد، چه کلمه‌هایی ممنوع‌اند، مخاطب کیست و خروجی بعدی چه قالبی دارد.

این نمونه را می‌توانید آخر چت‌های بلند استفاده کنید:

از گفت‌وگوی بالا یک خلاصهٔ قابل انتقال بسازید.
ساختار خروجی:
۱. هدف پروژه
۲. تصمیم‌های قطعی
۳. لحن و محدودیت‌ها
۴. داده‌های مهم عددی یا نام‌ها
۵. کارهای ناتمام
موارد آزمایشی، نسخه‌های ردشده و بحث‌های تکراری را حذف کنید.

بعد، چت تازه را با همان خلاصه شروع کنید و درخواست جدید را شفاف بنویسید. این کار اغلب از ادامه دادن یک گفت‌وگوی بسیار بلند بهتر جواب می‌دهد، چون مدل به جای جست‌وجو در انبوه متن، نسخهٔ فشردهٔ تصمیم‌ها را جلو چشم دارد.

اولین اصلاح را از همین چت فعلی شروع کنید

اگر چت شما طولانی شده، ادامه ندهید و از مدل یک خلاصهٔ قابل انتقال بگیرید. سپس یک چت تازه بسازید، خلاصه را اول آن بگذارید، و درخواست بعدی را با هدف، قالب خروجی و محدودیت‌ها بنویسید. همین تغییر کوچک، هم کیفیت پاسخ را قابل پیش‌بینی‌تر می‌کند و هم رشد پنهان ورودی را جلوی چشم شما می‌آورد.

امتحان در گیسو چت با هوش مصنوعی حساب رایگان است؛ برای استفاده از مدل‌ها اعتبار لازم دارید. برای برنامه‌نویس‌ها مستندات وب‌سرویس (API) یک کلید و یک نشانی برای صدها مدل از شرکت‌های مختلف، سازگار با کتابخانهٔ OpenAI.

پرسش‌های پرتکرار

پنجرهٔ زمینه یعنی چه؟

پنجرهٔ زمینه یعنی سقف متنی که مدل در یک نوبت می‌تواند ببیند. این متن شامل دستور سیستمی، پیام‌های قبلی، پیام تازه و متن فایل‌های پیوست‌شده است. پنجرهٔ بزرگ‌تر یعنی مدل گذشتهٔ بیشتری را می‌بیند، نه اینکه حافظهٔ انسانی داشته باشد.

چرا چت طولانی گران‌تر می‌شود؟

چون در هر پیام تازه، تاریخچهٔ قابل‌مشاهدهٔ گفت‌وگو دوباره به مدل فرستاده می‌شود. پیام‌های قدیمی هم جزو ورودی حساب می‌شوند. بنابراین اگر سؤال آخر کوتاه باشد، باز هم زمینهٔ قبلی می‌تواند هزینه را بالا ببرد.

مدل چرا وسط گفت‌وگو چیزها را فراموش می‌کند؟

مدل معمولاً چیزی را مثل انسان ذخیره نمی‌کند؛ فقط ورودی همان درخواست را می‌بیند. در ورودی‌های خیلی بلند، جزئیات وسط متن ممکن است کمتر اثر بگذارند یا با دستورهای جدیدتر رقابت کنند. دستورهای متناقض هم این مشکل را شدیدتر می‌کنند.

برای چت‌های بلند چه مدلی انتخاب کنم؟

اگر واقعاً سند بزرگ، کد زیاد یا تاریخچهٔ طولانی دارید، مدل‌های با پنجرهٔ بزرگ‌تر مناسب‌ترند. برای کارهای کوتاه مثل کپشن، ایمیل یا ویرایش متن، معمولاً لازم نیست سراغ بزرگ‌ترین پنجره بروید. پیش از تغییر مدل، تاریخچه را خلاصه کنید و فقط بخش‌های لازم را نگه دارید.

نوشتهٔ تیم گیسو همهٔ مطالب وبلاگ خوراک RSS