অধ্যায় 5 · AI কাজের জন্য Python
Python থেকে LLM ব্যবহার
- পৃষ্ঠা 17 / 20
- 5 মিনিট পড়া
পুরো টিউটোরিয়াল এই মুহূর্তের দিকেই এগোচ্ছিল: নিজের Python কোড থেকে একটা লার্জ ল্যাঙ্গুয়েজ মডেল ব্যবহার করা। অফিসিয়াল SDK দিয়ে এতে মোটামুটি দশ লাইন লাগে। কঠিন অংশ কলটা নয় — কঠিন হলো এটা নিরাপদে, নির্ভরযোগ্যভাবে আর অপ্রত্যাশিত বিল ছাড়া করা।
১. একটা API key নিন, আর গোপন রাখুন
প্রোভাইডারের ড্যাশবোর্ডে একটা key বানান (OpenAI বা Anthropic)। ব্যবহারের বিল হয় টোকেন অনুযায়ী, তাই সাথে সাথেই ড্যাশবোর্ডে একটা মাসিক খরচের সীমা ঠিক করুন। key হলো আপনার অ্যাকাউন্টের পাসওয়ার্ডের মতো:
- কখনো কোডে লিখবেন না, আর কোনো চ্যাট বা স্ক্রিনশটে দেবেন না।
- রাখুন একটা এনভায়রনমেন্ট ভেরিয়েবল-এ। ডেভেলপমেন্টের সময় সাধারণ উপায় হলো
python-dotenvদিয়ে লোড করা একটা.envফাইল:
# .env — এই ফাইলটা git-এ রাখবেন না (.gitignore-এ ".env" যোগ করুন)
OPENAI_API_KEY=sk-...আপনার key...
ANTHROPIC_API_KEY=sk-ant-...আপনার key...প্রথম commit-এর আগেই .gitignore-এ .env যোগ করুন। GitHub-এ পুশ হওয়া key বট কয়েক মিনিটেই খুঁজে পায়। কখনো ফাঁস হলে সাথে সাথে ড্যাশবোর্ডে মুছে দিন আর নতুন একটা বানান।
২. SDK ইনস্টল করুন
python -m pip install openai python-dotenv (Claude-এর জন্য anthropic)। SDK (software development kit) আগের পাতার HTTP কলগুলোকে সহজ Python ক্লাসে মুড়ে দেয়, আর রিট্রাই, টাইমআউট ও এরর আপনার হয়ে সামলায়।
৩. প্রথম কল
OpenAI-এর বর্তমান API হলো Responses API। instructions মডেলের আচরণ ঠিক করে; input হলো ব্যবহারকারীর মেসেজ:
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv() # .env ফাইল এনভায়রনমেন্টে পড়ে নেয়
client = OpenAI() # OPENAI_API_KEY নিজেই খুঁজে নেয়
response = client.responses.create(
model="gpt-5.5",
instructions="You are a friendly Python tutor. Answer in two sentences.",
input="What is a Python dictionary?",
)
print(response.output_text)
print("Tokens in:", response.usage.input_tokens, "| out:", response.usage.output_tokens)উদাহরণ আউটপুট (মডেলের হুবহু শব্দ প্রতিবার আলাদা হবে):
A dictionary stores data as key-value pairs, like a real dictionary maps words to meanings. You look values up by key, for example person["name"].
Tokens in: 29 | out: 36usage-এর সংখ্যাগুলোর জন্যই আপনি টাকা দেন: ইনপুট টোকেন (আপনি যা পাঠিয়েছেন) আর আউটপুট টোকেন (সে যা লিখেছে)। এগুলো লগ করুন। ভুলে একটা পুরো ডকুমেন্ট ১,০০০ বার পাঠানো একটা লুপ ব্যয়বহুল বাগ।
Claude দিয়ে একই কাজ
প্রতিটা প্রোভাইডারের SDK একই আকারের — একটা ক্লায়েন্ট, একটা create কল, ফলাফলে লেখা। Anthropic-এর Messages API-তে max_tokens দিতেই হয়, উত্তরের দৈর্ঘ্যের ঊর্ধ্বসীমা:
from dotenv import load_dotenv
from anthropic import Anthropic
load_dotenv()
client = Anthropic() # ANTHROPIC_API_KEY নিজেই খুঁজে নেয়
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=300,
system="You are a friendly Python tutor. Answer in two sentences.",
messages=[{"role": "user", "content": "What is a Python dictionary?"}],
)
print(message.content[0].text)উদাহরণ আউটপুট:
A Python dictionary is a collection of key-value pairs, written with curly braces. It lets you find a value quickly by its key instead of by position.মডেলের নাম প্রায়ই বদলায়: নতুন সংস্করণ আসে, পুরোনোগুলো বন্ধ হয়। প্রোভাইডারের মডেলের পাতা দেখুন আর নামটা এক জায়গায় রাখুন (একটা কনস্ট্যান্ট বা সেটিং), যাতে সহজে বদলানো যায়।
৪. কথোপকথন: মডেলের কোনো স্মৃতি নেই
একটা API কল স্টেটলেস: আগের কল মডেল মনে রাখে না। চ্যাট "মনে রাখে" শুধু এই কারণে যে প্রোগ্রাম প্রতিবার পুরো ইতিহাস পাঠায় — পাতা ৫-এর মেসেজ-ডিকশনারির সেই লিস্ট:
from openai import OpenAI
client = OpenAI()
history = []
def ask(question):
history.append({"role": "user", "content": question})
response = client.responses.create(model="gpt-5.5", input=history)
answer = response.output_text
history.append({"role": "assistant", "content": answer}) # মডেল নিজে কিছুই মনে রাখে না
return answer
print(ask("My name is Nadia. Suggest one Python project for a beginner."))
print(ask("What was my name?"))উদাহরণ আউটপুট:
Try a to-do list app that saves tasks to a JSON file, Nadia.
Your name is Nadia.এই কারণেই লম্বা চ্যাটে খরচ বেশি, আর একসময় কনটেক্সট উইন্ডো-র সীমায় পৌঁছায়: প্রতিটা ধাপ আগের সবকিছু আবার পাঠায়।
৫. যখন কিছু ভুল হয়
SDK নির্দিষ্ট এক্সেপশন তোলে, তাই পাতা ১১-এর শিক্ষা সরাসরি কাজে লাগানো যায়। OpenAI SDK সংযোগের এরর, 408, 409, 429 আর 5xx রেসপন্সে নিজেই এক্সপোনেনশিয়াল ব্যাকঅফসহ দুবার আবার চেষ্টা করে; max_retries সেই সংখ্যা বদলায়। এখানে key ভুল ছিল:
import openai
from openai import OpenAI
client = OpenAI(timeout=30, max_retries=3) # 429 আর 5xx-এ ব্যাকঅফসহ আবার চেষ্টা
try:
response = client.responses.create(model="gpt-5.5", input="Hello")
print(response.output_text)
except openai.AuthenticationError:
print("Check your API key.") # 401: আবার চেষ্টায় লাভ নেই
except openai.RateLimitError:
print("Still rate limited after retries — slow down or check your quota.")
except openai.APIConnectionError:
print("Could not reach the API — check the network.")
except openai.APIStatusError as error:
print("API error", error.status_code)Check your API key.চালু করার আগের চেকলিস্ট
- key আসে এনভায়রনমেন্ট থেকে, কোড থেকে কখনো নয়।
- টাইমআউট আর রিট্রাই ঠিক করা আছে; এররে ব্যবহারকারী একটা কাজের মেসেজ পায়।
- টোকেনের ব্যবহার লগ হয়, আর ড্যাশবোর্ডে খরচের সীমা ঠিক করা আছে।
- প্রোভাইডারের শর্ত আর আপনার নিজের প্রাইভেসি নীতি অনুমতি না দিলে ব্যবহারকারীর ব্যক্তিগত তথ্য পাঠানো হয় না।
- মডেলের আউটপুটকে অবিশ্বস্ত লেখা হিসেবে ধরা হয়: দেখানো, সংরক্ষণ বা সেই অনুযায়ী কাজের আগে যাচাই করা হয়।
নিজে চেষ্টা করুন
translate(text, language)লিখুন, যা মডেলকে লেখা অনুবাদ করতে বলে, আর ইংরেজি → বাংলায় চেষ্টা করুন।- ইনপুট আর আউটপুট টোকেন প্রিন্ট করুন, আর প্রোভাইডারের বর্তমান মূল্যতালিকা দিয়ে খরচ আন্দাজ করুন।
- কথোপকথনের উদাহরণটা এমন লুপে বদলান, যা ব্যবহারকারী
quitনা লেখা পর্যন্ত চ্যাট চালিয়ে যায়।