ऐसा लगता है कि LLM के साथ नवाचार की अनंत संभावनाएँ हैं। यदि आप मेरे जैसे हैं, तो आपने GenAI एप्लिकेशन और टूल का उपयोग किया होगा - जैसे कि Expedia में निर्मित ChatGPT, कोड लिखने के लिए Copilot, या यहाँ तक कि इमेज बनाने के लिए DALL-E। लेकिन एक प्रौद्योगिकीविद् के रूप में, मैं LLM-आधारित टूल का उपयोग करने से कहीं अधिक करना चाहता हूँ। मैं अपना खुद का टूल बनाना चाहता हूँ।
सभी नई तकनीकों के साथ, बिल्डर बनने का मतलब है सरल शुरुआत करना। यह किसी भी नई प्रोग्रामिंग भाषा के लिए ऐसा ही है जिसे मैं सीख रहा हूँ या किसी भी नए फ्रेमवर्क को देख रहा हूँ। LLM के साथ निर्माण करना अलग नहीं है। तो, मैं यहाँ यही बताने जा रहा हूँ। मैं एक त्वरित और गंदा API बनाने जा रहा हूँ जो Google Gemini के साथ इंटरैक्ट करता है, जिससे मुझे प्रभावी रूप से अपना खुद का एक छोटा सा चैटबॉट सहायक मिल जाता है।
हम यह करेंगे:
अधिकांश रोज़मर्रा के उपभोक्ता ChatGPT के बारे में जानते हैं, जो GPT-4 LLM पर बनाया गया है। लेकिन जब LLM की बात आती है, तो GPT-4 ही एकमात्र गेम नहीं है। Google Gemini (जिसे पहले Bard के नाम से जाना जाता था) भी है। अधिकांश प्रदर्शन बेंचमार्क (जैसे मल्टी-डिसिप्लिन कॉलेज-लेवल रीजनिंग प्रॉब्लम या पायथन कोड जेनरेशन) में, Gemini GPT-4 से बेहतर प्रदर्शन करता है।
मिथुन राशि अपने बारे में क्या कहती है?
डेवलपर्स के रूप में, हम Google AI स्टूडियो में Gemini API के माध्यम से Gemini तक पहुँच सकते हैं। Python , JavaScript , Swift और Android के लिए SDK भी उपलब्ध हैं।
ठीक है। चलो निर्माण कार्य शुरू करते हैं।
हमारा Node.js एप्लीकेशन एक सरल एक्सप्रेस API सर्वर होगा जो जेमिनी चैटबॉट की तरह काम करता है। यह दो एंडपॉइंट पर सुनेगा। सबसे पहले, /chat
पर एक POST
अनुरोध (जिसमें एक message
विशेषता के साथ JSON पेलोड शामिल होगा) जेमिनी को संदेश भेजेगा और फिर प्रतिक्रिया लौटाएगा। हमारा एप्लीकेशन जेमिनी के साथ एक चालू चैट वार्तालाप रखेगा। यह हमारे चैटबॉट को एक सहायक सहायक में बदल देता है जो हमारे लिए नोट्स रख सकता है।
दूसरा, यदि हम /reset
पर POST
अनुरोध भेजते हैं, तो यह चैट वार्तालाप को पुनः शुरू करने के लिए रीसेट कर देगा, जिससे जेमिनी की हमारे साथ पिछली बातचीत की स्मृति प्रभावी रूप से मिट जाएगी।
यदि आप इस कोड वॉकथ्रू को छोड़ना चाहते हैं, तो आप मेरे GitHub repo पर सभी कोड देख सकते हैं।
आरंभ करने के लिए, हम अपने Node.js एप्लिकेशन को आरंभ करते हैं और निर्भरताएं स्थापित करते हैं।
~/project$ npm init -y && npm pkg set type="module" ~/project$ npm install @google/generative-ai dotenv express
फिर, हम इसे अपने package.json
फ़ाइल में scripts
में जोड़ते हैं:
"scripts": { "start": "node index.js" },
index.js
फ़ाइलहमारा एप्लीकेशन एक फ़ाइल से बना है, और यह बहुत सरल है। हम एक बार में एक सेक्शन पर चलेंगे।
सबसे पहले, हम उन सभी पैकेजों को आयात करते हैं जिनका हम उपयोग करेंगे। फिर, हम Google AI से SDK को आरंभ करते हैं। हम Gemini-pro मॉडल का उपयोग करेंगे। अंत में, हम startChat() को कॉल करते हैं, जो Google द्वारा मल्टी-टर्न वार्तालाप कहे जाने वाले के लिए एक नया ChatSession इंस्टेंस बनाता है।
import 'dotenv/config'; import express from 'express'; import { GoogleGenerativeAI } from '@google/generative-ai'; const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY); const model = genAI.getGenerativeModel({ model: "gemini-pro"}); let chat = model.startChat();
इसके बाद, हम एक नया एक्सप्रेस ऐप बनाते हैं, जो हमारा API सर्वर है।
const app = express(); app.use(express.json())
फिर, हम /chat
एंडपॉइंट पर POST
अनुरोधों के लिए अपना श्रोता सेट करते हैं। हम सुनिश्चित करते हैं कि JSON पेलोड बॉडी में एक message
शामिल है। हम उस संदेश को Gemini को भेजने के लिए अपने chat
ऑब्जेक्ट का उपयोग करते हैं। फिर, हम Gemini से प्रतिक्रिया पाठ के साथ अपने API कॉलर को जवाब देते हैं।
app.post('/chat', async (req, res) => { if ((typeof req.body.message) === 'undefined' || !req.body.message.length) { res.status(400).send('"message" missing in request body'); return; } const result = await chat.sendMessage(req.body.message); const response = await result.response; res.status(200).send(response.text()); })
ध्यान रखें कि, ChatSession
का उपयोग करके, सभी API कॉल में Gemini के साथ हमारी बातचीत का एक संग्रहीत, चालू इतिहास होता है। Gemini को हमारी बातचीत की "स्मृति" देना संदर्भ के लिए सहायक होता है।
लेकिन क्या होगा अगर आप चाहते हैं कि जेमिनी पूरी तरह से शुरू हो जाए और सभी पिछले संदर्भ भूल जाए? इसके लिए, हमारे पास /reset
एंडपॉइंट है। यह बस एक नया ChatSession
शुरू करता है।
app.post('/reset', async (req, res) => { chat = model.startChat(); res.status(200).send('OK'); })
अंत में, हम सुनना शुरू करने के लिए अपना सर्वर चालू करते हैं।
const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`) })
एक साइड नोट के रूप में, यह पूरा प्रोजेक्ट सिर्फ़ एक छोटा डेमो है। इसका उत्पादन में उपयोग करने का इरादा नहीं है! जिस तरह से मैंने इसे अभी डिज़ाइन किया है (प्रमाणीकरण के बिना), URL वाला कोई भी व्यक्ति /chat
से /reset
पर अनुरोध भेज सकता है। उत्पादन सेटअप में, हमारे पास उचित प्रमाणीकरण होगा, और प्रत्येक उपयोगकर्ता के पास जेमिनी के साथ बातचीत का अपना उदाहरण होगा जिसे कोई और हेरफेर नहीं कर सकता।
इस बिंदु पर, हम लगभग जाने के लिए तैयार हैं। आखिरी चीज जो हमें चाहिए वह है जेमिनी एपीआई तक पहुंचने के लिए एक एपीआई कुंजी। एपीआई कुंजी प्राप्त करने के लिए, Google AI for Developers खाते के लिए साइन अप करके शुरू करें।
एक बार लॉग इन करने के बाद, नया Google Gemini प्रोजेक्ट शुरू करने के लिए Google AI स्टूडियो लॉन्च करें चुनें.
प्रोजेक्ट के अंदर, API कुंजी पेज पर जाने के लिए Get API key पर क्लिक करें। फिर, कुंजी बनाने के लिए Create API key पर क्लिक करें। मान कॉपी करें।
अपने प्रोजेक्ट में, .env.template
नामक फ़ाइल को .env
नामक नई फ़ाइल के रूप में कॉपी करें। अपनी जेमिनी API कुंजी का मान पेस्ट करें। आपकी .env
फ़ाइल कुछ इस तरह दिखनी चाहिए:
GEMINI_API_KEY=ABCDEFGH0123456789_JJJ
सब कुछ ठीक होने के बाद, हम परीक्षण के लिए अपने सर्वर को स्थानीय स्तर पर चालू कर सकते हैं।
~/project$ npm start > [email protected] start > node index.js Server is running on port 3000
एक अलग टर्मिनल में, हम कुछ कर्ल अनुरोध भेज सकते हैं:
$ curl -X POST -H 'content-type:application/json' \ --data '{"message":"I would like to bake a shepherds pie to feed 8 \ people. As you come up with a recipe, please keep a grocery \ list for me with all of the ingredients that I would need to \ purchase."}' \ http://localhost:3000/chat **Shepherd's Pie Recipe for 8** **Ingredients:** **For the Filling:** * 1 pound ground beef * 1/2 pound ground lamb * 2 medium onions, diced … **For the Mashed Potatoes:** * 3 pounds potatoes, peeled and quartered * 1/2 cup milk … **Instructions:** **For the Filling:** 1. Heat a large skillet over medium heat. Add the ground beef and lamb and cook until browned. … $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"I also need to buy fresh basil, for a different dish (not the shepherds pie). Add that to my grocery list \ too."}' \ http://localhost:3000/chat **Updated Grocery List for Shepherd's Pie for 8, and Fresh Basil:** * 1 pound ground beef * 1/2 pound ground lamb * 2 medium onions * 2 carrots * 2 celery stalks * 1 bag frozen peas * 1 bag frozen corn * 1 tablespoon Worcestershire sauce * 1 teaspoon dried thyme * 1 cup beef broth * 1/4 cup tomato paste * 3 pounds potatoes * 1/2 cup milk * 1/4 cup butter * **Fresh basil** $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What items on my grocery list can I find in the \ produce section?"}' \ http://localhost:3000/chat The following items on your grocery list can be found in the produce section: * Onions * Carrots * Celery * Potatoes * Fresh basil $ curl -X POST http://localhost:3000/reset OK $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What items are on my grocery list?"}' \ http://localhost:3000/chat I do not have access to your grocery list, so I cannot give you the items on it.
यह काम कर रहा है। ऐसा लगता है कि हम तैनाती के लिए तैयार हैं!
हमारे एप्लिकेशन को तैनात करने के लिए, मैंने Heroku का विकल्प चुना है। यह त्वरित, सरल और कम लागत वाला है। मैं अपने कोड को कुछ सरल चरणों के साथ क्लाउड में चला सकता हूँ, बिना किसी बुनियादी ढांचे की चिंताओं में उलझे हुए। इस तरह, मैं सिर्फ़ शानदार एप्लिकेशन बनाने पर ध्यान केंद्रित कर सकता हूँ।
Heroku खाते के लिए साइन अप करने और CLI स्थापित करने के बाद, इसे तैनात करने के लिए क्या करना होगा।
Procfile
जोड़ें हमें Procfile
नामक एक फ़ाइल शामिल करने की आवश्यकता है जो Heroku को बताती है कि हमारा एप्लिकेशन कैसे शुरू किया जाए। Procfile
की सामग्री इस तरह दिखती है:
web: npm start
हम इस फ़ाइल को अपने कोडबेस रिपो में जमा करते हैं।
~/project$ heroku login
~/project$ heroku create gemini-chatbot Creating ⬢ gemini-chatbot... done https://gemini-chatbot-1933c7b1f717.herokuapp.com/ | https://git.heroku.com/gemini-chatbot.git
~/project$ heroku config:add \ --app gemini-chatbot \ GEMINI_API_KEY=ABCDEFGH0123456789_JJJ Setting GEMINI_API_KEY and restarting ⬢ gemini-chatbot... done, v3 GEMINI_API_KEY: ABCDEFGH0123456789_JJJ
~/project$ git push heroku main ... remote: -----> Building on the Heroku-22 stack remote: -----> Determining which buildpack to use for this app remote: -----> Node.js app detected ... remote: -----> Build succeeded! remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 45.4M remote: -----> Launching... remote: Released v4 remote: https://gemini-chatbot-1933c7b1f717.herokuapp.com/ deployed to Heroku
बस इतना ही? बस इतना ही।
हमारे एप्लिकेशन को तैनात करने के बाद, आइए अपने Heroku ऐप URL पर कुछ कर्ल अनुरोध भेजें।
$ curl -X POST -H 'content-type:application/json' \ --data '{"message":"If I ask you later for my PIN, remind me that it \ is 12345."}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Sure, if you ask me for your PIN later, I will remind you that it is 12345. **Please note that it is not a good idea to share your PIN with anyone, including me.** Your PIN is a secret code that should only be known to you. If someone else knows your PIN, they could access your account and withdraw your money. $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What is my PIN?"}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Your PIN is 12345. $ curl -X POST https://gemini-chatbot-1933c7b1f717.herokuapp.com/reset OK $ curl -X POST -H 'content-type:application/json' \ --data '{"message":"What is my PIN?"}' \ https://gemini-chatbot-1933c7b1f717.herokuapp.com/chat Unfortunately, I am unable to provide your personal PIN as I do not have access to your private information. If you can't remember it, I suggest you visit the bank or organization that issued the PIN to retrieve or reset it.
अब LLM-आधारित एप्लिकेशन बनाने का बेहतरीन समय है। लहर पर सवार हो जाइए!
हमने Google Gemini के शीर्ष पर एक सरल LLM-आधारित एप्लिकेशन बनाने का तरीका बताया है। हमारा सरल चैटबॉट सहायक बुनियादी है, लेकिन यह Gemini API और इसके संबंधित SDK से खुद को परिचित करने का एक शानदार तरीका है। और परिनियोजन के लिए Heroku का उपयोग करके, आप माध्यमिक चिंताओं को दूर कर सकते हैं ताकि आप सीखने और निर्माण पर ध्यान केंद्रित कर सकें जहाँ यह मायने रखता है।