অধ্যায় 1 · আপনার ডেভেলপার টুলবক্স
Git, API ও ব্যাকএন্ড: AI ইঞ্জিনিয়ারের কেন দরকার
- পৃষ্ঠা 1 / 22
- 9 মিনিট পড়া
আপনি মডেল ট্রেইন করেছেন, Python থেকে LLM-কে কল করেছেন, ডেটাবেসে ডেটা রেখেছেন। এবার সেই প্রশ্নটা আসে যার মুখোমুখি প্রতিটা AI ইঞ্জিনিয়ার কখনো না কখনো হয়: এসব কীভাবে অন্য মানুষের ব্যবহারের উপযোগী কিছু হয়ে ওঠে? ল্যাপটপের নোটবুক প্রোডাক্ট নয়। প্রোডাক্ট হলো এমন কোড, যা একটা রিপোজিটরিতে থাকে এবং দল মিলে তাতে কাজ করতে পারে, নেটওয়ার্কে API দিয়ে পাওয়া যায়, আপনার ল্যাপটপ ছাড়া অন্য কোনো সার্ভারে চলে, আর আপনি ঘুমিয়ে থাকলেও চলতে থাকে।
এই টিউটোরিয়াল সেই দক্ষতাগুলো শেখায় যা আপনার AI কাজকে বাস্তব দুনিয়ার সাথে জোড়ে: কোড নিরাপদে রাখতে ও শেয়ার করতে Git, অন্য সিস্টেমের (LLM প্রোভাইডারসহ) সাথে কথা বলতে HTTP ও ওয়েব API, আর FastAPI দিয়ে নিজের বানানো ব্যাকএন্ড। এই প্রথম পাতাটা একটা মানচিত্র: অংশগুলো কীভাবে জোড়া লাগে, পরের প্রতিটা পাতা কী বানায়, আর আপনার মেশিন কীভাবে তৈরি করবেন।
যা শিখবেন
- একটা আসল AI প্রোডাক্ট কীভাবে গড়া: রিপোজিটরি, API, ব্যাকএন্ড, মডেল বা LLM, ডিপ্লয়মেন্ট
- "শুধু AI করতে চাই" হলেও কেন Git, API ও ব্যাকএন্ড জরুরি
- যে টুলগুলো ব্যবহার করবেন, আর কোনটা কীসের জন্য
- এই টিউটোরিয়ালের ২২টা পাতা কী বানায়, আর শেষে যে প্রজেক্ট শেষ করবেন সেটা
- Windows, macOS বা Linux-এ কীভাবে সাথে সাথে অনুসরণ করবেন
একটা AI প্রোডাক্ট কীভাবে জোড়া লাগে
একটা ছোট প্রোডাক্ট কল্পনা করুন: কাস্টমারের রিভিউ পড়ে তার সেন্টিমেন্ট জানানো একটা সার্ভিস, অথবা আপনার বিশ্ববিদ্যালয়ের কোর্স নিয়ে একটা চ্যাট অ্যাসিস্ট্যান্ট। পর্দার পেছনে সবসময় একই পাঁচটা স্তর থাকে:
1. Repository your code, prompts and settings, versioned with Git
|
v
2. Backend a program that runs all the time and waits for requests (FastAPI)
|
v
3. API the agreed "menu" of requests it understands (HTTP + JSON)
|
v
4. Model / LLM a scikit-learn model in the backend, or a call to an LLM provider
|
v
5. Deployment a server or cloud service that keeps it running for everyoneব্যবহারকারীর অ্যাপ, ওয়েবসাইট বা অন্য কোনো প্রোগ্রাম আপনার API-তে একটা HTTP রিকোয়েস্ট পাঠায়। আপনার ব্যাকএন্ড সেটা যাচাই করে, মডেল চালায় (অথবা কোনো LLM প্রোভাইডারের API-কে কল করে, যেটা নিজেও আরেকটা HTTP API), এবং একটা রেসপন্স ফেরত পাঠায়, সাধারণত JSON। এই পুরো কোড থাকে একটা রিপোজিটরিতে, আর ডিপ্লয়মেন্ট সেটাকে এমন একটা মেশিনে কপি করে যা সবসময় চালু থাকে।
| স্তর | কোন প্রশ্নের উত্তর দেয় | এই টিউটোরিয়ালের টুল |
|---|---|---|
| রিপোজিটরি | এটা কোন সংস্করণ? কে, কেন বদলেছে? আগের অবস্থায় ফেরা যাবে? | Git, GitHub |
| ব্যাকএন্ড | কোন প্রোগ্রাম রিকোয়েস্টের উত্তর দেয়, আর কীভাবে যাচাই করে? | Python, FastAPI, Pydantic |
| API | অন্য প্রোগ্রাম আমার সাথে, আর আমি তাদের সাথে কীভাবে কথা বলি? | HTTP, JSON, curl, requests |
| মডেল / LLM | বুদ্ধিমত্তাটা আসে কোথা থেকে? | আপনার Python কোড, একটা LLM API |
| ডিপ্লয়মেন্ট | আসল ব্যবহারকারীর জন্য এটা নিরাপদে কীভাবে চলে? | অ্যাডভান্সড টিউটোরিয়ালে আছে |
একজন AI ইঞ্জিনিয়ারের কেন এটা দরকার
- প্রায় প্রতিটা AI প্রোডাক্টই একটা API। মডেল তখনই অন্যদের কাজে লাগে যখন কেউ তাকে কল করে। "AI" অংশটা প্রায়ই ব্যাকএন্ডের ভেতরের একটা ফাংশন মাত্র।
- আপনি আগে থেকেই API ব্যবহার করছেন। LLM প্রোভাইডারের প্রতিটা কল একটা HTTP রিকোয়েস্ট — একটা কি, একটা JSON বডি, আর একটা JSON উত্তর। এটা বুঝলে 401, 422, 429 বা টাইমআউটের মতো এরর রহস্য না থেকে পড়ার মতো হয়ে যায়।
- প্রম্পট, কোড আর কনফিগারেশন সারাক্ষণ বদলায়। Git ছাড়া বলা যায় না কোন পরিবর্তনে উত্তর খারাপ হলো, আর টিমের সাথে কাজও করা যায় না।
- সিক্রেট আর খরচ। ফাঁস হওয়া API কি বা সীমাহীন একটা এন্ডপয়েন্ট শেষমেশ বিলে পরিণত হয়। কি নিরাপদে রাখা, ভ্যালিডেশন আর এরর ঠিকমতো সামলানো কাজেরই অংশ।
- চাকরিতে চায়। AI ইঞ্জিনিয়ারের পদে মেশিন লার্নিংয়ের পাশেই Git, REST API আর একটা Python ওয়েব ফ্রেমওয়ার্ক চাওয়া হয়।
টুলগুলো
| টুল | এটা কী | কোথায় পাবেন |
|---|---|---|
| টার্মিনাল ও শেল | যে টেক্সট ইন্টারফেসে কমান্ড টাইপ করেন | টার্মিনাল: ফাইল, পাথ ও কমান্ড |
Python, venv, pip, uv | ভাষা, তার এনভায়রনমেন্ট ও প্যাকেজ টুল | এনভায়রনমেন্ট ভেরিয়েবল, .env ফাইল ও ভার্চুয়াল এনভায়রনমেন্ট |
| Git | নিজের মেশিনে ভার্সন কন্ট্রোল | ৪ থেকে ৮ নম্বর পাতা |
| GitHub | শেয়ার ও রিভিউয়ের জন্য Git রিপোজিটরি হোস্ট করা ওয়েবসাইট | ৯ ও ১০ নম্বর পাতা |
curl | হাতে হাতে API পরখ করার কমান্ড-লাইন HTTP ক্লায়েন্ট | ১১ থেকে ১৩ নম্বর পাতা |
requests | কোড থেকে API কল করার Python লাইব্রেরি | ১৪ ও ১৫ নম্বর পাতা |
| FastAPI ও Pydantic | API বানানোর Python ফ্রেমওয়ার্ক, আর ডেটা ভ্যালিডেশন | ১৬ থেকে ১৮ নম্বর পাতা |
| pytest | আপনার কোডের অটোমেটেড টেস্ট | ১৯ নম্বর পাতা |
টিউটোরিয়াল কী বানায়
চারটা অধ্যায় আছে, আর প্রতিটা শেষ হয় চালিয়ে দেখার মতো কিছু দিয়ে:
- টার্মিনাল, এনভায়রনমেন্ট ও Git (২ থেকে ১০ নম্বর পাতা): আত্মবিশ্বাসের সাথে ঘোরাফেরা, প্রজেক্ট গুছিয়ে রাখা, কমিট করা, সিক্রেট ইগনোর করা, ভুল ফেরানো, ব্রাঞ্চ ও মার্জ, আর GitHub দিয়ে আপনার প্রথম প্রজেক্ট প্রকাশ করা।
- HTTP ও ওয়েব API (১১ থেকে ১৫ নম্বর পাতা): নেটওয়ার্কে আসলে কী যায় তা দেখা, API ডকুমেন্টেশন পড়া,
curlও Python দিয়ে API কল করা, আর টাইমআউট, রিট্রাই ও পেজিনেশন দিয়ে সেই কলগুলো নির্ভরযোগ্য করা — চ্যাট-ধরনের একটা LLM API-সহ। - নিজের ব্যাকএন্ড (১৬ থেকে ১৯ নম্বর পাতা): FastAPI দিয়ে API বানানো, Pydantic দিয়ে ইনপুট যাচাই, সঠিক এরর ফেরত দেওয়া, আর pytest দিয়ে টেস্ট করা।
- প্রজেক্ট (২০ থেকে ২২ নম্বর পাতা): BitByte Data Explorer API — একটা FastAPI সার্ভিস, যা আরেকটা API কল করে, তার ডেটা নতুন আকারে সাজায় এবং ব্যর্থতা ঠিকমতো সামলায়। এটা বানাবেন একটা Git ব্রাঞ্চে, টেস্ট করবেন, ডকুমেন্ট করবেন আর মার্জ করবেন। শেষে একটা চিট শিট টিউটোরিয়াল শেষ করবে।
অ্যাডভান্সড টিউটোরিয়াল এগিয়ে নেয় Docker, অথেনটিকেশন, ডেটাবেস, মডেল সার্ভ করা, স্ট্রিমিংসহ LLM ব্যাকএন্ড, GitHub Actions আর ডিপ্লয়মেন্টে।
ইন্টারনেট ছাড়াই অনুশীলন
আসল API বদলায়, অ্যাকাউন্ট চায়, খরচ করায় — শেখার জন্য ভালো পথ নয়। তাই এই টিউটোরিয়ালের সাথে আছে BitByte Practice API, একটা ছোট সার্ভার, যা আপনার নিজের কম্পিউটারে http://localhost:8800-এ চলে আর আসলটির মতোই আচরণ করে: পেজিনেশন, API কি, টোকেন, রেট লিমিট, মাঝে মাঝে ব্যর্থ হওয়া, এমনকি একটা নকল চ্যাট মডেলও। প্রতিটা উদাহরণ সবার জন্য একই উত্তর দেয়। এটা চালু করবেন ওয়েব API ও REST: ডকুমেন্টেশন পড়া আর curl দিয়ে পরীক্ষা পাতায়; আপাতত শুধু দেখুন জিজ্ঞেস করলে সে কী বলে (আপনি চালু না করা পর্যন্ত আপনার নিজের curl জানাবে কানেকশন প্রত্যাখ্যাত হয়েছে):
curl -s http://localhost:8800/ | python -m json.tool{
"name": "BitByte Practice API",
"version": "1.0.0",
"docs": "/docs"
}localhost মানে "এই কম্পিউটার", আর 8800 হলো পোর্ট, যেখানে সার্ভার শোনে। রেসপন্সটা JSON, যে ফরম্যাট আপনি Python থেকেই চেনেন।
আপনার মেশিন তৈরি করা
দরকার চারটা জিনিস: একটা টার্মিনাল, Python 3.12 বা নতুন (টিউটোরিয়াল 3.14 ব্যবহার করে), Git, আর curl। VS Code-এর মতো একটা এডিটর থাকলে ভালো। এই টিউটোরিয়ালের কমান্ডগুলো bash শেলের জন্য, যা macOS ও Linux-এ পাবেন:
| সিস্টেম | কী ব্যবহার করবেন |
|---|---|
| Linux | আপনার সাধারণ টার্মিনাল। প্যাকেজ ম্যানেজার দিয়ে Git আর Python ইনস্টল করুন, যেমন Ubuntu বা Debian-এ sudo apt install git python3 python3-venv curl। |
| macOS | Terminal অ্যাপ। xcode-select --install চালান বা Homebrew দিয়ে Git ইনস্টল করুন (brew install git python)। curl আগে থেকেই আছে। |
| Windows | সবচেয়ে ভালো: WSL (Windows Subsystem for Linux), যা আসল Linux শেল দেয়, তারপর Linux সারি অনুসরণ করুন। এটাও চলবে: Git for Windows ইনস্টল করুন, যার সাথে Git Bash আসে, আর সেটা ব্যবহার করুন। সাধারণ PowerShell-এ Git-এর বেশিরভাগই চলে, কিন্তু bash কমান্ড (পাইপ, export, cat) আলাদা, তাই যেখানে দরকার সেখানে পাতাগুলো ছোট টেবিলে PowerShell রূপ দেখাবে। |
সবকিছু ইনস্টল হয়েছে কি না দেখুন। এই লুপ শেলকে জিজ্ঞেস করে প্রতিটা টুল কোথায় আছে, আর শেষ লাইন Python-এর সংস্করণ যাচাই করে (কিছু সিস্টেমে কমান্ডটা python3; যেটা চলে সেটাই ব্যবহার করুন):
for tool in git python curl; do
command -v $tool > /dev/null && echo "$tool: found" || echo "$tool: MISSING"
done
python -c "import sys; print('Python OK' if sys.version_info >= (3, 12) else 'Python is older than 3.12')"git: found
python: found
curl: found
Python OKMISSING বলা যেকোনো টুল পরের পাতাগুলোর আগে ইনস্টল করতে হবে। সঠিক সংস্করণ দেখতে git --version, python --version আর curl --version | head -n1 চালান; সংখ্যাগুলো মেশিনভেদে আলাদা হবে, তাতে সমস্যা নেই। এনভায়রনমেন্ট ভেরিয়েবল, .env ফাইল ও ভার্চুয়াল এনভায়রনমেন্ট পাতা প্রতিটা টুল ইনস্টল ও যাচাই করা বিস্তারিত দেখাবে।
কীভাবে এই টিউটোরিয়াল পড়বেন
- কমান্ডগুলো নিজে টাইপ করুন। শুধু পড়ে Git শেখা সাঁতারের বই পড়ে সাঁতার শেখার মতো। এই পাতাগুলোর প্রতিটা আউটপুট আসলেই কমান্ড চালিয়ে পাওয়া।
- অনুশীলনীগুলো করুন। প্রতিটা পাতা শেষ হয় উত্তরসহ সহজ, মাঝারি ও কঠিন কাজ দিয়ে। উত্তর দেখার আগে নিজে চেষ্টা করুন।
- ইচ্ছে করে ভাঙুন। ল্যাপটপের একটা রিপোজিটরি বা সার্ভার এমন জায়গা, যেখানে ভুল করে দেখা নিরাপদ: কী ঘটে নিজের চোখে দেখতে পারবেন।
- একটাই প্রজেক্ট ফোল্ডার রাখুন।
~/projectsব্যবহার করুন আর প্রতিটা অনুশীলনের জন্য একটা ফোল্ডার, যাতে নিজের কাজ সবসময় খুঁজে পান। - হ্যাশ আর তারিখ আলাদা হবে বলে ধরে নিন। আপনার কমিট হ্যাশ ও সময় পাতার সাথে মিলবে না, কারণ সেগুলো নির্ভর করে আপনি কে আর কখন কমান্ড চালিয়েছেন তার উপর।
সাধারণ ভুল
- "বিরক্তিকর" টুলগুলো এড়িয়ে যাওয়া। টার্মিনাল আর Git AI থেকে ঘুরপথ মনে হয়। আসলে এগুলোই কাজ হারানো ঠেকায়, আর পরের প্রতিটা পাতা এগুলো ধরে নিয়েই চলে।
- আউটপুট না পড়ে কমান্ড কপি করা। আউটপুট জানায় কাজ হয়েছে কি না। পড়ুন, আর পাতার সাথে মেলান।
- সিস্টেম Python-এ প্যাকেজ ইনস্টল করা। দুটো প্রজেক্টের আলাদা সংস্করণ লাগার আগ পর্যন্ত চলে। প্রতিটা প্রজেক্টে আলাদা ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করুন, যেমন পরের অধ্যায়ে দেখবেন।
- Windows PowerShell-এ bash কমান্ড চালানো। অনেকগুলো গোলমেলে এররে ব্যর্থ হয়। WSL বা Git Bash ব্যবহার করুন, কিংবা যেখানে পাতা দেয় সেখানে PowerShell রূপ।
নিজে চেষ্টা করুন
- সহজ: নিজের মেশিনে চেক লুপটা চালান। কিছু কি অনুপস্থিত? কীভাবে ইনস্টল করবেন লিখে রাখুন।
- মাঝারি: আপনি যে প্রোডাক্ট বানাতে চান (যেমন "আমার নোট থেকে প্রশ্নের উত্তর") তার জন্য পাঁচটা স্তর আঁকুন। প্রতিটা স্তরের জন্য একটা আসল টুল বা ফাইলের নাম দিন।
- কঠিন: Practice API-র
/healthএন্ডপয়েন্টকে জিজ্ঞেস করুন সে বেঁচে আছে কি না, আরcurl -s -o /dev/null -w "%{http_code}\n"দিয়ে ফেরত আসা শুধু HTTP স্ট্যাটাস কোডটা ছাপুন।
উত্তর
১. যা অনুপস্থিত তা উপরের টেবিলের কমান্ড দিয়ে ইনস্টল করুন, তারপর কোথাও MISSING না আসা পর্যন্ত লুপ আবার চালান।
২. একটা সম্ভাব্য উত্তর: রিপোজিটরি = app.py ও prompts/-সহ একটা GitHub রিপোজিটরি; ব্যাকএন্ড = একটা FastAPI অ্যাপ; API = JSON নেয় ও ফেরত দেয় এমন একটা POST /ask এন্ডপয়েন্ট; মডেল = requests দিয়ে কল করা একটা LLM প্রোভাইডার; ডিপ্লয়মেন্ট = এনভায়রনমেন্ট ভেরিয়েবলে API কি রাখা একটা ছোট ক্লাউড সার্ভিস।
৩. -o /dev/null বডি ফেলে দেয় আর -w শুধু স্ট্যাটাস কোড ছাপে (Windows PowerShell-এ /dev/null-এর বদলে NUL লিখুন):
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8800/health200সারসংক্ষেপ
- ডিপ্লয় করা একটা AI প্রোডাক্ট একটা চেইন: রিপোজিটরি, ব্যাকএন্ড, API, মডেল বা LLM, ডিপ্লয়মেন্ট।
- Git আপনার কোড নিরাপদ ও শেয়ারযোগ্য রাখে; API ও HTTP প্রোগ্রামগুলোকে কথা বলতে দেয়; ব্যাকএন্ড হলো উত্তর দেওয়া প্রোগ্রাম।
- এই টিউটোরিয়াল শেখায় টার্মিনাল, Git ও GitHub, HTTP ও
requests, Pydantic সহ FastAPI আর টেস্টিং, এবং শেষ হয় BitByte Data Explorer API দিয়ে। - অফলাইন Practice API
http://localhost:8800-এ প্রতিটা শিক্ষার্থীকে একই উত্তর দেয়। - macOS ও Linux-এ bash, আর Windows-এ WSL বা Git Bash ব্যবহার করুন, এবং শুরুর আগে টুলগুলো যাচাই করে নিন।
এরপর: টার্মিনাল: ফাইল, পাথ ও কমান্ড। নিজের কম্পিউটারে ঘোরাফেরা, ফাইল বানানো ও খোঁজা, আর কমান্ড জুড়ে দেওয়া শিখবেন — পরের সব পাতা যে দক্ষতার উপর দাঁড়িয়ে।