ব্লগে ফিরে যান

শিক্ষানবিসদের জন্য AIগাইড

"পর্যাপ্ত টোকেন নেই" ত্রুটি: এর অর্থ কী এবং কীভাবে ঠিক করবেন

খালি ব্যালেন্স, রেট লিমিট, ভুল কী, প্রম্পট খুব লম্বা বা উত্তর কেটে যাওয়া: আপনার API ত্রুটিকে পাঁচটি কারণের একটির সাথে মেলান, দ্রুত চেক চালান, সমাধান প্রয়োগ করুন।

CheapTokens Team দ্বারাপ্রকাশিত হয়েছে আপডেট করা হয়েছে 13 মিনিট পড়ার সময়

"পর্যাপ্ত টোকেন নেই?" শব্দগুলি সহ কভার, পাঁচটি লেবেলের উপরে: ব্যালেন্স, রেট, কী, কনটেক্সট, আউটপুট
এই পৃষ্ঠায়
  1. "টোকেন" বলতে তিনটি জিনিস বোঝাতে পারে
  2. ১. ব্যালেন্স খালি
  3. ২. আপনি একটি রেট লিমিটে পৌঁছেছেন
  4. ৩. কী ভুল
  5. ৪. প্রম্পট কনটেক্সট উইন্ডোতে ফিট করে না
  6. ৫. উত্তর কেটে গেছে
  7. একই সমস্যা ভিন্ন নামে
  8. আসলে কী ফেরত আসে দেখুন
  9. যদি চেকটি ব্যালেন্সের দিকে ইঙ্গিত করে

"পর্যাপ্ত টোকেন নেই" কোনো একক ত্রুটি নয়। মানুষ এই বাক্যটি পাঁচটি ভিন্ন সমস্যার জন্য ব্যবহার করে: ব্যালেন্স খালি, অনুরোধ খুব দ্রুত আসছে, কী ভুল, প্রম্পট মডেলের কনটেক্সট উইন্ডোতে ফিট হচ্ছে না, অথবা উত্তর আউটপুট সীমায় পৌঁছে বাক্যের মাঝপথে থেমে গেছে। প্রতিটির নিজস্ব সমাধান আছে, এবং এগুলো আলাদা করার দ্রুততম উপায় হলো HTTP স্ট্যাটাস এবং ত্রুটির বডি, বার্তার শব্দচয়ন নয়।

টেবিলে আপনার উপসর্গ খুঁজুন, চেক চালান, সমাধান প্রয়োগ করুন।

যা দেখছেন সম্ভাব্য কারণ চেক সমাধান
অনুরোধ প্রত্যাখ্যাত; বার্তায় ব্যালেন্স, বিলিং বা ক্রেডিট উল্লেখ আছে ব্যালেন্স খালি আপনার অ্যাকাউন্ট খুলে ব্যালেন্স দেখুন ব্যালেন্স টপ আপ করুন, আবার চেষ্টা করুন
কাজ করে, তারপর bursts-এ ব্যর্থ হয়, বিরতির পরে ঠিক হয়ে যায় রেট লিমিট: একসাথে বা প্রতি মিনিটে খুব বেশি অনুরোধ এক মিনিট অপেক্ষা করার পরে একই অনুরোধ পাস করে? আপনি কি সমান্তরালে অনুরোধ পাঠান? গতি কমান, ক্রমবর্ধমান বিলম্বে আবার চেষ্টা করুন
প্রতিটি অনুরোধ একসাথে ব্যর্থ হয়, এমনকি এক-লাইনের প্রম্পটও ভুল, মেয়াদোত্তীর্ণ বা ভুল টাইপ করা কী, অথবা ভুল বেস URL আপনার কোডের কী-টি অ্যাকাউন্টের কী-এর সাথে তুলনা করুন; URL চেক করুন একটি নতুন কী পেস্ট করুন, এটি সোর্স কোডের বাইরে রাখুন
ছোট প্রম্পট কাজ করে, লম্বা প্রম্পট ব্যর্থ হয় প্রম্পট প্লাস হিস্ট্রি কনটেক্সট উইন্ডোর চেয়ে বড় আপনি যা পাঠান তার আকার অনুমান করুন হিস্ট্রি ছাঁটুন বা সারসংক্ষেপ করুন, ডকুমেন্ট ভাগ করুন, অথবা বড় উইন্ডোর মডেল বেছে নিন
কোনো ত্রুটি নেই, কিন্তু উত্তর বাক্যের মাঝপথে শেষ হয় উত্তর আউটপুট সীমায় পৌঁছেছে finish_reason হলো "length" max_tokens মডেলের সীমা পর্যন্ত বাড়ান, ছোট ফরম্যাট চান, অথবা চালিয়ে যেতে বলুন

"টোকেন" বলতে তিনটি জিনিস বোঝাতে পারে#

ত্রুটি বার্তার শব্দটি তিনটি ভিন্ন পরিমাণের দিকে ইঙ্গিত করে।

  • ব্যালেন্স। টোকেন হলো যা আপনি পরিশোধ করেন, তাই "টোকেন শেষ" প্রায়ই মানে "টাকা শেষ"। প্রিপেইড পরিষেবায় এটি ব্যালেন্স।
  • প্রতি মিনিটের সীমা। সীমা অনুরোধে বা প্রতি মিনিটে টোকেনে গণনা করা যেতে পারে। একটিতে পৌঁছালে সমাধান হলো অপেক্ষা করা এবং একবারে কম পাঠানো।
  • উইন্ডো সাইজ। কনটেক্সট উইন্ডো হলো একটি অনুরোধে মডেল কত টোকেন পড়তে পারে, আপনার প্রম্পট এবং তার উত্তর একসাথে।

এবং একটি জিনিস এটি কখনো বোঝায় না: API কী টোকেনের ভাণ্ডার নয়। কী আপনার অ্যাকাউন্ট চিহ্নিত করে। যা শেষ হয় তা হলো এর পিছনের ব্যালেন্স, বা এটির সাথে সংযুক্ত একটি সীমা। যদি আপনি একক সম্পর্কে নতুন হন, What is a token in AI? দিয়ে শুরু করুন।

১. ব্যালেন্স খালি#

DeepSeek-এর API ডকুমেন্টেশন HTTP 402 Insufficient Balance-কে "You have run out of balance" হিসেবে বর্ণনা করে। Claude-এর API বিলিং এবং পেমেন্ট সমস্যার জন্য 402 billing_error ব্যবহার করে। ভিন্ন নাম, একই পরিস্থিতি: টাকা শেষ।

CheapTokens নীতিগতভাবে একইভাবে কাজ করে: একটি প্রিপেইড ব্যালেন্স, পে অ্যাজ ইউ গো, সব মডেলের জন্য একটি ব্যালেন্স। তাই যখন কিছু ভেঙে যায়, প্রথমে ব্যালেন্স দেখুন। এটি দশ সেকেন্ডের চেক এবং এটি সবচেয়ে সাধারণ কারণটি বাদ দেয়।

২. আপনি একটি রেট লিমিটে পৌঁছেছেন#

DeepSeek HTTP 429 Rate Limit Reached-কে খুব দ্রুত আসা অনুরোধ, অথবা কনকারেন্সি বা QPS সীমা অতিক্রম হিসেবে নথিভুক্ত করে। সমাধান হলো গতি নিয়ন্ত্রণ: কম সমান্তরাল অনুরোধ, এবং এন্ডপয়েন্টে বারবার আঘাত না করে ক্রমবর্ধমান পুনরায় চেষ্টার বিলম্ব (১ সেকেন্ড, ২ সেকেন্ড, ৪ সেকেন্ড)।

একটি ফাঁদ। Claude-এর API আপনার টিয়ারের মাসিক ব্যয় সীমায় পৌঁছালেও 429 rate_limit_error ফেরত দেয়, এবং সেই প্রতিক্রিয়ায় কোনো retry-after হেডার থাকে না। তাই অপেক্ষার পরেও যে 429 কখনো ঠিক হয় না তা টাকার বিষয় হতে পারে, গতির নয়। যদি অপেক্ষা সাহায্য না করে, কারণ ১-এ ফিরে যান।

৩. কী ভুল#

HTTP 401 উভয় ডকুমেন্টেশনে কী-এর সমস্যা: DeepSeek এটি ভুল API কী হিসেবে তালিকাভুক্ত করে, Claude authentication_error হিসেবে। সাধারণ কারণগুলো হলো কী-এর সাথে কপি হওয়া অতিরিক্ত স্পেস বা নিউলাইন, মুছে ফেলা বা পুনরায় তৈরি করা কী, এবং ভুল ঠিকানায় পাঠানো কী। এক পরিষেবার কী অন্য পরিষেবার URL-এ কাজ করে না। CheapTokens-এর জন্য বেস URL হলো https://api.cheaptokens.dev/v1।

সংযোগের সময় আপনি যে অন্যান্য ত্রুটির সম্মুখীন হতে পারেন, দেখুন Common connection errors and how to fix them।

৪. প্রম্পট কনটেক্সট উইন্ডোতে ফিট করে না#

কনটেক্সট উইন্ডো একটি অনুরোধে মডেল যা পড়ে তার সবকিছু গণনা করে: সিস্টেম প্রম্পট, সম্পূর্ণ কথোপকথনের ইতিহাস, আপনার নতুন বার্তা, এবং উত্তরের জন্য জায়গা। CheapTokens-এ, আমাদের ক্যাটালগের মডেলগুলোর উইন্ডো হলো:

মডেল কনটেক্সট উইন্ডো প্রতি উত্তরে সর্বোচ্চ আউটপুট
DeepSeek-V4-Flash 380K 32,768 টোকেন
GLM-5.3-Flash 390K 8,192 টোকেন
MiniMax-M2.7 200K 8,192 টোকেন

একটি চ্যাটের নিজস্ব কোনো স্মৃতি নেই। ক্লায়েন্ট প্রতিটি অনুরোধের সাথে সম্পূর্ণ ইতিহাস আবার পাঠায়, তাই প্রতিটি অনুরোধ আগেরটির চেয়ে বড় হয়। এখানে বৃদ্ধি দেখানোর জন্য একটি কাল্পনিক চ্যাট (রাউন্ড সংখ্যা, উদাহরণের জন্য): ১,০০০ টোকেনের একটি সিস্টেম প্রম্পট, এবং প্রতিটি টার্নে প্রায় ৫০০ টোকেন প্রশ্ন এবং ১,৫০০ টোকেন উত্তর যোগ হয়, মোট ২,০০০।

১,০০০ + ৩০ × ২,০০০ = ৬১,০০০ টোকেন

এটি ৩০ টার্ন পরে ইতিহাসের আকার। সেই প্রতিটি টোকেন পরবর্তী অনুরোধে আবার ইনপুট হিসেবে গণনা হয়। ৩১তম অনুরোধে সেই ৬১,০০০-টোকেন ইতিহাস প্লাস নতুন ৫০০-টোকেন প্রশ্ন বহন করে, তাই এর ইনপুট ৬১,৫০০ টোকেন। MiniMax-M2.7-এ ১,৫০০-টোকেন উত্তরের সাথে এর খরচ $0.0033। এখানে একই অনুরোধের জন্য তিনটি মডেল, তুলনার জন্য OpenRouter-এর মূল্য সহ:

মডেল খরচ OpenRouter
GLM-5.3-Flash $0.0013 $0.0027
DeepSeek-V4-Flash $0.0011 $0.0032
MiniMax-M2.7 $0.0033 $0.0203

মোট ৬১,৫০০ ইনপুট এবং ১,৫০০ আউটপুট টোকেন। প্রতি 1M টোকেনের দাম বর্তমান এবং আমাদের ট্যারিফের সাথে পরিবর্তিত হয়; OpenRouter কলামটি একই ওয়ার্কলোডের জন্য রেফারেন্স মূল্য দেখায়।

একই চ্যাট প্রায় একশো টার্নে ক্ষুদ্রতম উইন্ডো পূর্ণ করে:

(২০০,০০০ − ১,০০০) / ২,০০০ = ৯৯.৫

যখন এটি উপচে পড়ে, প্রদানকারী অনুরোধ প্রত্যাখ্যান করে। স্ট্যাটাস কোড প্রদানকারীর উপর নির্ভর করে, তাই ত্রুটির বডি পড়ুন। উদাহরণস্বরূপ, Claude-এর 413 request_too_large বাইটে অনুরোধের আকার সম্পর্কে (Messages-এর জন্য ৩২ MB), টোকেন উইন্ডো থেকে ভিন্ন একটি সীমা।

কী করবেন:

  • সবচেয়ে পুরোনো টার্নগুলো বাদ দিন, অথবা সেগুলো একটি সংক্ষিপ্ত সারাংশ দিয়ে প্রতিস্থাপন করুন।
  • যখন কাজের জন্য একটি অধ্যায় প্রয়োজন তখন সম্পূর্ণ ডকুমেন্ট পেস্ট করবেন না।
  • যদি সত্যিই সম্পূর্ণ টেক্সট প্রয়োজন হয় তবে বড় উইন্ডোর মডেলে যান।

৫. উত্তর কেটে গেছে#

এখানে কোনো ত্রুটি নেই, এবং এটিই এটিকে বিভ্রান্তিকর করে তোলে। মডেলটি কেবল থেমে গেছে কারণ এটি max_tokens বা মডেলের নিজস্ব আউটপুট সীমায় পৌঁছেছে। Chat Completions ফরম্যাটে চিহ্নটি হলো choice-এ finish_reason: "length"।

CheapTokens-এ, DeepSeek-V4-Flash প্রতি উত্তরে ৩২,৭৬৮ টোকেন পর্যন্ত ফেরত দিতে পারে; GLM-5.3-Flash এবং MiniMax-M2.7 ৮,১৯২ পর্যন্ত। যদি আপনার max_tokens এর চেয়ে কম হয়, এটি বাড়ান। যদি আপনি ইতিমধ্যে সীমায় থাকেন, কাজটি ভাগ করুন ("৩টির মধ্যে ১ম অংশ লিখুন") অথবা মডেলকে শেষ বাক্য থেকে চালিয়ে যেতে বলুন।

MiniMax-M2.7 আউটপুটের মূল্য $0.15 প্রতি ১M টোকেন, এবং এটি আউটপুটে OpenRouter-এর চেয়ে সস্তা।

একই সমস্যা ভিন্ন নামে#

প্রদানকারীরা একই কারণগুলো ভিন্নভাবে লেবেল করে। ২০ অক্টোবর ২০২৬ পর্যন্ত তাদের ডকুমেন্টেশন যা বলে:

সমস্যা DeepSeek API Claude API
ব্যালেন্স খালি 402 Insufficient Balance 402 billing_error
রেট লিমিট 429 Rate Limit Reached 429 rate_limit_error (এছাড়াও টিয়ারের মাসিক ব্যয় সীমা)
খারাপ কী 401 401 authentication_error
অনুরোধ খুব বড় আলাদা কোড হিসেবে তালিকাভুক্ত নয় 413 request_too_large (বাইট, টোকেন নয়)
আপনি নিজে যে ব্যয় সীমা নির্ধারণ করেছেন তালিকাভুক্ত নয় 400 invalid_request_error

সূত্র: DeepSeek error codes, Claude API errors। কোনো পৃষ্ঠাতেই প্রকাশের তারিখ দেখানো হয় না, তাই চেকের তারিখটি আমাদের।

মূল কথা: শব্দচয়ন থেকে অনুমান করবেন না। ত্রুটিগুলো JSON হিসেবে ফেরত আসে যেখানে একটি error অবজেক্ট থাকে যাতে একটি type এবং একটি message থাকে। স্ট্যাটাস এবং টাইপের উপর মিল করুন, কারণ বার্তার টেক্সট পরিবর্তিত হয়।

আসলে কী ফেরত আসে দেখুন#

এই স্নিপেটটি একটি ব্যর্থ অনুরোধের স্ট্যাটাস এবং বডি এবং একটি সফল অনুরোধের finish_reason প্রিন্ট করে। এটি একটি ডায়াগনস্টিক স্কেচ, টেস্ট লগ নয়: আপনার নিজের কী দিয়ে এটি চালান এবং আপনি যা পান তা পড়ুন।

python
# Placeholders: YOUR_API_KEY, MODEL_ID (a model id you have access to)
from openai import OpenAI, APIStatusError

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.cheaptokens.dev/v1")

try:
    r = client.chat.completions.create(
        model="MODEL_ID",
        messages=[{"role": "user", "content": "Write a long checklist."}],
        max_tokens=1000,
    )
except APIStatusError as e:
    # Read the status and the body, not the wording of the message
    print("status:", e.status_code)
    print("body:", e.body)
else:
    print("finish_reason:", r.choices[0].finish_reason)  # "length" = cut off
    print("usage:", r.usage)  # prompt_tokens and completion_tokens

যদি চেকটি ব্যালেন্সের দিকে ইঙ্গিত করে#

ব্যালেন্স টপ আপ করুন এবং অনুরোধটি আবার পাঠান। CheapTokens-এ মূল্য প্রতি মডেলে নির্ধারিত, কোনো পিক আওয়ার নেই, এবং একটি ব্যালেন্স সব মডেল কভার করে, তাই প্রতিটির জন্য আলাদা টপ-আপের প্রয়োজন নেই। বর্তমান হার এখানে:

মডেল কনটেক্সট ইনপুট $/১ মিলিয়ন আউটপুট $/১ মিলিয়ন OpenRouter ইন OpenRouter আউট
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

প্রতি ১ মিলিয়ন টোকেনের জন্য USD-তে মূল্য। OpenRouter-এর পরিসংখ্যান তুলনার জন্য দেখানো হয়েছে এবং তা পরিবর্তিত হতে পারে।

টপ আপ করার আগে আপনার নিজের ভলিউম খরচের টেবিলে বসান। সংখ্যাগুলো ঠিক মনে হলে Top up your balance, এবং যদি আপনি প্রথমে বড় কাজের চাপ অনুমান করতে চান, দেখুন How to estimate the cost of an AI agent।