আপনার অ্যাপে OpenAI API কীভাবে যুক্ত করবেন
OpenAI API যুক্ত করতে একটি OpenAI প্রজেক্টে একটি API কী তৈরি করুন, সেটি OPENAI_API_KEY নামে একটি সার্ভার-সাইড সিক্রেট হিসেবে সংরক্ষণ করুন, এবং আপনার নিজের সার্ভারের একটি রুট থেকে OpenAI-এর অফিসিয়াল SDK দিয়ে API কল করুন — কখনোই ব্রাউজার কোড থেকে নয়। ২০২৬ সালের সেপ্টেম্বর পর্যন্ত OpenAI-এর কুইকস্টার্ট নতুন প্রজেক্টের জন্য Responses API-কে শুরুর জায়গা হিসেবে দেখায়। লাইভ যাওয়ার আগে একটি খরচের সীমা সেট করুন, উত্তরের দৈর্ঘ্য সীমিত করুন, প্রতি ব্যবহারকারী কত ঘনঘন ফিচারটি কল করতে পারবেন তা সীমিত করুন, এবং রেট-লিমিট ত্রুটি রিট্রাইয়ের মাধ্যমে সামলান।
এই গাইডে আছে সেটআপ, অনুরোধের প্রবাহ, একটি AI বিল্ডারের জন্য প্রম্পট, এবং যে ভুলগুলো কী ফাঁস করে বা টাকা পুড়িয়ে দেয়। OpenAI-এর তথ্য ২০২৬ সালের সেপ্টেম্বর পর্যন্ত তাদের অফিসিয়াল ডকুমেন্টেশন থেকে নেওয়া। সাধারণ ধারণাগুলো (টোকেন, কনটেক্সট উইন্ডো, দাম) আগে জানতে দেখুন কীভাবে LLM API ব্যবহার করবেন।
এটি দিয়ে কী বানানো যায়
- আপনার অ্যাপের ভেতরে একটি চ্যাট সহকারী (কীভাবে AI চ্যাটবট অ্যাপ বানাবেন)
- "সারসংক্ষেপ করুন", "পুনর্লিখন করুন" বা "উত্তরের খসড়া লিখুন" বাটন
- মুক্ত টেক্সট থেকে কাঠামোবদ্ধ ডেটা বের করা: ইমেইলকে অর্ডারে রূপান্তর, সাপোর্ট টিকেটে ট্যাগ দেওয়া
- আপনার নিজের কনটেন্টের ওপর সার্চ ও প্রশ্নোত্তর
- ইমেজ তৈরি, স্পিচ ও অন্যান্য মিডিয়া ফিচার, উপলব্ধ মডেলের ওপর নির্ভর করে
আরও ধারণা আছে আপনার অ্যাপে AI ফিচার কীভাবে যোগ করবেন-এ।
আপনার OpenAI অ্যাকাউন্ট সেটআপ
- OpenAI প্ল্যাটফর্মে একটি অ্যাকাউন্ট ও একটি প্রজেক্ট তৈরি করুন। OpenAI-এর প্রোডাকশন সেরা অনুশীলন সুপারিশ করে স্টেজিং ও প্রোডাকশনের জন্য আলাদা প্রজেক্ট রাখতে, যাতে প্রতিটির নিজস্ব কী ও সীমা থাকে।
- একটি প্রজেক্ট API কী তৈরি করুন। OpenAI মেয়াদ শেষের তারিখ সেট করতে এবং নিয়মিত কী বদলাতে সুপারিশ করে।
- লিমিট পাতায় খরচের সতর্কতা ও একটি কঠোর খরচের সীমা সেট করুন। OpenAI-এর গাইড বলে, সতর্কতা নির্দিষ্ট পরিমাণ অতিক্রম করলে জানায়, আর কঠোর সীমা মাসিক ক্যাপ কার্যকর করে।
- বিলিং যোগ করুন। OpenAI-এর রেট-লিমিট ডকুমেন্ট ব্যবহারের স্তরের কথা বলে: বেশি খরচ করলে সময়ের সঙ্গে আপনার সীমা স্বয়ংক্রিয়ভাবে বাড়ে।
অনুরোধের প্রবাহ
ব্রাউজার -> আপনার সার্ভার রুট -> OpenAI API
<- (স্ট্রিম করা) উত্তর <-
- ব্যবহারকারী একটি বাটনে ক্লিক করেন বা বার্তা পাঠান।
- ব্রাউজার আপনার রুটে কল করে, যেমন
POST /api/summarise। - আপনার সার্ভার যাচাই করে ব্যবহারকারী লগইন করা এবং ফিচারটি ব্যবহারের অনুমতি আছে।
- সার্ভার অনুরোধ তৈরি করে: নির্দেশনা, ব্যবহারকারীর ইনপুট, এবং কাজের জন্য প্রয়োজনীয় ডেটাবেসের তথ্য।
- এটি পরিবেশ থেকে নেওয়া কী দিয়ে OpenAI-তে কল করে। OpenAI-এর SDK স্বয়ংক্রিয়ভাবে
OPENAI_API_KEYপড়ে। - এটি উত্তর স্ট্রিম করে বা ফেরত দেয়, এবং টোকেন ব্যবহার লগ করে।
OpenAI-এর অফিসিয়াল SDK প্যাকেজের নাম JavaScript/TypeScript (npm) ও Python (pip) দুটোতেই openai।
মডেল বেছে নেওয়া
OpenAI বিভিন্ন দাম ও গতির কয়েকটি মডেল দেয়, এবং লাইন-আপ প্রায়ই বদলায়। একটি ছোট, সস্তা মডেল দিয়ে শুরু করুন, বাস্তব উদাহরণে মান মাপুন, এবং শুধু প্রয়োজন হলে বড় মডেলে যান। মডেলের নাম একটি কনফিগ মান বা সিক্রেটে রাখুন, যাতে কোড না লিখে বদলানো যায়। বর্তমান রেটের জন্য OpenAI-এর প্রাইসিং পাতা দেখুন।
বিকল্প ও ট্রেড-অফ
| সিদ্ধান্ত | সহজ পছন্দ | আরও এগোলে যা করবেন |
|---|---|---|
| স্ট্রিমিং | পুরো উত্তর ফেরত দিন | চ্যাট ও দীর্ঘ উত্তরের জন্য স্ট্রিম করুন; ব্যবহারকারী সঙ্গে সঙ্গে টেক্সট দেখেন |
| কথোপকথনের স্মৃতি | প্রতিবার সাম্প্রতিক বার্তাগুলো পাঠান | চ্যাট লম্বা হলে পুরোনো বার্তা সারসংক্ষেপ করুন |
| আউটপুট ফরম্যাট | সাধারণ টেক্সট | আপনার কোডকে ফিল্ড পড়তে হলে কাঠামোবদ্ধ JSON চান |
| আপনার নিজের ডেটা | অনুরোধে প্রাসঙ্গিক রেকর্ড অন্তর্ভুক্ত করা | যখন অনেক বেশি হয়, তখন আপনার কনটেন্টে সার্চ যোগ করুন (RAG কী) |
| জরুরি নয় এমন বড় কাজ | আইটেমের ওপর লুপ | ফলাফল অপেক্ষা করতে পারলে কম খরচের জন্য OpenAI-এর ব্যাচ বিকল্প |
আপনার AI বিল্ডারকে দেওয়ার প্রম্পট
প্রথম ফিচার:
টিকেট পেজে একটি "Summarise" বাটন যোগ করুন। এটি একটি সার্ভার রুট POST /api/summarise-কে কল করে, যা যাচাই করে ব্যবহারকারী লগইন করা, টিকেট লোড করে, তারপর অফিসিয়াল openai SDK ও সিক্রেট OPENAI_API_KEY ব্যবহার করে OpenAI Responses API কল করে। মডেলের নাম পড়ুন সিক্রেট OPENAI_MODEL থেকে। নির্দেশনা: "৩টি বুলেট পয়েন্টে সারসংক্ষেপ করুন, তারপর একটি সংক্ষিপ্ত উত্তরের পরামর্শ দিন। অর্ডার নম্বর বানাবেন না।" আউটপুটের দৈর্ঘ্য সীমিত করুন, উত্তর পেজে স্ট্রিম করুন, এবং কখনো কী ব্রাউজারে পাঠাবেন না।
গার্ডরেল:
প্রতি ব্যবহারকারীকে ঘণ্টায় ৩০টি AI অনুরোধে সীমাবদ্ধ করুন, ডেটাবেসে সংরক্ষণ করে। প্রতি অনুরোধে ইনপুট ও আউটপুট টোকেন ব্যবহারকারী ID ও ফিচারের নামসহ লগ করুন। OpenAI 429 দিলে Retry-After হেডার মেনে চলুন এবং জিটারসহ এক্সপোনেনশিয়াল ব্যাকঅফে সর্বোচ্চ ৩ বার আবার চেষ্টা করুন; তারপরও ব্যর্থ হলে দেখান "AI এখন ব্যস্ত, এক মিনিট পরে আবার চেষ্টা করুন।" অন্য যেকোনো ব্যর্থতায় একটি বন্ধুত্বপূর্ণ ত্রুটি দেখান এবং বাকি পেজ চালু রাখুন।
ত্রুটি ও সীমা সামলানো
OpenAI একাধিক উপায়ে রেট লিমিট মাপে, যার মধ্যে আছে প্রতি মিনিটে অনুরোধ ও প্রতি মিনিটে টোকেন, এবং যেটি আগে শেষ হয় সেটিতেই আপনি আটকে যান। কোনোটি অতিক্রম করলে API একটি 429 দেয় সঙ্গে একটি Retry-After হেডার। OpenAI-এর ডকুমেন্ট বলে এই মানটিকে ন্যূনতম সময় ধরতে হবে এবং একটু র্যান্ডম বিলম্ব যোগ করতে হবে, যাতে ক্লায়েন্টরা একসঙ্গে আবার চেষ্টা না করে।
এর পাশাপাশি এগুলোর জন্যও প্রস্তুত থাকুন:
- দীর্ঘ জেনারেশনে টাইমআউট। স্ট্রিমিং সাহায্য করে, তেমনি একটি যুক্তিসঙ্গত আউটপুট সীমাও।
- প্রোভাইডারের আউটেজ। AI ফিচারটি যেন পেজ না ভেঙে সুন্দরভাবে ব্যর্থ হয়।
- খারাপ আউটপুট। সংরক্ষণের আগে কাঠামোবদ্ধ আউটপুট যাচাই করুন, এবং আপনার কোডে যাচাই ছাড়া মডেলের আউটপুট কোনো স্পর্শকাতর কাজ ট্রিগার করতে দেবেন না।
সাধারণ ভুল
- ফ্রন্টএন্ডে বা রিপোজিটরিতে কী। ব্রাউজার কোড প্রকাশ্য, আর ফাঁস হওয়া কী কয়েক মিনিটের মধ্যে অপব্যবহার হতে পারে। দেখুন API কী নিরাপদ রাখার উপায়।
- কোনো খরচের সীমা না থাকা। একটি লুপ বা অপব্যবহারকারী ব্যবহারকারী দ্রুত বড় বিল তুলতে পারে।
- ব্যবহারকারীপ্রতি সীমা না থাকা। আপনার প্রোভাইডারের সীমা আপনার ওয়ালেট রক্ষা করে, অন্য ব্যবহারকারীদের নয়।
- নিরাপত্তার জন্য প্রম্পটের ওপর ভরসা। ব্যবহারকারী লিখতে পারেন "আগের নির্দেশনা উপেক্ষা করো"। অনুমতি থাকে সার্ভার কোডে।
- যা দরকার তার চেয়ে বেশি পাঠানো। পুরো নথি ও দীর্ঘ ইতিহাস খরচ বাড়ায়। কাজের জন্য যা প্রয়োজন শুধু সেটুকু পাঠান।
- মডেলের নাম হার্ড-কোড করা। মডেল আপডেট ও অবসর হয়; এটিকে একটি সেটিং বানান।
- ব্যক্তিগত ডেটা না ভেবে পাঠানো। OpenAI-এর ডেটা-ব্যবহারের শর্ত পড়ুন এবং ফিচারের যা দরকার শুধু সেটুকু পাঠান।
চেকলিস্ট
- টেস্টিং ও প্রোডাকশনের জন্য আলাদা OpenAI প্রজেক্ট (বা কী)
- কী সার্ভার-সাইড সিক্রেট হিসেবে সংরক্ষিত, কখনো ব্রাউজার কোড বা রিপোতে নয়
- খরচের সতর্কতা ও কঠোর খরচের সীমা সেট
- সব কল আপনার সার্ভারের মধ্য দিয়ে যায় এবং ব্যবহারকারীর অনুমতি যাচাই করে
- আউটপুটের দৈর্ঘ্য সীমিত; মডেলের নাম কনফিগারযোগ্য
- আপনার অ্যাপে ব্যবহারকারীপ্রতি রেট লিমিট
- Retry-After, ব্যাকঅফ ও জিটারসহ 429 সামলানো
- বন্ধুত্বপূর্ণ ত্রুটি অবস্থা; AI ছাড়াও পেজ কাজ করে
- প্রতি ফিচারের টোকেন ব্যবহার লগ করা
- লম্বা, খালি ও শত্রুভাবাপন্ন ইনপুটে পরীক্ষা করা
Mythex-এ OpenAI API ব্যবহার
Mythex-এ আপনার বানানো অ্যাপের AI ফিচার আপনার নিজের OpenAI কী ব্যবহার করে, যার বিল আপনার OpenAI অ্যাকাউন্টে যায়, Mythex-এর বিল্ড ক্রেডিটে নয়। /secrets, প্রোজেক্ট সেটিংস বা এজেন্ট কী প্রয়োজন হলে যে সিক্রেট কার্ড দেখায় সেখান থেকে OPENAI_API_KEY-কে প্রোজেক্ট সিক্রেট হিসেবে যোগ করুন, তারপর উপরের মতো প্রম্পট দিয়ে ফিচারটি বর্ণনা করুন। প্রকাশিত অ্যাপে সিক্রেট বদলালে নতুনটি ধরতে আবার প্রকাশ করুন। ডকসের রেসিপি নিজের API কী দিয়ে অ্যাপে AI ফিচার যোগ করুন-এ একটি শুরুর প্রম্পট আছে, আর চ্যাটে সিক্রেট কার্ড ব্যাখ্যা করে। প্রোভাইডার তুলনা করছেন? দেখুন কীভাবে Claude API যুক্ত করবেন।
প্রশ্নোত্তর
একটি নতুন অ্যাপের জন্য কোন OpenAI API ব্যবহার করা উচিত?
২০২৬ সালের সেপ্টেম্বর পর্যন্ত OpenAI-এর কুইকস্টার্ট নতুন প্রজেক্টের জন্য Responses API-কে শুরুর জায়গা হিসেবে উপস্থাপন করে, অফিসিয়াল SDK-তে client.responses.create() ব্যবহারের উদাহরণসহ। শুরু করার আগে বর্তমান সুপারিশের জন্য OpenAI-এর ডকুমেন্টেশন দেখুন।
ব্রাউজার থেকে কি OpenAI API কল করা যায়?
আপনার সিক্রেট কী দিয়ে না। যে কেউ ব্রাউজারের কোড পড়ে কী নিয়ে আপনার বিল বাড়াতে পারে। ব্রাউজার আপনার নিজের সার্ভার রুটে কল করবে, আর সার্ভার পরিবেশ ভেরিয়েবলে রাখা কী দিয়ে OpenAI-কে কল করবে।
OpenAI API-র খরচ বেশি হওয়া কীভাবে আটকাব?
OpenAI-এর প্রোডাকশন গাইড সুপারিশ করে লিমিট পাতায় খরচের সতর্কতা ও একটি কঠোর মাসিক খরচের সীমা সেট করতে। আপনার অ্যাপে উত্তরের দৈর্ঘ্য সীমিত করুন, ব্যবহারকারীপ্রতি অনুরোধ সীমিত করুন, এবং টোকেন ব্যবহার লগ করুন যাতে বোঝা যায় কোন ফিচার সবচেয়ে বেশি খরচ করছে।
OpenAI থেকে 429 ত্রুটির মানে কী?
এর মানে আপনি রেট লিমিটে পৌঁছেছেন। OpenAI-এর রেট-লিমিট ডকুমেন্ট বলে উত্তরে Retry-After হেডার থাকে; অন্তত ততক্ষণ অপেক্ষা করুন, একটু র্যান্ডম বিলম্ব যোগ করুন, এবং এক্সপোনেনশিয়াল ব্যাকঅফ দিয়ে আবার চেষ্টা করুন।