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

শুরু করাগাইড

একটি API কী নিরাপদে সংরক্ষণ করুন: env ভেরিয়েবল, .gitignore, লিক ঠিক করুন

আপনার CheapTokens কী কোড এবং git থেকে দূরে রাখুন: একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করুন, .env কে .gitignore-এ যোগ করুন, এবং কী লিক হলে কী করতে হবে জানুন।

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

একটি এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট এবং একটি API কী-এর জন্য .gitignore লাইন সহ টার্মিনাল
এই পৃষ্ঠায়
  1. কেন কীটি আপনার কোডে থাকা উচিত নয়
  2. ধাপ ১: কীটি একটি এনভায়রনমেন্ট ভেরিয়েবলে রাখুন
  3. ধাপ ২: একটি .env ফাইল ব্যবহার করুন কিন্তু কমিট করবেন না
  4. যদি কী লিক হয়: কী করতে হবে, ক্রমানুসারে
  5. নিজেকে পরীক্ষা করুন

কীটি কোডে নয়, একটি এনভায়রনমেন্ট ভেরিয়েবলে রাখুন, এবং .gitignore-এ একটি লাইন দিয়ে যেকোনো .env ফাইল git-এর বাইরে রাখুন। যদি কোনো কী ইতিমধ্যে কোথাও পাবলিক হয়ে থাকে, প্রথমে কীটির ব্যবস্থা নিন এবং পরে পরিষ্কার করুন: কীটি যখন আপনার কোড এবং টুলে থাকে তখন git ইতিহাস পরিষ্কার করলে কিছুই ঠিক হয় না।

এটাই পুরো ধারণা। এই গাইডটি হ্যান্ডস-অন সংস্করণ (মূল বিষয়গুলো What is an API key-এ আছে): তিনটি কমান্ড, একটি কার্যকর অনুরোধ, এবং খারাপ দিনের জন্য একটি সংক্ষিপ্ত পরিকল্পনা।

কেন কীটি আপনার কোডে থাকা উচিত নয়#

একটি API কী হলো একটি পাসওয়ার্ড যা আপনার টাকা খরচ করে। যে কেউ এটি ধারণ করে আপনার ব্যালেন্সে অনুরোধ পাঠাতে পারে, এবং পরিষেবাটি তাদের আপনার থেকে আলাদা করতে পারে না।

সাধারণত যেভাবে ভুল হয় তা বিরক্তিকর। প্রথম অনুরোধটি কাজ করানোর জন্য আপনি স্ক্রিপ্টে কীটি পেস্ট করেন, স্ক্রিপ্টটি কাজ করে, আপনি git push করেন, এবং রিপোজিটরি পাবলিক হয়ে যায়। অথবা আপনি সহকর্মীকে আপনার কনফিগ ফাইল পাঠান। অথবা আপনি একটি ত্রুটির স্ক্রিনশট নেন যেখানে কোণায় কীটি দৃশ্যমান। প্রতিবার একই ফলাফল।

GitHub এই প্যাটার্নটি ভালোভাবে জানে। এর সিক্রেট স্ক্যানিং (GitHub docs, ২৯ অক্টোবর ২০২৬-এ যাচাইকৃত) সমস্ত শাখায় সম্পূর্ণ Git ইতিহাসে হার্ডকোডেড ক্রেডেনশিয়াল খোঁজে, এবং ইস্যু, পুল রিকোয়েস্ট, আলোচনা, উইকি এবং সিক্রেট গিস্টেও খোঁজে, এবং একটি খুঁজে পেলে সতর্কতা জারি করে। যার মানে আপনার পরবর্তী কমিটে লাইনটি মুছে ফেললে কিছুই বদলায় না: পুরনো কমিটে এটি এখনও আছে।

এখানে একই স্ক্রিপ্ট আগে এবং পরে।

তুলনা করুন

একই স্ক্রিপ্ট, কী কোড থেকে সরানো হয়েছে

কোডে কী

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="<your-key>",  # pasted here: ends up in git
)

এনভায়রনমেন্ট থেকে কী

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

দ্বিতীয় সংস্করণটি GitHub, চ্যাট বা কোড রিভিউতে যেমন আছে তেমনই যেতে পারে। কীটি আপনার মেশিনে, ফাইলের বাইরে থাকে।

ধাপ ১: কীটি একটি এনভায়রনমেন্ট ভেরিয়েবলে রাখুন#

একটি এনভায়রনমেন্ট ভেরিয়েবল হলো একটি নামযুক্ত মান যা আপনার টার্মিনাল তার চালু করা প্রতিটি প্রোগ্রামকে দেয়। স্ক্রিপ্টটি নাম দিয়ে CHEAPTOKENS_API_KEY চায় এবং এটি কোথা থেকে এসেছে তা কখনও দেখে না।

macOS এবং Linux-এ:

bash
export CHEAPTOKENS_API_KEY="<your-key>"

Windows PowerShell-এ:

powershell
setx CHEAPTOKENS_API_KEY "<your-key>"

দুটি বিষয় মানুষকে বিভ্রান্ত করে। export শুধুমাত্র সেই টার্মিনাল উইন্ডোর জন্য স্থায়ী হয়, তাই এটি রাখতে, আপনার শেল প্রোফাইলে (~/.zshrc বা ~/.bashrc) লাইনটি যোগ করুন। এবং setx যে উইন্ডোতে আপনি এটি টাইপ করেছেন তা পরিবর্তন করে না: পরীক্ষা করার আগে একটি নতুন টার্মিনাল খুলুন।

এখন একটি সম্পূর্ণ অনুরোধ। এটি OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট https://api.cheaptokens.dev/v1 এবং DeepSeek-V4-Flash তার সম্পূর্ণ আইডি সহ (deepseek-ai/DeepSeek-V4-Flash-0731; আইডিগুলো CheapTokens docs থেকে নিন, কারণ প্রদানকারীদের মধ্যে নাম ভিন্ন হয়):

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)
print(resp.usage)

একটি সংক্ষিপ্ত অভিবাদন হলো প্রায় ২০ টোকেন ইন এবং ২০ আউট-এর একটি অনুরোধ, যা বর্তমান মূল্যে $0.0000023 (সম্পূর্ণ তালিকা pricing page-এ আছে)। যদি আপনি এখনও প্রথম অনুরোধ না পাঠিয়ে থাকেন, Your first API request with CheapTokens শূন্য থেকে এটি ব্যাখ্যা করে।

মডেলের উত্তর choices[0].message.content-এ ফিরে আসে, এবং usage এটি গণনা করা টোকেন দেখায়। কীটি ফাইলে কখনও দেখা যায় না।

Terminal showing the .env and .gitignore commands
The three commands that keep the key out of git

ধাপ ২: একটি .env ফাইল ব্যবহার করুন কিন্তু কমিট করবেন না#

প্রতিটি নতুন উইন্ডোতে export টাইপ করা বিরক্তিকর হয়ে যায়। একটি .env ফাইল মানটি একটি জায়গায়, প্রকল্পের পাশে রাখে:

text
CHEAPTOKENS_API_KEY=<your-key>

Python এটি python-dotenv (pip install python-dotenv) দিয়ে পড়ে:

python
from dotenv import load_dotenv
load_dotenv()  # fills os.environ from .env

ফাইলটি শুধুমাত্র তখনই নিরাপদ যদি git এটি কখনও না দেখে। প্রথম কমিটের আগে এটি .gitignore-এ যোগ করুন:

bash
echo ".env" >> .gitignore
git check-ignore -v .env

যদি সবকিছু ঠিক থাকে, দ্বিতীয় কমান্ডটি .gitignore:1:.env .env-এর মতো কিছু প্রিন্ট করে: git আপনাকে বলে কোন নিয়মটি ফাইলটিকে উপেক্ষা করছে। যদি এটি কিছু প্রিন্ট না করে, নিয়মটি কাজ করছে না। Windows-এ, একটি এডিটরে .gitignore তৈরি করুন .env লাইন দিয়ে, অথবা Add-Content .gitignore .env ব্যবহার করুন: PowerShell-এর >> UTF-16 লিখতে পারে, যা git উপেক্ষা করতে পারে।

একটি ফাঁদ: .gitignore শুধুমাত্র সেই ফাইলগুলিকে প্রভাবিত করে যা git এখনও ট্র্যাক করছে না। যদি .env ইতিমধ্যে একবার কমিট করা হয়ে থাকে, git rm --cached .env চালান যাতে git এটি ট্র্যাক করা বন্ধ করে, এবং ভিতরের কীটিকে প্রকাশিত হিসেবে গণ্য করুন (নিচে আরও)। একটি পরিচ্ছন্ন অভ্যাস হলো মানের পরিবর্তে ভেরিয়েবলের নাম এবং একটি প্লেসহোল্ডার সহ একটি .env.example কমিট করা, যাতে একজন সহকর্মী জানতে পারে কী সেট করতে হবে।

যদি কী লিক হয়: কী করতে হবে, ক্রমানুসারে#

হয়তো কীটি একটি পাবলিক রিপোতে গিয়েছিল, হয়তো এটি একটি স্ক্রিনশটে ছিল, হয়তো আপনি পুরো কনফিগ একটি ফোরাম থ্রেডে পেস্ট করেছিলেন। ক্রমটি যেকোনো একক ধাপের গতির চেয়ে বেশি গুরুত্বপূর্ণ।

GitHub-এর নিজস্ব নির্দেশনা (একই পৃষ্ঠা, ২৯ অক্টোবর ২০২৬-এ যাচাইকৃত) হলো অবিলম্বে ক্রেডেনশিয়াল রোটেট করুন; Git ইতিহাস পুনর্লিখন ঐচ্ছিক এবং ক্রেডেনশিয়াল প্রত্যাহার হয়ে গেলে প্রায়শই অপ্রয়োজনীয়। মানুষ এটা উল্টোভাবে করতে ঝোঁক: তারা এক ঘন্টা ইতিহাস পরিষ্কার করতে ব্যয় করে যখন কীটি এখনও কাজ করে। করবেন না।

আপনার কেস বেছে নিন

আপনার কীটির কী হয়েছিল? নিকটতম কেসটি বেছে নিন

কীটি একটি কমিটে ছিল যা এখন পাবলিক

প্রথমে কোড থেকে কীটি সরান, এনভায়রনমেন্ট ভেরিয়েবলে স্যুইচ করুন, .gitignore-এ .env যোগ করুন, এবং আপনার ব্যালেন্সে দেখুন আপনি পাঠাননি এমন অনুরোধ আছে কিনা। ইতিহাস পরিষ্কার করা পরে একটি ভালো-থাকবে, জরুরি অংশ নয়।

কীটি একটি স্ক্রিনশট বা শেয়ার করা ফাইলে ছিল

একই ক্রম: আপনার টুলে সেই কীটি ব্যবহার বন্ধ করুন এবং এনভায়রনমেন্ট ভেরিয়েবলে চলে যান, তারপর সম্ভব হলে পোস্ট বা ফাইলটি মুছে ফেলুন। একটি মুছে ফেলা স্ক্রিনশট ইতিমধ্যে কপি হয়ে থাকতে পারে, তাই শুধুমাত্র মুছে ফেলার উপর নির্ভর করবেন না।

একই কী একাধিক টুলে ব্যবহৃত হয়

কীটি ধারণ করা প্রতিটি জায়গা দিয়ে যান: আপনার শেল প্রোফাইল, .env ফাইল, এডিটর এবং টার্মিনাল টুল, এবং প্রতিটিকে এনভায়রনমেন্ট ভেরিয়েবলের দিকে নির্দেশ করুন, যাতে পরিবর্তনের জন্য একটি একক জায়গা থাকে। যদি কোনো টুল ভেরিয়েবলটি পড়তে ব্যর্থ হয়, 401/404 troubleshooting guide দেখায় ত্রুটিটি কেমন দেখায়।

Three steps after a leak: take the key out of the code, update every tool, send a test request
Key out of the code first, then every tool, then a test request

পরিষ্কারের পরে, ধাপ ১-এর মতো একটি ছোট পরীক্ষামূলক অনুরোধ পাঠান, এবং আপনার ব্যালেন্স পরীক্ষা করুন। যদি এটি উত্তর দেয় এবং ব্যালেন্স এবং অনুরোধ স্বাভাবিক দেখায়, পরিষ্কার শেষ; পরের কয়েক দিন ব্যালেন্সের উপর নজর রাখুন। একটি কী যা পাবলিক হয়েছে তা কোড থেকে সরানোর পরেও প্রকাশিত হিসেবে গণ্য করা উচিত, তাই ব্যালেন্স এবং অনুরোধের সংখ্যায় আপনি পাঠাননি এমন কিছু দেখুন, এবং নতুন জায়গায় সেই কীটি পুনরায় ব্যবহার করবেন না। কী সাধারণত কোথায় থাকে তা জানতে, Where to plug in your own API key দেখুন।

নিজেকে পরীক্ষা করুন#

নিজে চেষ্টা করুনচেষ্টা করুন: ভেরিয়েবলটি আনসেট করুন এবং স্ক্রিপ্টটি চালান। আপনি কী দেখেন?উত্তর দেখান

Python আপনার মেশিন থেকে কোনো অনুরোধ যাওয়ার আগে KeyError: 'CHEAPTOKENS_API_KEY' দিয়ে থেমে যায়। এটাই ভালো ব্যর্থতা: স্ক্রিপ্টটি চুপচাপ একটি পেস্ট করা কী ব্যবহার করার পরিবর্তে কী ছাড়া চলতে অস্বীকার করে। যদি আপনি এর পরিবর্তে 401 দেখেন, ভেরিয়েবলটি সেট করা আছে কিন্তু কীটি ভুল; 401/404 guide-এর বিরুদ্ধে কী এবং ঠিকানা পরীক্ষা করুন।