फ़ीचर स्पॉटलाइट: कमांड लाइन इंटरफ़ेस (सीएलआई) एकीकरण

मेरे बहुत महत्वपूर्ण मित्र, लब को समर्पित।

नया फास्टएपीआई-आधारित कमांड लाइन इंटरफ़ेस (सीएलआई) किसी भी स्थानीय या दूरस्थ शेल से हमारी चल रही कोर टेक्स्ट प्रोसेसिंग सेवा के साथ बातचीत करने का एक साफ, समकालिक तरीका प्रदान करता है। यह एक मजबूत समाधान है जिसे मूल तर्क को शेल वातावरण में एकीकृत करने के लिए डिज़ाइन किया गया है।


1. आर्किटेक्चर और सिंक्रोनस सीएलआई अवधारणा

सेवा Uvicorn/FastAPI सर्वर द्वारा संचालित है और एक अंतर्निहित एसिंक्रोनस, फ़ाइल-आधारित पृष्ठभूमि प्रक्रिया से एक सिंक्रोनस (अवरुद्ध) परिणाम देने के लिए एक कस्टम एंडपॉइंट (/process_cli) का उपयोग करती है।

प्रतीक्षा करें और पढ़ें मतदान रणनीति

  1. अद्वितीय आउटपुट ओवरराइड: एपीआई प्रत्येक अनुरोध के लिए एक अद्वितीय अस्थायी निर्देशिका बनाता है।

  2. प्रक्रिया प्रारंभ: यह एक गैर-अवरुद्ध थ्रेड में कोर लॉजिक को चलाने के लिए process_text_in_background को कॉल करता है, और परिणाम को उस अद्वितीय फ़ोल्डर के भीतर tts_output_*.txt फ़ाइल में लिखता है।

  3. सिंक्रोनस प्रतीक्षा: एपीआई फ़ंक्शन तब अद्वितीय फ़ोल्डर को ब्लॉक करता है और आउटपुट फ़ाइल बनने या टाइमआउट तक पहुंचने तक मतदान करता है।

  4. परिणाम वितरण: एपीआई फ़ाइल की सामग्री को पढ़ता है, आवश्यक सफाई करता है (फ़ाइल और अस्थायी निर्देशिका को हटाता है), और अंतिम संसाधित पाठ को JSON प्रतिक्रिया के result_text फ़ील्ड में लौटाता है।

यह सुनिश्चित करता है कि सीएलआई क्लाइंट को टेक्स्ट प्रोसेसिंग पूरी होने के बाद ही प्रतिक्रिया मिलती है, जो एक विश्वसनीय शेल अनुभव की गारंटी देता है।

2. रिमोट एक्सेस और नेटवर्क पोर्ट मैपिंग

लब के टर्मिनल जैसे दूरस्थ ग्राहकों से पहुंच की अनुमति देने के लिए, सीमित बाहरी पोर्ट उपलब्धता की सामान्य बाधा को संबोधित करते हुए, निम्नलिखित नेटवर्क कॉन्फ़िगरेशन की आवश्यकता थी:

समाधान: बाहरी पोर्ट मैपिंग

चूंकि सेवा आंतरिक रूप से पोर्ट 8000 पर चलती है और हमारा नेटवर्क वातावरण एक विशिष्ट पोर्ट रेंज (उदाहरण के लिए, 88__-8831) तक बाहरी पहुंच को सीमित करता है, हमने राउटर (फ्रिट्ज़! बॉक्स) पर पोर्ट मैपिंग लागू किया है।

समापन बिंदु

प्रोटोकॉल

बंदरगाह

विवरण

बाहरी/सार्वजनिक

टीसीपी

88__ (उदाहरण)

क्लाइंट (लब) को जिस पोर्ट का उपयोग करना चाहिए।

आंतरिक/स्थानीय

टीसीपी

8000

फास्टएपीआई सेवा वास्तव में जिस पोर्ट पर सुनती है (--पोर्ट 8000)।

राउटर बाहरी पोर्ट (88__) पर आने वाले किसी भी कनेक्शन को होस्ट मशीन के आंतरिक पोर्ट (8000) में ट्रांसलेट करता है, जिससे कोर सर्वर कॉन्फ़िगरेशन को बदले बिना सेवा विश्व स्तर पर पहुंच योग्य हो जाती है।

3. सीएलआई क्लाइंट उपयोग

क्लाइंट को सार्वजनिक आईपी पते, बाहरी पोर्ट और सही एपीआई-कुंजी के साथ कॉन्फ़िगर किया जाना चाहिए।

अंतिम कमांड सिंटैक्स

CODE_ब्लॉक_0