ডেভেলপারদের জন্য LLM API: চ্যাট কমপ্লিশন দিয়ে শুরু

AI2026-09-22TryQuickToolBox

আপনার মাথায় একটি দারুণ আইডিয়া আছে একটি AI-চালিত ফিচারের, কিন্তু যখন আপনি API ডকুমেন্টেশন পড়া শুরু করেন, তখন একগাদা জার্গনের দেয়ালে ধাক্কা খান: টোকেন, টেম্পারেচার, স্ট্রিমিং, সিস্টেম প্রম্পট। মনে হয় যেন একটা মেসেজ পাঠাতে হলে আরেকটা ডিগ্রি লাগবে। সুখবর হলো মূল ধারণাটা সহজ: আপনি মেসেজের একটি লিস্ট পাঠান, এবং মডেল একটি উত্তর ফেরত পাঠায়। বাকি সবকিছু টিউনিং। এই আর্টিকেলে আমরা ধাপে ধাপে দেখব কীভাবে একটি LLM চ্যাট কমপ্লিশন API আপনার অ্যাপ্লিকেশনে ইন্টিগ্রেট করবেন, এমন কোড সহ যা আপনি আজই ব্যবহার করতে পারবেন।

চ্যাট কমপ্লিশন API কী?

মূলত, একটি চ্যাট কমপ্লিশন API ইনপুট হিসেবে একটি কথোপকথনের ইতিহাস নেয় এবং কথোপকথনের পরবর্তী মেসেজ ফেরত দেয়। ইতিহাসটি হলো মেসেজ অবজেক্টের একটি অ্যারে, যার প্রতিটিতে একটি role এবং content থাকে। রোল সাধারণত system, user, এবং assistant হয়। সিস্টেম মেসেজ অ্যাসিস্ট্যান্টের আচরণ নির্ধারণ করে, ইউজার মেসেজ হলো ব্যবহারকারী যা টাইপ করেছেন, এবং অ্যাসিস্ট্যান্ট মেসেজ হলো মডেল আগে যা উত্তর দিয়েছিল। সম্পূর্ণ ইতিহাস পাঠিয়ে আপনি মডেলকে একটি সুসংগত উত্তর তৈরি করার কনটেক্সট দেন।

বেশিরভাগ প্রোভাইডার (OpenAI, Anthropic, Google, এবং ওপেন-সোর্স বিকল্পগুলো) একই ধরনের প্যাটার্ন অনুসরণ করে, যদিও সঠিক এন্ডপয়েন্ট এবং পেলোড ভিন্ন হতে পারে। একবার আপনি একটি বুঝে গেলে, অন্যগুলোতে দ্রুত মানিয়ে নিতে পারবেন।

ধাপে ধাপে: আপনার প্রথম API কল

চলুন Python এবং OpenAI SDK ব্যবহার করে একটি ন্যূনতম উদাহরণ দেখি। আপনি pip install openai দিয়ে এটি ইনস্টল করতে পারেন। আপনার API কী কোডের বাইরে রাখতে এটি একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করুন।

import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain what an API is in one sentence."}
    ]
)

print(response.choices[0].message.content)

ব্যস। রেসপন্স অবজেক্টে চয়েসের একটি লিস্ট থাকে; সাধারণত আপনি প্রথমটি নেন। মেসেজ কনটেন্ট হলো মডেলের উত্তর। টোকেন খরচ ট্র্যাক করতে আপনি ব্যবহারের পরিসংখ্যানও দেখতে পারেন।

যে মূল প্যারামিটারগুলো টিউন করা উচিত

মেসেজ ছাড়াও, কয়েকটি প্যারামিটার মডেলের আউটপুট নিয়ন্ত্রণ করে:

ভালো UX-এর জন্য স্ট্রিমিং রেসপন্স

সম্পূর্ণ উত্তরের জন্য অপেক্ষা করা ধীর মনে হতে পারে, বিশেষ করে দীর্ঘ উত্তরের ক্ষেত্রে। স্ট্রিমিং আপনাকে টেক্সট আসার সাথে সাথে দেখাতে দেয়। Python-এ একটি স্ট্রিম কীভাবে হ্যান্ডল করবেন:

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Tell me a story."}],
    stream=True
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

প্রতিটি চাঙ্কে রেসপন্সের একটি অংশ সহ একটি ডেল্টা থাকে। সম্পূর্ণ মেসেজ তৈরি করতে আপনি এই অংশগুলো জমা করেন। একটি ওয়েব অ্যাপে, আপনি Server-Sent Events (SSE) বা WebSockets ব্যবহার করে এই চাঙ্কগুলো ব্রাউজারে ফরওয়ার্ড করতে পারেন।

ত্রুটি এবং রেট লিমিট হ্যান্ডলিং

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

সবসময় API কলগুলো try/except ব্লকে মুড়ে দিন এবং ব্যর্থতা লগ করুন। প্রোডাকশনের জন্য, রিট্রাইয়ের জন্য tenacity-এর মতো একটি লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।

খরচ এবং টোকেন ম্যানেজমেন্ট

টোকেন হলো LLM API-এর মুদ্রা। ইনপুট এবং আউটপুট উভয় টোকেনই আপনার বিলে গণনা করা হয়। খরচ অনুমানযোগ্য রাখতে:

প্রোভাইডারের ড্যাশবোর্ডের মাধ্যমে বা প্রতিটি রেসপন্স থেকে টোকেন সংখ্যা লগ করে ব্যবহার মনিটর করুন।

সিকিউরিটি এবং প্রাইভেসি বিবেচনা

যখন আপনি একটি LLM API-তে ব্যবহারকারীর ডেটা পাঠান, তখন আপনি একটি তৃতীয় পক্ষের উপর সেই ডেটার বিশ্বাস রাখছেন। প্রোভাইডারের ডেটা রিটেনশন নীতি পর্যালোচনা করুন। পাসওয়ার্ড বা ব্যক্তিগত শনাক্তকারীর মতো সংবেদনশীল তথ্য পাঠানো এড়িয়ে চলুন। যদি পাঠাতেই হয়, তাহলে সেলফ-হোস্টেড মডেল বা শক্তিশালী প্রাইভেসি গ্যারান্টিসম্পন্ন প্রোভাইডার বিবেচনা করুন। এছাড়াও, ক্লায়েন্ট-সাইড কোডে কখনো আপনার API কী প্রকাশ করবেন না; সবসময় আপনার ব্যাকএন্ডের মাধ্যমে রিকোয়েস্ট প্রক্সি করুন।

সাধারণ জিজ্ঞাসা

চ্যাট কমপ্লিশন এবং সাধারণ কমপ্লিশনের মধ্যে পার্থক্য কী?

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

সঠিক মডেল কীভাবে বেছে নেব?

প্রোটোটাইপিংয়ের জন্য একটি ছোট, সস্তা মডেল দিয়ে শুরু করুন। যদি আপনার আরও ভালো রিজনিং বা দীর্ঘ কনটেক্সট প্রয়োজন হয়, তাহলে একটি বড় মডেলে যান। সেরা খরচ-পারফরম্যান্স ট্রেড-অফ খুঁজে পেতে আপনার নির্দিষ্ট কাজে উভয়ই পরীক্ষা করুন।

একটি অ্যাপে একাধিক LLM প্রোভাইডার ব্যবহার করতে পারি?

হ্যাঁ। অনেক ডেভেলপার একটি ইন্টারফেসের পিছনে API কলগুলো অ্যাবস্ট্রাক্ট করেন এবং খরচ, লেটেন্সি বা ফিচারের উপর ভিত্তি করে প্রোভাইডার পরিবর্তন করেন। LiteLLM বা LangChain-এর মতো লাইব্রেরি বিভিন্ন API একীভূত করতে সাহায্য করতে পারে।

পরবর্তী ধাপ

এখন যেহেতু আপনি একটি মৌলিক কল করতে পারেন, মডেলের আচরণ নিয়ন্ত্রণ করতে সিস্টেম প্রম্পট নিয়ে পরীক্ষা করুন। ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে স্ট্রিমিং চেষ্টা করুন। এবং সবসময় টোকেন ব্যবহারের দিকে নজর রাখুন। যেহেতু আপনি তৈরি করছেন, পরবর্তী প্রসেসিংয়ের জন্য মডেল থেকে JSON রেসপন্স ফরম্যাট করার প্রয়োজন হতে পারে। সেজন্য, একটি JSON formatter আউটপুট দ্রুত যাচাই এবং সুন্দরভাবে প্রিন্ট করতে সাহায্য করতে পারে।