paint-brush
Google মিথুন দিয়ে কীভাবে একটি LLM অ্যাপ্লিকেশন তৈরি করবেনদ্বারা@alvinslee
2,425 পড়া
2,425 পড়া

Google মিথুন দিয়ে কীভাবে একটি LLM অ্যাপ্লিকেশন তৈরি করবেন

দ্বারা Alvin Lee9m2024/06/05
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

কিভাবে Google Gemini API ব্যবহার করে একটি LLM অ্যাপ্লিকেশন তৈরি করতে হয় তার একটি টিউটোরিয়াল, এবং তারপর সেই অ্যাপ্লিকেশনটি Heroku-এ স্থাপন করুন৷
featured image - Google মিথুন দিয়ে কীভাবে একটি LLM অ্যাপ্লিকেশন তৈরি করবেন
Alvin Lee HackerNoon profile picture

মনে হচ্ছে এলএলএম-এর সাথে উদ্ভাবনের অফুরন্ত সম্ভাবনা রয়েছে। আপনি যদি আমার মতো হন, আপনি GenAI অ্যাপ্লিকেশন এবং টুল ব্যবহার করেছেন — যেমন ChatGPT বিল্ট ইন এক্সপিডিয়া, কোড লেখার জন্য কপিলট, এমনকি ছবি তৈরি করার জন্য DALL-E। কিন্তু একজন প্রযুক্তিবিদ হিসেবে, আমি শুধু এলএলএম-ভিত্তিক টুল ব্যবহার করার চেয়ে আরও বেশি কিছু করতে চাই। আমি আমার নিজস্ব নির্মাণ করতে চাই.


আমি DALL-E কে বলেছিলাম "একজন কম্পিউটার প্রোগ্রামারের একটি জলরঙ তৈরি করুন যা তিনি LLMs দিয়ে তৈরি করতে পারেন এমন সমস্ত জিনিস সম্পর্কে চিন্তা করে।" হ্যাঁ, এটি বেশ স্পট-অন।


সমস্ত নতুন প্রযুক্তির সাথে, একজন নির্মাতা হওয়া মানে সহজ শুরু করা। আমি যে কোনো নতুন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখছি বা যে কোনো নতুন ফ্রেমওয়ার্ক আমি পরীক্ষা করছি। এলএলএম দিয়ে বিল্ডিং আলাদা নয়। সুতরাং, যে আমি এখানে মাধ্যমে হেঁটে যাচ্ছি কি. আমি একটি দ্রুত এবং নোংরা API তৈরি করতে যাচ্ছি যা Google Gemini-এর সাথে ইন্টারঅ্যাক্ট করে, কার্যকরভাবে আমাকে আমার নিজের একটি ছোট চ্যাটবট সহকারী দেয়।


আমরা যা করব তা এখানে:


  1. সংক্ষেপে Google Gemini পরিচয় করিয়ে দিন।
  2. একটি সাধারণ Node.js অ্যাপ্লিকেশন তৈরি করুন।
  3. Heroku এ অ্যাপ্লিকেশনটি স্থাপন করুন।
  4. এটা পরীক্ষা করো.

গুগল মিথুন কি?

বেশিরভাগ দৈনন্দিন ভোক্তারা ChatGPT সম্পর্কে জানেন, যা GPT-4 LLM-এ নির্মিত। কিন্তু যখন এলএলএম-এর কথা আসে, GPT-4 শহরে একমাত্র খেলা নয়। এছাড়াও রয়েছে গুগল জেমিনি (যা আগে বার্ড নামে পরিচিত ছিল)। বেশিরভাগ পারফরম্যান্স বেঞ্চমার্ক জুড়ে (যেমন মাল্টি-ডিসিপ্লিন কলেজ-লেভেল রিজনিং সমস্যা বা পাইথন কোড জেনারেশন), জেমিনি GPT-4 কে ছাড়িয়ে যায়।


মিথুন নিজের সম্পর্কে কী বলে?


বিকাশকারী হিসাবে, আমরা Google AI স্টুডিওতে Gemini API এর মাধ্যমে Gemini অ্যাক্সেস করতে পারি। এছাড়াও পাইথন , জাভাস্ক্রিপ্ট , সুইফট এবং অ্যান্ড্রয়েডের জন্য SDK পাওয়া যায়।


ঠিক আছে. চলুন বিল্ডিং পেতে.

Node.js অ্যাপ্লিকেশন তৈরি করুন

আমাদের Node.js অ্যাপ্লিকেশনটি একটি সাধারণ এক্সপ্রেস API সার্ভার হবে যা একটি জেমিনি চ্যাটবটের মতো কাজ করে। এটি দুটি শেষ পয়েন্টে শুনবে। প্রথমে, /chat জন্য একটি POST অনুরোধ (যাতে একটি message অ্যাট্রিবিউট সহ একটি JSON পেলোড অন্তর্ভুক্ত থাকবে) বার্তাটি মিথুনকে পাঠাবে এবং তারপর প্রতিক্রিয়াটি ফেরত দেবে৷ আমাদের অ্যাপ্লিকেশনটি মিথুনের সাথে একটি চলমান চ্যাট কথোপকথন রাখবে। এটি আমাদের চ্যাটবটকে একটি সহায়ক সহকারীতে পরিণত করে যারা আমাদের জন্য নোটগুলি ধরে রাখতে পারে।


দ্বিতীয়ত, যদি আমরা /reset -এ একটি POST অনুরোধ পাঠাই, তাহলে এটি চ্যাট কথোপকথনটি স্ক্র্যাচ থেকে শুরু করতে পুনরায় সেট করবে, কার্যকরভাবে আমাদের সাথে মিথুনের পূর্ববর্তী মিথস্ক্রিয়াগুলির স্মৃতি মুছে ফেলবে।


আপনি যদি এই কোড ওয়াকথ্রুটি এড়িয়ে যেতে চান তবে আপনি এখানে আমার GitHub রেপোতে সমস্ত কোড দেখতে পারেন।

আবেদন আরম্ভ করুন

শুরু করার জন্য, আমরা আমাদের 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() কে কল করি, যা একটি নতুন ChatSession ইন্সট্যান্স তৈরি করে যাকে Google বহু-পালা কথোপকথন বলে।


 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 রয়েছে। আমরা আমাদের chat অবজেক্ট ব্যবহার করি মিথুনকে সেই বার্তা পাঠাতে। তারপর, আমরা মিথুন থেকে প্রতিক্রিয়া পাঠ্য সহ আমাদের 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-এর সাথে আমাদের ইন্টারঅ্যাকশনের একটি সংরক্ষিত, চলমান ইতিহাস রয়েছে। মিথুনকে আমাদের কথোপকথনের একটি "স্মৃতি" দেওয়া প্রসঙ্গের জন্য সহায়ক।


কিন্তু আপনি যদি চান যে মিথুন সম্পূর্ণভাবে আবার শুরু করুক এবং আগের সমস্ত প্রসঙ্গ ভুলে যাক? এই জন্য, আমাদের /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 এ একটি অনুরোধ পাঠাতে পারে। একটি প্রোডাকশন সেটআপে, আমাদের যথাযথ প্রমাণীকরণ থাকবে এবং প্রতিটি ব্যবহারকারীর মিথুনের সাথে কথোপকথনের নিজস্ব উদাহরণ থাকবে যা অন্য কেউ পরিচালনা করতে পারবে না।

একটি Gemini API কী প্রাপ্ত করা

এই মুহুর্তে, আমরা যেতে প্রায় প্রস্তুত. জেমিনি এপিআই অ্যাক্সেস করার জন্য আমাদের শেষ জিনিসটি হল একটি API কী। একটি API কী পেতে, একটি Google AI for Developers অ্যাকাউন্টে সাইন আপ করে শুরু করুন৷


একবার আপনি লগ ইন হয়ে গেলে, একটি নতুন Google Gemini প্রকল্প শুরু করতে Google AI স্টুডিও লঞ্চ করুন নির্বাচন করুন৷



প্রকল্পের মধ্যে, API কী পৃষ্ঠাতে নেভিগেট করতে Get API কী- তে ক্লিক করুন। তারপরে, একটি কী তৈরি করতে API কী তৈরি করুন- এ ক্লিক করুন। মান কপি করুন।


আপনার প্রজেক্টে, .env.template নামক ফাইলটিকে .env নামে একটি নতুন ফাইল হিসাবে অনুলিপি করুন। আপনার Gemini 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


আমরা এই ফাইলটি আমাদের কোডবেস রেপোতে কমিট করি।

Heroku এ লগ ইন করুন (CLI এর মাধ্যমে)

 ~/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

কনফিগ এনভায়রনমেন্ট ভেরিয়েবল হিসাবে Gemini API কী যোগ করুন

 ~/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.


উপসংহার

এলএলএম-ভিত্তিক অ্যাপ্লিকেশন তৈরি করার জন্য এখন একটি দুর্দান্ত সময়। ঢেউ চালান!


Google Gemini-এর উপরে কীভাবে একটি সাধারণ LLM-ভিত্তিক অ্যাপ্লিকেশন তৈরি করা যায় তা আমরা দেখেছি। আমাদের সাধারণ চ্যাটবট সহকারী মৌলিক, কিন্তু এটি Gemini API এবং এর সাথে সম্পর্কিত SDK-এর সাথে নিজেকে পরিচিত করার একটি দুর্দান্ত উপায়। এবং স্থাপনার জন্য Heroku ব্যবহার করে, আপনি সেকেন্ডারি উদ্বেগগুলি অফলোড করতে পারেন যাতে আপনি শেখার এবং যেখানে এটি গণনা করা হয় সেখানে ফোকাস করতে পারেন।