ChatGPT এর সাথে কাজ করার জন্য একটি অ্যাপ্লিকেশন তৈরি করার কথা বিবেচনা করুন। এর কাজ হবে Telegram মাধ্যমে ভয়েস বার্তাগুলি গ্রহণ করা, সেগুলিকে পাঠ্যে রূপান্তর করা, সেগুলিকে ChatGPT এ স্থানান্তর করা এবং Telegram একটি প্রতিক্রিয়া ফেরত পাঠানো। নির্মাণ প্রক্রিয়া চলাকালীন, আপনাকে নিম্নলিখিত ধাপগুলি অতিক্রম করতে হবে:
- Telegram এবং এর মৌলিক সেটআপের জন্য একটি বট তৈরি করা।
- একটি ভয়েস বার্তা সহ একটি ফাইল গ্রহণ করা ( Telegram .oga ফর্ম্যাট ব্যবহার করে)।
- oga থেকে mp3 ফাইলে রূপান্তর করুন।
- টেক্সটে রূপান্তরের জন্য Whisper পরিষেবাতে mp3 ফাইল স্থানান্তর করা হচ্ছে।
- ChatGPT এ একটি প্রাপ্ত পাঠ্য পাঠানো হচ্ছে।
- Telegram একজন ব্যবহারকারীকে ChatGPT থেকে একটি প্রতিক্রিয়া পাঠানো।
Telegram এবং এর মৌলিক সেটআপের জন্য একটি বট তৈরি করা
এটি সব একটি বট নিবন্ধন খুব সত্য সঙ্গে শুরু হয়. এবং এর জন্য, Telegram তার নিজস্ব বিশেষ বট - BotFather ব্যবহার করে। আপনাকে তাকে লিখতে হবে এবং সহজ ক্রমিক পদক্ষেপের মধ্য দিয়ে যেতে হবে।
ফলস্বরূপ, আপনার বটের একটি লিঙ্ক এবং এর API-তে অনুরোধের জন্য একটি টোকেন থাকা উচিত।
এখন আপনি AppMaster এ বট সেট আপ করতে যেতে পারেন। এটি করার সবচেয়ে সহজ উপায় হল উপযুক্ত মডিউল ইনস্টল করা। আপনাকে শুধু মডিউলের তালিকায় এটি নির্বাচন করতে হবে এবং সেটিংসে আপনার API টোকেন নির্দিষ্ট করতে হবে।
প্রয়োজনীয় মডেলগুলি আপনার প্রকল্পে স্বয়ংক্রিয়ভাবে তৈরি হবে, Telegram সাথে কাজ করার জন্য ব্লকগুলি উপস্থিত হবে, পাশাপাশি বেসিক টেলিগ্রাম ব্যবসায়িক প্রক্রিয়া Telegram: Echo । এটি সাবধানে বিবেচনা করা এবং কাজের নীতি বোঝা মূল্য।
ইনপুটে, এটি Telegram থেকে একটি বার্তা পায় ( Message মডেল)। এতে প্রেরিত বার্তার পাঠ্য রয়েছে ( text ), সেইসাথে chat মডেল যা থেকে আপনি প্রেরকের শনাক্তকারী ( id ) পেতে পারেন। সর্বশেষ ব্লক Telegram: Send Message প্রাপ্ত বার্তা প্রেরকের কাছে ফেরত পাঠায়, তবে বটের পক্ষে।
আপনি বটটির প্রাথমিক পরীক্ষা এবং এর সাথে যোগাযোগের জন্য এই ব্যবসায়িক প্রক্রিয়াটি ব্যবহার করতে পারেন। এটি করার জন্য, আপনাকে একটি শেষ পয়েন্ট তৈরি করতে হবে যা তথ্য পাবে এবং একটি ব্যবসায়িক প্রক্রিয়া শুরু করবে।
এটি তৈরি করার সময়, Middleware Token Auth অক্ষম করা গুরুত্বপূর্ণ। অনুমোদন ছাড়াই ব্যবহারের জন্য শেষ পয়েন্ট অবশ্যই খোলা থাকতে হবে।
Telegram বট পরিচালনার নীতিটি বেশ সহজ - এটিতে পাঠানো সমস্ত বার্তাগুলি একটি বিশেষ ওয়েবহুকে যায়, যা স্বয়ংক্রিয়ভাবে সেগুলিকে আরও স্থানান্তর করতে পারে এবং পরবর্তী ক্রিয়াকলাপের জন্য আপনার পছন্দের শেষ পয়েন্টে পাঠাতে পারে।
তদনুসারে, শেষ ধাপটি বটটি সক্রিয় করার জন্য রয়ে গেছে - আপনাকে Telegram এই শেষ পয়েন্টটি নিবন্ধন করতে হবে এবং নির্দেশ করতে হবে যে এই বটটি এর সাথে যুক্ত হওয়া উচিত। এর জন্য পূর্ণ এন্ডপয়েন্ট URL সহ একটি POST -request পাঠাতে হবে এবং ঠিকানায় {Bot API Token} এর পরিবর্তে আপনার বট টোকেন নির্দেশ করতে হবে
https://api.telegram.org/bot{Bot API Token}/setWebhook
আপনি যদি প্রতিক্রিয়াতে এই জাতীয় বার্তা পান তবে সবকিছু সঠিকভাবে করা হয়েছিল।
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
বট কাজ করার জন্য প্রস্তুত, আপনি তাকে একটি বার্তা পাঠাতে পারেন এবং এটি ফেরত পেতে পারেন।
একটি ভয়েস বার্তা সহ একটি ফাইল গ্রহণ করা হচ্ছে
Telegram মডিউলটি মূলত পাঠ্য বার্তাগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। এবং আমাদের কাজ একটি ভয়েস বার্তা সহ একটি ফাইল পেতে হয়. AppMaster সাহায্যে আপনি সহজেই এই সমস্যার সমাধান করতে পারেন। প্রথমত, বার্তাটির গঠন বিশ্লেষণ করতে আমরা সাধারণত Telegram থেকে যা পাই তা বিশ্লেষণ করতে হবে। Get Request Body ব্লক এর জন্য ডিজাইন করা হয়েছে। এটি অনুরোধের কাঠামোটি আগে থেকেই নির্দিষ্ট করার প্রয়োজনীয়তা দূর করে এবং আপনাকে সম্পূর্ণ অনুরোধটি গ্রহণ করার অনুমতি দেয়, এর বিষয়বস্তু নির্বিশেষে। এই ব্লকটি বাইটের একটি সেট হিসাবে ক্যোয়ারী ফলাফল প্রদান করে, এবং আপনি ফলাফলটিকে মানব-পাঠযোগ্য আকারে উপস্থাপন করতে To String ব্লক ব্যবহার করতে পারেন, সেইসাথে আরও বিশ্লেষণের জন্য এটিকে লগগুলিতে সংরক্ষণ করতে পারেন ( Write to Log )৷
আমরা সম্পূর্ণ অনুরোধ থেকে দুটি পরামিতি আগ্রহী:
Sender ID - অনুরোধে "id":300493858
File ID - "file_id":"AwACAgIAAxkBAAMzZBk6QRvO-OYWsWUC-Bu1UXDM2FwAAkktAAKTZclIWTSkfTTw8wYvBA"
আপনি আপনার নিজস্ব মডেল তৈরি করতে পারেন যা অনুরোধের সাথে মেলে এবং প্রয়োজনীয় ক্ষেত্রগুলি পেতে এটি ব্যবহার করতে পারেন। কিন্তু একটি রেগুলার এক্সপ্রেশন ( Regex ) তৈরি করা এবং এটি ব্যবহার করা দ্রুত হবে। এটি করার জন্য, String Match Regex ব্লক এক্সপ্রেশনটিকে ইনপুট হিসাবে নেয়, সেইসাথে যে স্ট্রিংটিতে প্রদত্ত এক্সপ্রেশনের সাথে মিলটি চেক করা হবে।
প্রথম ক্ষেত্রে, অভিব্যক্তিটি "id":"\d+
ফলস্বরূপ, আমরা "id":300493858 স্ট্রিং পাই, যেখান থেকে আমাদের Replace String ব্লক ব্যবহার করে অতিরিক্ত ( "id":) অপসারণ করতে হবে এবং শুধুমাত্র শনাক্তকারীকে ছেড়ে দিতে হবে।
দ্বিতীয় ক্ষেত্রে, নীতিটি ঠিক একই, কিন্তু একটি সামান্য জটিল অভিব্যক্তি ব্যবহার করা হয়: "file_id":"[^"]+
এখন আমাদের কাছে প্রেরক আইডি এবং ফাইল আইডি রয়েছে এবং আমরা ফাইলটি নিজেই পেতে এটি ব্যবহার করতে পারি। এটি করার জন্য, আপনাকে Telegram API এ যেতে হবে। বটের শেষ পয়েন্ট নিবন্ধন করার সময় এটি ইতিমধ্যেই করা হয়েছে। এখন আপনাকে ফাইলটি পাওয়ার জন্য অনুরূপ অনুরোধ করতে হবে। রিকোয়েস্ট ইউআরএলে {File ID} অবশ্যই প্রাপ্ত ফাইল আইডি দিয়ে প্রতিস্থাপন করতে হবে।
https://api.telegram.org/bot{Bot API Token}/setWebhook/getFile?file_id={File ID}
একটি অনুরোধ পাঠাতে এবং তার ফলাফল পেতে, আমরা HTTP Request ব্লক ব্যবহার করি, এটির প্যারামিটার হিসাবে URL এবং Method = GET উল্লেখ করে।
প্রাপ্ত প্রতিক্রিয়া থেকে, আপনি ফাইলটির আপেক্ষিক পথটি খুঁজে পেতে পারেন, এটি " file_path " প্যারামিটারে পাস করা হয়েছে। তদনুসারে, পরবর্তী রেগুলার এক্সপ্রেশন ( "file_path":"[^"]+ ) ব্যবহার করে আপনি পছন্দসই মান বের করতে পারেন এবং “ https://api.telegram.org/file/bot{Bot API Token}/ ” এর সাথে সংযোগ করতে পারেন ফাইলের সম্পূর্ণ লিঙ্ক পান।
OGA থেকে MP3 ফাইলে রূপান্তর করুন
ফাইলটি গৃহীত হয়েছে, কিন্তু বাধা হল যে Whisper পরিষেবা OGA ফর্ম্যাটের সাথে কাজ করা সমর্থন করে না। আপনাকে উপযুক্ত ফর্ম্যাটে রূপান্তর করতে হবে।
একটি উদাহরণ হিসাবে, Zamzar পরিষেবা ব্যবহার করা হয় (এর বিনামূল্যের পরিকল্পনা প্রতি মাসে 100টি রূপান্তর করার ক্ষমতা সমর্থন করে) এবং MP3 তে রূপান্তর করা হয়।
আপনি বিশদ বিবরণের জন্য এর ডকুমেন্টেশন উল্লেখ করতে পারেন বা অন্য অনুরূপ পরিষেবা ব্যবহার করতে পারেন। আমরা এটির সাথে কাজটি বিশদভাবে বিশ্লেষণ করব না এবং আমরা শুধুমাত্র সেই অংশটি বিবেচনা করব যা সরাসরি AppMaster বাস্তবায়নের সাথে সম্পর্কিত।
প্রথমত, অনুরোধের সঠিক প্রমাণীকরণ ডেটা প্রয়োজন। সেগুলি অবশ্যই Basic Authentication বিন্যাসে প্রদান করতে হবে। এটি করার জন্য, আপনাকে অনুরোধে মান সহ একটি শিরোনাম পাস করতে হবে:
Key = 'Authorization'
Value = 'Basic '+ ইউজার আইডি এবং পাসওয়ার্ড বেস base64 ফরম্যাটে “:” দ্বারা আলাদা করা হয়েছে
পরিষেবার সাথে নিবন্ধন করার সময় প্রাপ্ত API কী হল ব্যবহারকারী আইডি। আপনাকে এটিতে ":" যোগ করতে হবে এবং To Base64 ব্লক ব্যবহার করে Base64 64 ফরম্যাটে এনকোড করতে হবে। ফলাফলটিকে একটি হেডারে পরিণত করা দরকার ( Make Key-Value (String) )।
পরবর্তী ধাপ হল ডাটাবেস ডিজাইনারের প্রশ্নের জন্য একটি মডেল তৈরি করা। অনুরোধটি অবশ্যই Multipart Form ফরম্যাটে পাঠাতে হবে, যথাক্রমে, এই অনুরোধের ফর্মের একটি মডেল প্রস্তুত করা প্রয়োজন। আমাদের উদাহরণে, মডেলটি String ধরণের তিনটি ক্ষেত্র নিয়ে গঠিত:
- source_file - সোর্স ফাইলের সম্পূর্ণ পথ (এটি পূর্ববর্তী ধাপে শেখা হয়েছিল)।
- source_format - সোর্স ফাইল ফরম্যাট, এই উদাহরণে, এটি একটি নির্দিষ্ট মান " ogg "।
- target_format - রূপান্তরের জন্য লক্ষ্য বিন্যাস। আপনি Whisper দ্বারা সমর্থিত যে কোনো বিন্যাস চয়ন করতে পারেন। উদাহরণ হিসেবে " mp3 " ব্যবহার করা যাক।
ব্যবসায়িক প্রক্রিয়া সম্পাদকে, আপনাকে মডেল ডেটা পূরণ করতে Make ব্লক ব্যবহার করতে হবে এবং HTTP Request ব্লক ব্যবহার করে https://sandbox.zamzar.com/v1/jobs/ এ POST অনুরোধ হিসাবে পাঠাতে হবে (নিশ্চিত করুন Serialize request body = Multipart Form নির্দিষ্ট করুন)।
এটি লক্ষ করা উচিত যে এই অনুরোধটি রূপান্তরিত ফাইলটি ফেরত দেয় না তবে এটি রূপান্তর করার জন্য একটি টাস্ক তৈরি করে। ফলাফলের জন্য আপনাকে আলাদাভাবে আবেদন করতে হবে; এর জন্য আপনার তৈরি করা টাস্কের আইডি প্রয়োজন। এই আইডিটি অবশ্যই অনুরোধের প্রতিক্রিয়ার মূল অংশ থেকে প্রাপ্ত করা উচিত এবং এর জন্য, ইতিমধ্যে কাজ করা প্রক্রিয়াটি নিয়মিত এক্সপ্রেশন ব্যবহার করে এবং আইডি মান বের করে করা উচিত।
রূপান্তরের ফলাফল আলাদাভাবে প্রয়োগ করতে হবে। এর জন্য আরও দুটি অনুরোধের প্রয়োজন হবে। প্রথমটি হল ফলাফল প্রস্তুত কিনা তা খুঁজে বের করা। দ্বিতীয়টি হল সমাপ্ত ফাইলটি তোলা। একই সময়ে, আমরা প্রস্তুতির সঠিক সময় জানি না, তাই আমরা একটি লুপ সংগঠিত করতে পারি যা নির্দিষ্ট বিরতিতে প্রস্তুতি পরীক্ষা করার জন্য বারবার অনুরোধ পাঠাবে (উদাহরণস্বরূপ, প্রতি সেকেন্ডে)।
একটি HTTP Request অবশ্যই GET পদ্ধতি ব্যবহার করে URL https://sandbox.zamzar.com/v1/jobs/{id} এ পাঠাতে হবে, যেখানে {id} পূর্ববর্তী ধাপে প্রাপ্ত টাস্ক আইডি। এটি আগের অনুরোধের মতো একই শিরোনাম ব্যবহার করে।
প্রাপ্ত প্রতিক্রিয়া থেকে, আপনাকে প্রস্তুতির অবস্থা খুঁজে বের করতে হবে। রূপান্তর সম্পূর্ণ হলে, প্রতিক্রিয়াতে "status": "successful" এবং আমাদের জন্য, এটি একটি সংকেত যে আমরা লুপটি সম্পূর্ণ করতে পারি এবং এগিয়ে যেতে পারি।
স্ট্যাটাস ছাড়াও, প্রতিক্রিয়ায় অবশ্যই সমাপ্ত ফাইলের আইডি থাকতে হবে ( "target_files":[{"id": )। https://sandbox.zamzar.com/v1/files/{ID}/content ফর্মে ফাইলের চূড়ান্ত লিঙ্ক পেতে এটি অবশ্যই বের করতে হবে
একই সময়ে, একটি ফাইল প্রাপ্তি শুধুমাত্র অনুমোদিত ব্যবহারকারীদের জন্য উপলব্ধ, তাই আপনাকে আগের অনুরোধগুলির মতো একই শিরোনাম ব্যবহার করে একটি HTTP Request চালাতে হবে৷
অনুরোধের ফলস্বরূপ, ফাইলের বিষয়বস্তু প্রাপ্ত হবে, যা একটি নাম দিতে হবে এবং পরবর্তী ব্যবহারের জন্য সংরক্ষণ করতে হবে।
পাঠ্যে রূপান্তরের জন্য Whisper একটি MP3 ফাইল পাঠানো হচ্ছে
এখন সবকিছু পরবর্তী ধাপের জন্য প্রস্তুত - স্বীকৃতির জন্য একটি ভয়েস বার্তা সহ একটি ফাইল পাঠানো। এর জন্য Multipart Form ফরম্যাটে আরেকটি অনুরোধের প্রয়োজন হবে। শুধুমাত্র পূর্ববর্তী উদাহরণের বিপরীতে, অনুরোধটি ফাইলটি নিজেই স্থানান্তর করতে হবে এবং এটিতে একটি লিঙ্ক নয়।
External HTTP Request বিভাগে এই ধরনের অনুরোধের জন্য একটি মডেল তৈরি করা যেতে পারে। এই ক্ষেত্রে, আপনি সম্পূর্ণরূপে একটি অনুরোধ তৈরি করতে পারবেন না তবে শুধুমাত্র একটি অনুরোধের বডি মডেল তৈরিতে নিজেকে সীমাবদ্ধ করতে পারবেন। মডেলটি নিজেই দুটি পরামিতি নিয়ে গঠিত:
- File ( Virtual File টাইপ) - একই ফাইল যা স্বীকৃত হতে হবে।
- model (টাইপ String ) - এখানে আমরা whisper-1 মান উল্লেখ করি।
এছাড়াও, অনুরোধের জন্য, OpenAI API-এর সাথে কাজ করার জন্য একটি কী প্রাপ্ত করা এবং Bearer Token টাইপের একটি অনুমোদন শিরোনাম তৈরি করা প্রয়োজন।
Key = 'Authorization'
Value = 'Bearer '+ OpenAI API Key
এর পরে, আপনি ইউআরএল https://api.openai.com/v1/audio/transcriptions এ Whisper পরিষেবাতে ভয়েস বার্তা চিনতে POST অনুরোধটি নিজেই পাঠাতে পারেন
ফাইলটির সফল স্বীকৃতির ফলে, {"text": "Hello world.”} আকারে একটি প্রতিক্রিয়া পাওয়া যাবে।
ChatGPT এ একটি প্রাপ্ত পাঠ্য পাঠানো হচ্ছে
আপনি ChatGPT এ অনুরোধ পাঠাতে HTTP Request ব্লক ব্যবহার করা চালিয়ে যেতে পারেন। API ডকুমেন্টেশন অন্বেষণ করতে, সেইসাথে স্বাধীনভাবে অনুরোধ এবং প্রতিক্রিয়াগুলির জন্য মডেল তৈরি করুন। তবে আপনি OpenAI এর সাথে কাজ করার জন্য AppMaster থেকে একটি রেডিমেড মডিউল আকারে একটি সহজ বিকল্পও ব্যবহার করতে পারেন, যা মডিউল বিভাগে ইনস্টল করা আবশ্যক।
ন্যূনতম পর্যাপ্ত সংস্করণে, আপনাকে শুধুমাত্র OAI ChatCompletionMessage মডেলের প্যারামিটারগুলি নির্দিষ্ট করতে হবে ( role = user , content = বার্তা পাঠানো হবে), এটি অ্যারেতে যুক্ত করুন এবং OpenAI এর সাথে ChatGPT এ একটি অনুরোধ পাঠান OpenAI: Create Chat Completion ব্লক (সেট প্যারামিটার model = gpt-4 )।
ফলস্বরূপ, আমরা ChatGPT থেকে একটি প্রতিক্রিয়া পাই। আমরা OAI ChatCompletionChoice মডেলের content প্যারামিটার থেকে এটি পড়ি।
Telegram একজন ব্যবহারকারীকে ChatGPT থেকে একটি প্রতিক্রিয়া পাঠানো হচ্ছে
শেষ ধাপটি হল আগে যা করা হয়েছে তা পুনরাবৃত্তি করা - Telegram একটি বার্তা পাঠান। কিন্তু যদি আমরা কেবল প্রেরকের কাছে বার্তাটি ফেরত দিয়ে শুরু করি, এখন এই বার্তাটি বিভিন্ন অ্যাকশনের একটি সিরিজ চালু করেছে এবং ফলাফলটি ChatGPT থেকে প্রতিক্রিয়া হিসাবে ফিরে এসেছে।
এই ধরনের একটি বট বিকাশের প্রক্রিয়াতে, এটি বিবেচনা করা মূল্যবান:
- Telegram এমনভাবে কাজ করে যে বট দ্বারা প্রেরিত প্রতিটি অনুরোধ সফলভাবে প্রক্রিয়া করা আবশ্যক। অন্যথায়, তিনি এটি অনেকবার পুনরাবৃত্তি করার চেষ্টা করবেন, যার অর্থ কোনও সমস্যা হলে আপনি এটি বারবার পাবেন। নিশ্চিত করুন যে যুক্তিটি এমনভাবে তৈরি করা হয়েছে যাতে অনুরোধটি কোনও ত্রুটির কারণ না হয় এবং সফলভাবে প্রক্রিয়া করা যায়।
- সব অনুরোধ প্রথম চেষ্টায় উদ্দেশ্য হিসাবে কাজ করবে না. আপনাকে ত্রুটিগুলি অনুসন্ধান করতে হবে এবং এর জন্য, Write to Log ব্যবস্থা করুন। প্রতিটি ব্লক প্রকৃতপক্ষে সেই ডেটা গ্রহণ করে যা আপনি প্রেরণ করার পরিকল্পনা করেছিলেন এবং ব্লকের ফলাফল বিশ্লেষণ এবং প্রতিক্রিয়াটি বিশদভাবে অধ্যয়ন করার জন্য উভয়ই এগুলি কার্যকর।
- গাইডের অংশ হিসাবে, আমরা ধরে নিয়েছি যে সমস্ত অনুরোধ অনুমানযোগ্য এবং সফল এবং প্রক্রিয়াটি মোটামুটি রৈখিক। অনুশীলনে, কর্মের জন্য বিভিন্ন বিকল্প প্রদান করা প্রয়োজন হবে (উদাহরণস্বরূপ, ব্যবহারকারী যদি ভয়েস বার্তা বা এমনকি একটি ছবির পরিবর্তে একটি পাঠ্য বার্তা পাঠায় তবে কী করবেন) এবং ত্রুটি পরিচালনা (HTTP অনুরোধের স্থিতি পরীক্ষা করা, বিভিন্ন প্রতিক্রিয়া বিকল্প বিবেচনা করুন)।