Apache APISIX और OpenAI API के साथ AI क्षमताओं को शक्ति प्रदान करना
February 7, 2023
आर्टिफिशियल इंटेलिजेंस (AI) ने हमारे तकनीक के साथ इंटरैक्ट करने के तरीके को क्रांतिकारी बना दिया है और यह आधुनिक एप्लिकेशन्स का एक अभिन्न अंग बन गया है। OpenAI API डेवलपर्स को शक्तिशाली AI क्षमताएं प्रदान करता है, जिससे वे आसानी से उन्नत AI एप्लिकेशन्स बना सकते हैं।
हालांकि, जैसे-जैसे AI का उपयोग बढ़ता है, वैसे-वैसे स्केलेबल, परफॉर्मेंट और सुरक्षित API इंटीग्रेशन की आवश्यकता भी बढ़ती है। यहीं पर Apache APISIX आता है। Apache APISIX एक हाई-परफॉर्मेंस ओपन-सोर्स API गेटवे है जो API इंटीग्रेशन को प्रबंधित और स्केल करने के लिए उन्नत सुविधाएं प्रदान करता है।
इस ब्लॉग पोस्ट में, हम Apache APISIX को OpenAI API के साथ इंटीग्रेट करने के लाभ और कैसे आप Apache APISIX का उपयोग करके एक अधिक स्केलेबल, परफॉर्मेंट और सुरक्षित AI इंटीग्रेशन बना सकते हैं, इस पर चर्चा करेंगे। प्रॉक्सी कैशिंग से लेकर सुरक्षा सुविधाओं तक, हम Apache APISIX और OpenAI API इंटीग्रेशन के साथ शुरुआत करने के लिए आपको जो कुछ भी जानने की आवश्यकता है, उसे कवर करेंगे। चाहे आप एक AI डेवलपर हों या DevOps प्रोफेशनल, यह ब्लॉग पोस्ट एक शक्तिशाली और लागत प्रभावी AI इंटीग्रेशन बनाने के लिए आपकी पूरी गाइड है।
सीखने के उद्देश्य
आप इस लेख के माध्यम से निम्नलिखित सीखेंगे:
- OpenAI API और Apache APISIX क्या हैं?
- OpenAI API के साथ Apache APISIX का उपयोग करने के लाभ।
- OpenAI API को बढ़ाने के लिए Apache APISIX प्लगइन्स के कई उपयोग केस।
- OpenAI API के लिए APISIX में एक नया रूट कैसे बनाएं।
- OpenAI API एंडपॉइंट को रूट के लिए अपस्ट्रीम के रूप में कैसे जोड़ें।
- रूट के लिए प्रमाणीकरण, दर सीमित करना और कैशिंग को कैसे कॉन्फ़िगर करें।
- रूट का परीक्षण कैसे करें ताकि यह सुनिश्चित हो सके कि अनुरोध OpenAI API को सही ढंग से फॉरवर्ड किए जा रहे हैं।
OpenAI API क्या है?
OpenAI उन्नत आर्टिफिशियल इंटेलिजेंस मॉडल बनाने और तैनात करने के लिए एक अत्याधुनिक प्लेटफॉर्म है। इन मॉडल्स का उपयोग विभिन्न कार्यों के लिए किया जा सकता है, जैसे कि प्राकृतिक भाषा प्रसंस्करण, छवि पहचान और भावना विश्लेषण। OpenAI का एक प्रमुख लाभ यह है कि यह एक API प्रदान करता है जिसका उपयोग डेवलपर्स इन मॉडल्स तक पहुंचने और उन्हें अपने एप्लिकेशन्स में शामिल करने के लिए कर सकते हैं।
OpenAI API एक क्लाउड-आधारित प्लेटफॉर्म है जो OpenAI के AI मॉडल्स तक पहुंच प्रदान करता है, जिसमें ChatGPT भी शामिल है। यह API डेवलपर्स को अपने एप्लिकेशन्स में AI क्षमताओं को इंटीग्रेट करने की अनुमति देता है।
ChatGPT OpenAI API के माध्यम से उपलब्ध AI मॉडल्स में से एक है, और यह विशेष रूप से उन उपयोग केस के लिए उपयुक्त है जिनमें प्राकृतिक भाषा प्रसंस्करण और टेक्स्ट जनरेशन क्षमताओं की आवश्यकता होती है। उदाहरण के लिए, ChatGPT का उपयोग चैटबॉट में टेक्स्ट प्रतिक्रियाएं उत्पन्न करने, टेक्स्ट पूर्णता सुझाव प्रदान करने, कोड पूर्णता या वार्तालाप इंटरफेस में प्रश्नों का उत्तर देने के लिए किया जा सकता है।
Apache APISIX क्या है?
Apache APISIX एक ओपन-सोर्स क्लाउड-नेटिव API ट्रैफिक मैनेजमेंट सॉल्यूशन है जो RESTful APIs बनाने के लिए API गेटवे सुविधाएं प्रदान करता है जो स्केलेबल, सुरक्षित और अत्यधिक उपलब्ध हैं।
OpenAI API के साथ API गेटवे का उपयोग करके, आप आसानी से स्केलेबल, सुरक्षित और हाई-परफॉर्मेंस APIs बना और तैनात कर सकते हैं जो OpenAI मॉडल्स तक पहुंचते हैं। यह आपको OpenAI की शक्ति को अपने एप्लिकेशन्स में शामिल करने और अपने उपयोगकर्ताओं के लिए एक शानदार अनुभव प्रदान करने की अनुमति देगा।
OpenAI API के साथ Apache APISIX का उपयोग करने के लाभ
OpenAI API के साथ Apache APISIX का उपयोग करने के कई लाभ हैं:
-
स्केलेबिलिटी: Apache APISIX OpenAI API को प्रबंधित और स्केल करने का एक आसान तरीका प्रदान करता है, जिससे आप बढ़े हुए ट्रैफिक और उपयोग की मांग को संभाल सकते हैं।
-
परफॉर्मेंस: Apache APISIX OpenAI API अनुरोधों के प्रदर्शन को बेहतर बनाने में मदद कर सकता है, प्रतिक्रियाओं को कैश करके और लेटेंसी को कम करके। सुरक्षा: Apache APISIX एन्क्रिप्शन और प्रमाणीकरण जैसी सुरक्षा सुविधाएं प्रदान करता है, जिससे OpenAI API तक पहुंच को सुरक्षित करना आसान हो जाता है।
-
लचीलापन: Apache APISIX OpenAI API तक पहुंच को प्रबंधित और नियंत्रित करने का एक लचीला तरीका प्रदान करता है, जिससे आप अपने इंटीग्रेशन को आवश्यकतानुसार कस्टमाइज़ और कॉन्फ़िगर कर सकते हैं।
-
मॉनिटरिंग और एनालिटिक्स: Apache APISIX विस्तृत मॉनिटरिंग और एनालिटिक्स प्रदान करता है, जिससे आप अपने OpenAI API इंटीग्रेशन के प्रदर्शन को ट्रैक और ऑप्टिमाइज़ कर सकते हैं।
OpenAI API को बढ़ाने के लिए Apache APISIX प्लगइन्स
कई Apache APISIX प्लगइन्स हैं जिनका उपयोग OpenAI API के साथ इंटीग्रेशन को बढ़ाने के लिए किया जा सकता है। OpenAI API के साथ उपयोग किए जा सकने वाले कुछ प्लगइन्स में शामिल हैं:
- दर सीमित करना: API अनुरोधों की संख्या को सीमित करने और OpenAI API के अत्यधिक उपयोग को रोकने के लिए।
- प्रमाणीकरण: प्रमाणीकरण और प्राधिकरण तंत्र को लागू करके OpenAI API तक पहुंच को सुरक्षित करने के लिए।
- ट्रैफिक नियंत्रण: API ट्रैफिक के प्रवाह को नियंत्रित करने और OpenAI API के स्थिर प्रदर्शन और स्थिरता को सुनिश्चित करने के लिए।
- अवलोकन: API अनुरोधों और प्रतिक्रियाओं को मॉनिटर और लॉग करने के लिए, OpenAI API के उपयोग और प्रदर्शन की दृश्यता प्रदान करने के लिए।
- कैशिंग: API प्रतिक्रियाओं को कैश करने और API अनुरोधों की संख्या को कम करने के लिए, प्रदर्शन को बेहतर बनाने और OpenAI API का उपयोग करने की लागत को कम करने के लिए।
- रूपांतरण: API अनुरोधों और प्रतिक्रियाओं को संशोधित करने के लिए, डेटा को एक प्रारूप से दूसरे प्रारूप में बदलने के लिए, जैसे JSON से XML।
Apache APISIX के साथ OpenAI APIs का प्रबंधन डेमो
पर्याप्त सैद्धांतिक ज्ञान के साथ, अब हम एक व्यावहारिक सत्र में कूद सकते हैं। इस उदाहरण में, Apache APISIX का उपयोग एक सरल API गेटवे बनाने के लिए किया जाता है जो OpenAI API तक पहुंचता है और ट्रैफिक को प्रबंधित करता है, एक रूट, अपस्ट्रीम बनाकर और कुछ प्लगइन्स को सक्षम करके। हम OpenAI API पूर्णता एंडपॉइंट के साथ इंटरैक्ट करने जा रहे हैं ताकि एक उत्पाद विवरण जनरेटर बनाया जा सके जो उत्पाद विवरण को कुशलतापूर्वक और सटीक रूप से उत्पन्न कर सके।
उदाहरण के लिए, API गेटवे के लिए एक सामान्य अनुरोध नीचे दिखाए गए अनुसार होगा:
curl http://127.0.0.1:9080/openai/product/desc -X POST -d '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
और, हमें आउटपुट के रूप में मिलेगा:
{ "object":"text_completion", "model":"text-davinci-003", "choices":[ { "text":"\n\nThe Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine. It features a 13-inch Retina display with True Tone technology, a powerful 8th-generation Intel Core i5 processor, 8GB of RAM, and a 256GB SSD for storage. It also has a Touch Bar and Touch ID for added security and convenience. With up to 10 hours of battery life, you can stay productive all day long. The Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.", "index":0, "finish_reason":"stop" } ], "usage":{ "prompt_tokens":9, "completion_tokens":109, "total_tokens":118 } }
पूर्वापेक्षाएँ
- OpenAI API पूर्णता मॉडल की मूल अवधारणाओं से परिचित होना चाहिए।
- एक OpenAI API Key बनाएं: OpenAI API तक पहुंचने के लिए, आपको एक API Key बनाने की आवश्यकता होगी। आप इसे OpenAI वेबसाइट पर लॉग इन करके और API Key प्रबंधन पृष्ठ पर नेविगेट करके कर सकते हैं।
- APISIX चलाने के लिए आपकी मशीन पर Docker इंस्टॉल होना चाहिए।
- APISIX की कुछ मूल अवधारणाओं जैसे रूट, अपस्ट्रीम और प्लगइन के बारे में बुनियादी ज्ञान होना चाहिए।
प्रोजेक्ट सेटअप
पहले आप GitHub से apisix-docker प्रोजेक्ट रेपो को क्लोन करें:
git clone https://github.com/apache/apisix-docker.git
प्रोजेक्ट फोल्डर को अपने पसंदीदा कोड एडिटर में खोलें। यह ट्यूटोरियल VS Code का उपयोग करता है।
Apache APISIX इंस्टॉल और चलाएं
Apache APISIX चलाने के लिए, आप इन चरणों का पालन कर सकते हैं:
एक नया टर्मिनल विंडो खोलें और प्रोजेक्ट के रूट फोल्डर से docker compose up कमांड चलाएं:
docker compose up -d
उपरोक्त कमांड Apache APISIX और etcd को Docker के साथ एक साथ चलाएगा।
हमने इस डेमो में Docker का उपयोग करके APISIX इंस्टॉल किया है। हालांकि, इसे इंस्टॉलेशन गाइड पर अन्य विकल्पों के साथ इंस्टॉल करने के लिए भी उपलब्ध है।
OpenAI API के लिए एक अपस्ट्रीम बनाएं
सेटअप पूरा होने के बाद, हम APISIX में अपस्ट्रीम ऑब्जेक्ट बनाएंगे, इसके एडमिन API का उपयोग करके। APISIX में "अपस्ट्रीम" वास्तविक अनुरोध डेटा को सर्व करने के लिए जिम्मेदार बैकएंड सर्वर्स को संदर्भित करता है।
हमारे मामले में, हम api.openai.com पर एक अपस्ट्रीम API सर्वर को परिभाषित करते हैं, जिसमें एक नोड और https स्कीम का उपयोग किया जाता है, जब अपस्ट्रीम के साथ सुरक्षित रूप से संचार किया जाता है:
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "name": "OpenAI API upstream", "desc": "Add the OpenAI API domain as the upstream", "type": "roundrobin", "scheme": "https", "nodes": { "api.openai.com:443": 1 } }'
एक नया प्लगइन कॉन्फ़िग बनाएं
अब हम एक नया प्लगइन कॉन्फ़िग बनाते हैं, जिसमें proxy-rewrite प्लगइन सक्षम होता है।
प्रॉक्सी प्लगइन का उपयोग OpenAI API पूर्णता एंडपॉइंट के लिए अनुरोधों को पुनर्परिभाषित करने के लिए किया जाता है। प्लगइन के कॉन्फ़िगरेशन में API एंडपॉइंट के लिए URL सेट करने, OpenAI API कुंजी को हेडर के रूप में पास करने और Content-Type हेडर को application/json पर सेट करने के विकल्प शामिल हैं।
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } } } }'
OpenAI पूर्णता एंडपॉइंट के लिए एक रूट सेटअप करें
अगले चरण में, हम APISIX में एक नया रूट सेटअप करते हैं, जो POST अनुरोधों को संभालने के लिए नया कस्टम API गेटवे URI पथ /openai/product/desc के साथ होता है, और हम पिछले चरणों में बनाए गए अपस्ट्रीम और प्लगइन कॉन्फ़िग को उनके अद्वितीय Ids के साथ संदर्भित करते हैं।
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "name":"OpenAI API completion route", "desc":"Create a new route in APISIX for the OpenAI API completion endpoint", "methods":[ "POST" ], "uri":"/openai/product/desc", "upstream_id":"1", "plugin_config_id":1 }'
इसके अतिरिक्त, रूट को रिट्रीज़, टाइमआउट और कीपअलाइव टाइमआउट के साथ सेटअप किया गया है, ताकि OpenAI API के साथ संचार मजबूत और लचीला हो सके।
एक कर्ल अनुरोध के साथ परीक्षण करें
API का परीक्षण करने के लिए, आप /openai/product/desc एंडपॉइंट पर एक POST अनुरोध कर सकते हैं, जैसे cURL या Postman जैसे टूल का उपयोग करके। API गेटवे अनुरोध को OpenAI API पूर्णता एंडपॉइंट पर फॉरवर्ड करेगा और परिणाम सफलतापूर्वक वापस करेगा।
curl http://127.0.0.1:9080/openai/product/desc -X POST -d '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
बहुत बढ़िया! हमें वास्तविक पूर्णता एंडपॉइंट से प्रतिक्रिया मिली:
HTTP/1.1 200 OK Content-Type: application/json ... { "object":"text_completion", ... "choices":[ { "text":"\n\nThe Apple 13 Pro is the perfect laptop...", "index":0, "logprobs":null, "finish_reason":"stop" } ], ... }
एक नया उपभोक्ता बनाएं और प्रमाणीकरण जोड़ें
अब तक, हमारा API गेटवे उत्पाद विवरण एंडपॉइंट /openai/product/desc सार्वजनिक है और अनधिकृत उपयोगकर्ताओं द्वारा पहुंच योग्य है (हालांकि APISIX और OpenAI API के बीच संचार हेडर में API कुंजी के साथ सुरक्षित है)। इस खंड में, हम प्रमाणीकरण सुविधा को सक्षम करेंगे ताकि हमारे API को अनधिकृत अनुरोधों को अस्वीकार किया जा सके।
ऐसा करने के लिए, हमें अपने एंडपॉइंट के लिए एक नया उपभोक्ता बनाने और मौजूदा प्लगइन कॉन्फ़िग में basic-auth प्लगइन जोड़ने की आवश्यकता है, ताकि केवल अनुमति प्राप्त उपयोगकर्ता ही उन तक पहुंच सकें।
नीचे दिया गया कमांड हमारे नए consumer1 को उसके क्रेडेंशियल्स जैसे username1 और password1 के साथ बनाएगा:
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "consumer1", "plugins": { "basic-auth": { "username": "username1", "password": "password1" } } }'
अब हम मौजूदा प्लगइन कॉन्फ़िग को अपडेट करते हैं और basic-auth प्लगइन को जोड़ते हैं, ताकि APISIX का रूट हर बार API को कॉल करने पर अनुरोध हेडर को API उपभोक्ता क्रेडेंशियल्स के साथ जांच सके:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{} } }'
अब केवल यदि हम अनुरोध में सही उपयोगकर्ता क्रेडेंशियल्स प्रदान करते हैं और उसी एंडपॉइंट तक पहुंचते हैं, तो हम OpenAI API से अपेक्षित प्रतिक्रिया प्राप्त कर सकते हैं:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \ '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
सर्वरलेस APIs के लिए दर सीमित करने की नीतियां लागू करें
इस खंड में, हम अपने उत्पाद विवरण एंडपॉइंट को दुरुपयोग से बचाने के लिए एक थ्रॉटलिंग नीति लागू करेंगे। Apache APISIX गेटवे में हम आने वाले कॉल्स की संख्या को सीमित करने के लिए दर सीमित करने की नीति लागू कर सकते हैं।
दर-सीमित नीति लागू करें और परीक्षण करें
मौजूदा रूट कॉन्फ़िगरेशन के साथ, हम limit-count प्लगइन के साथ एक दर-सीमित नीति लागू कर सकते हैं, ताकि हमारे API को असामान्य उपयोग से बचाया जा सके। हम API कॉल्स की संख्या को प्रति 60s में 2 तक सीमित करेंगे, प्रति API उपभोक्ता।
मौजूदा रूट के लिए limit-count प्लगइन को सक्षम करने के लिए, हमें अपने Json प्लगइन कॉन्फ़िगरेशन में प्लगइन्स सूची में प्लगइन को जोड़ने की आवश्यकता है:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{}, "limit-count":{ "count":2, "time_window":60, "rejected_code":403, "rejected_msg":"Requests are too frequent, please try again later.", "key_type":"var", "key":"remote_addr" } } }'
Apache APISIX पहले दो अनुरोधों को सामान्य रूप से संभालेगा। हालांकि, उसी अवधि में तीसरा अनुरोध हमारे कस्टम त्रुटि संदेश के साथ 403 HTTP Forbidden कोड वापस करेगा:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \ '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }' # पहले कॉल के बाद HTTP/1.1 200 OK Content-Type: application/json Content-Length: 752 Connection: keep-alive X-RateLimit-Limit: 2 X-RateLimit-Remaining: 1 # दूसरे कॉल के बाद HTTP/1.1 403 Forbidden {"error_msg":"Requests are too frequent, please try again later."}
OpenAI API प्रतिक्रिया के लिए कैशिंग कॉन्फ़िगर करें
Apache APISIX प्रॉक्सी कैशिंग Apache APISIX की एक सुविधा है जो आपको API प्रतिक्रियाओं को कैश करने और बाद के अनुरोधों को कैश्ड प्रतिक्रियाएं प्रदान करने की अनुमति देती है। यह API अनुरोधों की संख्या को कम करने में मदद कर सकता है, जिसका अर्थ है OpenAI API का उपयोग करने की लागत को कम करना, आपके API इंटीग्रेशन के प्रदर्शन को बेहतर बनाना और API सर्वर पर लोड को कम करना।
Apache APISIX कैशिंग व्यवहार पर सूक्ष्म नियंत्रण प्रदान करता है, जिससे आप कैश समाप्ति समय, कैश अमान्य होने की शर्तें और अन्य कैशिंग नीतियों को निर्दिष्ट कर सकते हैं।
नीचे दिए गए कॉन्फ़िगरेशन में, हम proxy-cache प्लगइन को अन्य प्लगइन्स के साथ परिभाषित करेंगे, जिससे हम केवल OpenAI API पूर्णता एंडपॉइंट के POST मेथड से सफल उत्पाद विवरण प्रतिक्रियाओं को कैश करना चाहते हैं।
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{}, "proxy-cache":{ "cache_key":[ "$uri", "-cache-id" ], "cache_method":[ "POST" ], "cache_http_status":[ 200 ], "hide_cache_headers":true } } }'
हम /openai/product/desc पथ पर कई अनुरोध भेजेंगे और हमें हर बार HTTP 200 OK प्रतिक्रिया प्राप्त होनी चाहिए। हालांकि, प्रतिक्रिया में Apisix-Cache-Status MISS दिखाता है, जिसका अर्थ है कि जब अनुरोध पहली बार रूट पर पहुंचता है, तो प्रतिक्रिया अभी तक कैश नहीं हुई है। अब, यदि आप एक और अनुरोध करते हैं, तो आप देखेंग