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

শুরু করাগাইড

VS Code-এ প্রথম API রিকোয়েস্ট: একটি .http ফাইল, .env থেকে কী

REST Client এক্সটেনশন দিয়ে VS Code থেকে CheapTokens-এ আপনার প্রথম chat completion পাঠান, কী-টি git-এর বাইরে রাখুন, এবং উত্তর ও টোকেন ব্যবহার খুঁজে নিন।

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

VS Code রিকোয়েস্ট ফাইল যেখানে CheapTokens API-তে একটি POST এবং .env থেকে পড়া কী আছে
এই পৃষ্ঠায়
  1. এক্সটেনশন ইনস্টল করুন এবং কী-টি .env-এ আনুন
  2. .http ফাইল লিখুন
  3. এটি পাঠান এবং উত্তর খুঁজুন
  4. এক লাইনে মডেল বদলান
  5. যদি কাজ না করে

আপনি VS Code না ছেড়েই CheapTokens-এ আপনার প্রথম রিকোয়েস্ট পাঠাতে পারেন: REST Client এক্সটেনশন ইনস্টল করুন, একটি .http ফাইল লিখুন, কী-টি তার পাশে একটি .env-এ রাখুন এবং Ctrl+Alt+R চাপুন। উত্তরটি ফাইলের পাশে একটি প্যানেলে খোলে, আর টেক্সট ও টোকেন সংখ্যা দুটি ফিল্ড এক নজরেই পাওয়া যায়।

যদি ইতিমধ্যে একটি এডিটর খোলা থাকে, তবে শুধু একটি মডেলকে "Hello" বলার জন্য আরেকটি অ্যাপ ইনস্টল করার চেয়ে এটি ভালো। আর রিকোয়েস্টটি একটি সাধারণ টেক্সট ফাইলে থাকে, তাই আপনি কাল আবার চালাতে পারেন বা (কী ছাড়া) সহকর্মীর জন্য কমিট করতে পারেন। একই রিকোয়েস্ট পাঠানোর অন্য উপায়গুলো First request with HTTPie এবং Your first API request with CheapTokens-এ আছে।

এক্সটেনশন ইনস্টল করুন এবং কী-টি .env-এ আনুন#

REST Client হলো humao.rest-client এক্সটেনশন। VS Code-এ F1 চাপুন, ext install টাইপ করুন, rest-client খুঁজুন এবং ইনস্টল করুন। (৯ নভেম্বর ২০২৬-এ এক্সটেনশনের README অনুযায়ী যাচাই করা।)

এবার কী। README-তে {{$dotenv NAME}} বর্ণনা করা আছে: এটি আপনার .http ফাইলের একই ডিরেক্টরিতে থাকা একটি .env ফাইল থেকে একটি মান পড়ে। এটাই আমাদের চাওয়া, কারণ কী কখনো রিকোয়েস্ট ফাইলে দেখা যায় না। পরীক্ষার জন্য একটি ফোল্ডার তৈরি করুন এবং সেখানে দুটি ফাইল রাখুন।

.env:

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore:

text
.env

আপনার CheapTokens অ্যাকাউন্টে কী তৈরি করুন এবং প্লেসহোল্ডারের বদলে এটি পেস্ট করুন। ignore লাইনটি কেন গুরুত্বপূর্ণ, এবং কোনো কী কখনো কমিটে ঢুকে গেলে কী করবেন, তা Store an API key safely-এ আছে।

ক্রমে সাজান

সেটআপ সঠিক ক্রমে রাখুন

  1. REST Client এক্সটেনশন ইনস্টল করুন
  2. .env কে .gitignore-এ যোগ করুন
  3. কী-টি .http ফাইলের পাশে .env-এ রাখুন
  4. রিকোয়েস্টে Ctrl+Alt+R চাপুন

.http ফাইল লিখুন#

একই ফোল্ডারে first.http তৈরি করুন। সিনট্যাক্স সংক্ষিপ্ত: একটি রিকোয়েস্ট লাইন (POST URL HTTP/1.1, মেথড ঐচ্ছিক এবং ডিফল্ট GET), প্রথম খালি লাইন পর্যন্ত হেডার লাইন Name: value, তারপর একটি খালি লাইনের পরে বডি। রিকোয়েস্টগুলো তিন বা তার বেশি #-এর একটি লাইন দিয়ে আলাদা করা হয়।

http
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json

{
  "model": "zai-org/GLM-5.3-Flash",
  "messages": [{ "role": "user", "content": "Hello" }]
}

তিনটি জিনিস লক্ষ্য করুন। ঠিকানাটি হলো CheapTokens API বেস, https://api.cheaptokens.dev/v1, যোগ /chat/completions। মডেলটি তার সম্পূর্ণ id দিয়ে লেখা, zai-org/GLM-5.3-Flash: একটি 390K-কনটেক্সট মডেল যা প্রতি উত্তরে সর্বোচ্চ 8,192 টোকেন লিখতে পারে। আর কী-টি শুধু একটি {{$dotenv …}} প্লেসহোল্ডার, তাই এই ফাইলটি কমিট করা নিরাপদ।

কী-টি .env-এ থাকে; first.http শুধু এটির একটি রেফারেন্স রাখে
কী-টি .env-এ থাকে, first.http শুধু এটির একটি রেফারেন্স রাখে

যদি আপনার সেটআপ .env ফাইলটি না পড়ে, README-তে {{$processEnv NAME}}-ও বর্ণনা করা আছে, যা আপনার মেশিনের এনভায়রনমেন্ট থেকে একটি ভেরিয়েবল পড়ে।

এটি পাঠান এবং উত্তর খুঁজুন#

রিকোয়েস্ট লাইনের উপরে "Send Request" ক্লিক করুন, অথবা Ctrl+Alt+R চাপুন (macOS-এ Cmd+Alt+R)। আপনি রাইট-ক্লিকও করতে পারেন বা F1 ব্যবহার করতে পারেন। রেসপন্স একটি আলাদা প্যানেলে খোলে। যদি আপনি একটি সাধারণ এডিটর ট্যাব পছন্দ করেন যেখানে সার্চ ও ফোল্ড করা যায়, সেটিংসে rest-client.previewResponseInUntitledDocument কে true-এ সেট করুন।

রেসপন্স হলো স্ট্যান্ডার্ড chat-completions JSON। প্রথম দিনেই দুটি জায়গা গুরুত্বপূর্ণ:

  • choices[0].message.content হলো উত্তর টেক্সট। এর পাশে, finish_reason বলে দেয় মডেল কেন থেমেছে। length মানে উত্তরটি টোকেন সীমার কারণে কাটা পড়েছে।
  • usage এই রিকোয়েস্টের টোকেন সংখ্যা ধারণ করে: আপনি যত টোকেন পাঠিয়েছেন এবং মডেল যত টোকেন লিখেছে। এটাই আপনার খরচ, তাই প্রতিবার এটি দেখুন।
Ctrl+Alt+R থেকে উত্তর টেক্সট এবং usage ফিল্ড পর্যন্ত
রেসপন্স প্যানেলে কোথায় দেখবেন
নিজে চেষ্টা করুনচেষ্টা করুন: একটি উত্তর কাটা পড়েছে তা কীভাবে বুঝবেন?উত্তর দেখান

রেসপন্সে finish_reason দেখুন। যদি এটি length বলে, তবে মডেল শেষ করার আগেই টোকেন সীমায় পৌঁছে গেছে। বডিতে একটি "max_tokens" লাইন যোগ করুন, বা এটি বাড়ান, এবং আবার পাঠান।

খরচের অনুভূতি পেতে: ধরুন আপনি এই রিকোয়েস্টটি ১০০ বার পাঠান, প্রায় ১,০০০ টোকেন ইন এবং ৩০০ আউট (উদাহরণের জন্য একটি অনুমান, কোনো পরিমাপ নয়)।

মডেল প্রতি অনুরোধে ১০০টি অনুরোধ OpenRouter, ১০০টি অনুরোধ
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $0.000095 $0.0095 $0.114

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

টেবিলটি প্রতিটি মডেলে সেই ওয়ার্কলোডের লাইভ মূল্য দেখায়, সাথে তুলনার জন্য একটি OpenRouter কলাম। একটি ছোট "Hello"-এর খরচ অনেক কম।

এক লাইনে মডেল বদলান#

সাধারণ টেক্সট ফাইলের সুবিধাজনক দিক: একটি লাইন বদলান এবং আবার পাঠান। মডেল id-টি deepseek-ai/DeepSeek-V4-Flash-0731 দিয়ে প্রতিস্থাপন করুন (380K কনটেক্সট, প্রতি উত্তরে সর্বোচ্চ 32,768 টোকেন, দিনের যেকোনো সময় একই দাম, ইনপুট ও আউটপুট একসাথে গণনায় OpenRouter-এর চেয়ে মোটে সস্তা) এবং আরেকবার Ctrl+Alt+R চাপুন। একই বডি, একই কী, ভিন্ন উত্তর, এবং ভিন্ন usage।

দুটোই রাখতে চান? অন্য মডেল id দিয়ে একটি ### লাইনের নিচে দ্বিতীয় রিকোয়েস্ট পেস্ট করুন। প্রতিটি রিকোয়েস্টের নিজস্ব Send Request লিংক থাকে, তাই আপনি একটির পর একটি চালিয়ে তুলনা করতে পারেন। id নিয়ে নিশ্চিত নন? List models with GET /v1/models সঠিক স্ট্রিংগুলো দেখায়।

যদি কাজ না করে#

জোড়া মেলান

লক্ষণ মিলিয়ে কারণ খুঁজুন

  • 401 Unauthorizedকী খালি বা ভুল, প্রায়ই কারণ .env .http ফাইলের একই ফোল্ডারে নেই
  • 404 Not FoundURL পাথে বা মডেল id-তে টাইপো
  • উত্তর বাক্যের মাঝপথে থেমে যায়, finish_reason হলো lengthটোকেন সীমায় পৌঁছে গেছে, max_tokens বাড়ান

প্রথম দুটির জন্য, API 401 or 404: wrong key, base URL or model id চেকগুলো ধাপে ধাপে দেখায়। সম্পূর্ণ রিকোয়েস্টের বিবরণ CheapTokens docs-এ, এবং বর্তমান দাম pricing page-এ আছে।

এটাই পুরো ওয়ার্কফ্লো: একটি ফাইল, .env-এ একটি কী, একটি শর্টকাট। এখান থেকে আপনি একটি সিস্টেম মেসেজ যোগ করতে পারেন, max_tokens বদলাতে পারেন, বা একই বডিকে যেকোনো ভাষার কোডে রূপান্তর করতে পারেন।