ChatGPT के साथ काम करने के लिए एक एप्लिकेशन बनाने पर विचार करें। इसका कार्य Telegram के माध्यम से ध्वनि संदेश प्राप्त करना, उन्हें टेक्स्ट में परिवर्तित करना, उन्हें ChatGPT में स्थानांतरित करना और Telegram पर प्रतिक्रिया वापस भेजना होगा। निर्माण प्रक्रिया के दौरान, आपको निम्नलिखित चरणों से गुजरना होगा:
- Telegram और उसके मूल सेटअप के लिए बॉट बनाना।
- ध्वनि संदेश के साथ फ़ाइल प्राप्त करना ( Telegram .oga प्रारूप का उपयोग करता है)।
- फ़ाइल को oga से mp3 में बदलें।
- पाठ में रूपांतरण के लिए mp3 फ़ाइल को Whisper सेवा में स्थानांतरित करना।
- प्राप्त पाठ को ChatGPT को भेजा जा रहा है।
- Telegram में किसी उपयोगकर्ता को ChatGPT से प्रतिक्रिया भेजना।
Telegram और उसके मूल सेटअप के लिए एक बॉट बनाना
यह सब एक बॉट के पंजीकरण के तथ्य से शुरू होता है। और इसके लिए Telegram अपना एक खास bot - BotFather इस्तेमाल करता है। आपको उसे लिखने और सरल क्रमिक चरणों से गुजरने की आवश्यकता है।
परिणामस्वरूप, आपके पास अपने बॉट के लिए एक लिंक और इसके एपीआई के अनुरोधों के लिए एक टोकन होना चाहिए।
अब आप AppMaster में बॉट की स्थापना के लिए आगे बढ़ सकते हैं। ऐसा करने का सबसे आसान तरीका उचित मॉड्यूल स्थापित करना है। आपको केवल इसे मॉड्यूल की सूची में चुनना होगा और सेटिंग्स में अपना एपीआई टोकन निर्दिष्ट करना होगा।
आपके प्रोजेक्ट में आवश्यक मॉडल स्वचालित रूप से बनाए जाएंगे, 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 चालू करने की आवश्यकता है। यह बॉट के समापन बिंदु को पंजीकृत करते समय पहले ही किया जा चुका है। अब आपको फ़ाइल प्राप्त करने के लिए इसी तरह का अनुरोध करने की आवश्यकता है। अनुरोध URL में {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 फॉर्मेट में ":" से अलग किया गया है
सेवा के साथ पंजीकरण करते समय प्राप्त की गई एपीआई कुंजी उपयोगकर्ता आईडी है। आपको इसमें ":" जोड़ना होगा और To Base64 ब्लॉक का उपयोग करके इसे Base64 प्रारूप में एन्कोड करना होगा। परिणाम को हेडर में बदलने की जरूरत है ( Make Key-Value (String) )।
अगला चरण डेटाबेस डिज़ाइनर में क्वेरी के लिए एक मॉडल बनाना है। अनुरोध क्रमशः Multipart Form प्रारूप में भेजा जाना चाहिए, इस अनुरोध के फॉर्म का एक मॉडल तैयार करना आवश्यक है। हमारे उदाहरण में, मॉडल में String प्रकार के तीन फ़ील्ड होते हैं:
- source_file - स्रोत फ़ाइल का पूरा पथ (यह पिछले चरण में सीखा गया था)।
- source_format - स्रोत फ़ाइल स्वरूप, इस उदाहरण में, यह एक निश्चित मान " ogg " है।
- target_format - रूपांतरण के लिए लक्ष्य प्रारूप। आप Whisper द्वारा समर्थित कोई भी प्रारूप चुन सकते हैं। उदाहरण के तौर पर " mp3 " का उपयोग करते हैं।
व्यवसाय प्रक्रिया संपादक में, आपको मॉडल डेटा भरने के लिए Make ब्लॉक का उपयोग करना होगा और HTTP Request ब्लॉक का उपयोग करके इसे POST अनुरोध के रूप में https://sandbox.zamzar.com/v1/jobs/ पर भेजना होगा (सुनिश्चित करें Serialize request body = Multipart Form निर्दिष्ट करें)।
यह ध्यान दिया जाना चाहिए कि यह अनुरोध परिवर्तित फ़ाइल को वापस नहीं करता है, लेकिन केवल इसे परिवर्तित करने के लिए एक कार्य बनाता है। आपको परिणाम के लिए अलग से आवेदन करना होगा; इसके लिए आपको बनाए गए कार्य की आईडी चाहिए। यह आईडी अनुरोध के जवाब के मुख्य भाग से प्राप्त की जानी चाहिए, और इसके लिए पहले से ही विकसित प्रक्रिया को नियमित अभिव्यक्ति का उपयोग करके और आईडी मान निकालने के लिए किया जाना चाहिए।
रूपांतरण का परिणाम अलग से लागू किया जाना चाहिए। इसके लिए दो और अनुरोधों की आवश्यकता होगी। सबसे पहले यह पता लगाना है कि परिणाम तैयार है या नहीं। दूसरा तैयार फाइल को उठाना है। साथ ही, हम तैयारी का सही समय नहीं जानते हैं, इसलिए हम एक लूप व्यवस्थित कर सकते हैं जो निश्चित अंतराल पर तैयारी की जांच के लिए बार-बार अनुरोध भेजेगा (उदाहरण के लिए, हर सेकेंड)।
URL https://sandbox.zamzar.com/v1/jobs/{id} पर GET विधि का उपयोग करके एक HTTP Request भेजा जाना चाहिए, जहां {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
इसके बाद, आप URL https://api.openai.com/v1/audio/transcriptions पर Whisper सेवा को ध्वनि संदेश पहचानने के लिए स्वयं POST अनुरोध भेज सकते हैं
फ़ाइल की सफल पहचान के परिणामस्वरूप, प्रतिक्रिया {"text": "Hello world.”} रूप में प्राप्त होगी।
ChatGPT को प्राप्त टेक्स्ट भेजा जा रहा है
आप ChatGPT को अनुरोध भेजने के लिए HTTP Request ब्लॉक का उपयोग करना जारी रख सकते हैं। एपीआई प्रलेखन का पता लगाने के साथ-साथ अनुरोधों और प्रतिक्रियाओं के लिए स्वतंत्र रूप से मॉडल बनाएं। लेकिन आप 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 अनुरोधों की स्थिति की जाँच करना, विभिन्न प्रतिक्रिया विकल्पों को ध्यान में रखें)।