Firebase AI Logic ব্যবহার করে হাইব্রিড ইনফারেন্সের মাধ্যমে এআই-চালিত ওয়েব অ্যাপ এবং ফিচার তৈরি করুন। হাইব্রিড ইনফারেন্সের সাহায্যে, ডিভাইসে উপলব্ধ মডেল ব্যবহার করে ইনফারেন্স চালানো যায় এবং অন্যথায় এটি নির্বিঘ্নে ক্লাউড-হোস্টেড মডেলে ফিরে যেতে পারে (এবং এর বিপরীতটিও সম্ভব)।
এই পৃষ্ঠায় ক্লায়েন্ট SDK ব্যবহার শুরু করার পদ্ধতি বর্ণনা করা হয়েছে। এই সাধারণ সেটআপটি সম্পন্ন করার পর, অতিরিক্ত কনফিগারেশন বিকল্প এবং সক্ষমতাগুলো (যেমন স্ট্রাকচার্ড আউটপুট) দেখে নিন।
উল্লেখ্য যে, ডেস্কটপে ক্রোমে চালিত ওয়েব অ্যাপগুলোর জন্য অন-ডিভাইস ইনফারেন্স সমর্থিত।
সুপারিশকৃত ব্যবহারের ক্ষেত্র এবং সমর্থিত সক্ষমতা
সুপারিশকৃত ব্যবহারের ক্ষেত্রসমূহ:
ইনফারেন্সের জন্য অন-ডিভাইস মডেল ব্যবহারের সুবিধাগুলো হলো:
- উন্নত গোপনীয়তা
- স্থানীয় প্রেক্ষাপট
- বিনা খরচে অনুমান
- অফলাইন কার্যকারিতা
হাইব্রিড কার্যকারিতা ব্যবহারের সুবিধা:
- ডিভাইসে মডেলের প্রাপ্যতা বা ইন্টারনেট সংযোগ নির্বিশেষে আপনার শতভাগ দর্শকের কাছে পৌঁছান।
অন-ডিভাইস ইনফারেন্সের জন্য সমর্থিত সক্ষমতা এবং বৈশিষ্ট্যসমূহ:
অন-ডিভাইস ইনফারেন্স শুধুমাত্র একক-টার্ন টেক্সট জেনারেশন (চ্যাট নয় ) সমর্থন করে, যার আউটপুট স্ট্রিমিং বা নন-স্ট্রিমিং হতে পারে। এটি নিম্নলিখিত টেক্সট-জেনারেটর ক্ষমতাগুলো সমর্থন করে:
শুধুমাত্র টেক্সট ইনপুট থেকে টেক্সট তৈরি করা
টেক্সট এবং ইমেজ ইনপুট থেকে টেক্সট তৈরি করা, বিশেষত JPEG এবং PNG ধরনের ইনপুট ইমেজ থেকে।
আপনি JSON এবং enum সহ কাঠামোগত আউটপুটও তৈরি করতে পারেন।
শুরু করার আগে
নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:
অন-ডিভাইস মডেল ব্যবহার করে ইনফারেন্সের জন্য ক্রোমের প্রম্পট এপিআই (Prompt API ) ব্যবহৃত হয়; অপরদিকে, ক্লাউড-হোস্টেড মডেল ব্যবহার করে ইনফারেন্সের জন্য আপনার নির্বাচিত জেমিনি এপিআই প্রোভাইডার ( জেমিনি ডেভেলপার এপিআই অথবা ভার্টেক্স এআই জেমিনি এপিআই ) ব্যবহৃত হয়।
এই পৃষ্ঠায় বর্ণনা করা হয়েছে কীভাবে লোকালহোস্ট ব্যবহার করে ডেভেলপমেন্ট শুরু করতে হয় ( লোকালহোস্টে এপিআই ব্যবহার সম্পর্কে আরও জানতে ক্রোম ডকুমেন্টেশন দেখুন)।
এই স্ট্যান্ডার্ড সেটআপটি সম্পন্ন করার পর, অতিরিক্ত কনফিগারেশন অপশন এবং সক্ষমতাগুলো (যেমন স্ট্রাকচার্ড আউটপুট) দেখে নিন।
আপনার ফিচারটি বাস্তবায়ন করার পর, আপনি আপনার মূল অ্যাপে ব্যবহারকারীদেরকে ফিচারটি পরখ করার সুযোগ দিতে পারেন।
লোকালহোস্টে শুরু করুন
এই প্রারম্ভিক ধাপগুলোতে আপনার পাঠাতে চাওয়া যেকোনো সমর্থিত প্রম্পট অনুরোধের জন্য প্রয়োজনীয় সাধারণ সেটআপ বর্ণনা করা হয়েছে।
ধাপ ১ : ডিভাইসে ইনফারেন্সের জন্য ক্রোম এবং প্রম্পট এপিআই সেট আপ করুন।
নিশ্চিত করুন যে আপনি ক্রোমের সাম্প্রতিক সংস্করণ ব্যবহার করছেন। chrome://settings/help থেকে আপডেট করুন।
ক্রোম সংস্করণ ১৩৯ এবং তার পরবর্তী সংস্করণগুলো থেকে ডিভাইসেই ইনফারেন্স সুবিধাটি পাওয়া যায়।নিম্নলিখিত ফ্ল্যাগটিকে 'Enabled'- এ সেট করে অন-ডিভাইস মাল্টিমোডাল মডেলটি সক্রিয় করুন:
-
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
-
ক্রোম পুনরায় চালু করুন।
(ঐচ্ছিক) প্রথম অনুরোধের আগে ডিভাইসে থাকা মডেলটি ডাউনলোড করুন।
প্রম্পট এপিআই ক্রোমের সাথে বিল্ট-ইন থাকে; তবে, অন-ডিভাইস মডেলটি ডিফল্টভাবে উপলব্ধ নয়। আপনি যদি অন-ডিভাইস ইনফারেন্সের জন্য আপনার প্রথম অনুরোধের আগে মডেলটি ডাউনলোড না করে থাকেন, তাহলে অনুরোধটি স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে মডেল ডাউনলোড শুরু করে দেবে।
ডেভেলপার টুলস > কনসোল খুলুন।
নিম্নলিখিতটি চালান:
await LanguageModel.availability();নিশ্চিত করুন যে আউটপুটটি
available,downloading, বাdownloadable।আউটপুটটি
downloadableহলে, নিম্নলিখিত কমান্ডটি চালিয়ে মডেল ডাউনলোড শুরু করুন:await LanguageModel.create();ডাউনলোডের অগ্রগতি শোনার জন্য এবং অনুরোধ করার আগে মডেলটি
availableকিনা তা নিশ্চিত করতে আপনি নিম্নলিখিতmonitorকলব্যাকটি ব্যবহার করতে পারেন:const session = await LanguageModel.create({ monitor(m) { m.addEventListener("downloadprogress", (e) => { console.log(`Downloaded ${e.loaded * 100}%`); }); }, });
ধাপ ২ : একটি ফায়ারবেস প্রজেক্ট সেট আপ করুন এবং আপনার অ্যাপটিকে ফায়ারবেসের সাথে সংযুক্ত করুন।
Firebase কনসোলে সাইন ইন করুন এবং তারপরে আপনার ফায়ারবেস প্রজেক্টটি নির্বাচন করুন।
আপনার যদি আগে থেকে কোনো ফায়ারবেস প্রজেক্ট না থাকে, তাহলে একটি নতুন ফায়ারবেস প্রজেক্ট তৈরি করতে বাটনটিতে ক্লিক করুন এবং তারপর নিচের বিকল্পগুলোর যেকোনো একটি ব্যবহার করুন:
বিকল্প ১ : ওয়ার্কফ্লো-এর প্রথম ধাপে একটি নতুন প্রজেক্টের নাম লিখে একটি সম্পূর্ণ নতুন Firebase প্রজেক্ট তৈরি করুন (এবং এর অধীনস্থ Google Cloud প্রজেক্টটিও স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে)।
বিকল্প ২ : একটি বিদ্যমান Google Cloud প্রজেক্টে ফায়ারবেস যোগ করতে (পৃষ্ঠার নীচে থাকা) ‘ Add Firebase to Google Cloud project’-এ ক্লিক করুন। ওয়ার্কফ্লো-এর প্রথম ধাপে, বিদ্যমান প্রজেক্টটির নাম লেখা শুরু করুন এবং তারপরে প্রদর্শিত তালিকা থেকে প্রজেক্টটি নির্বাচন করুন।
একটি Firebase প্রজেক্ট তৈরি করতে স্ক্রিনে দেখানো ওয়ার্কফ্লো-এর বাকি ধাপগুলো সম্পূর্ণ করুন। মনে রাখবেন, অনুরোধ করা হলে Firebase AI Logic SDK-গুলো ব্যবহার করার জন্য আপনাকে Google Analytics সেট আপ করতে হবে না ।
Firebase কনসোলে, Firebase AI Logic পৃষ্ঠায় যান।
আপনার প্রোজেক্টের জন্য প্রয়োজনীয় এপিআই ও রিসোর্স সেট আপ করতে সাহায্যকারী একটি নির্দেশিত ওয়ার্কফ্লো চালু করতে 'Get started'- এ ক্লিক করুন।
আপনার প্রজেক্টটি একটি ' Gemini API ' প্রোভাইডার ব্যবহার করার জন্য সেট আপ করুন।
আমরা জেমিনি ডেভেলপার এপিআই (Gemini Developer API) ব্যবহার করে কাজ শুরু করার পরামর্শ দিই। আপনি যেকোনো সময়ে ভার্টেক্স এআই জেমিনি এপিআই ( Vertex AI Gemini API) (এবং বিলিংয়ের জন্য এর প্রয়োজনীয়তা) সেট আপ করে নিতে পারেন।
জেমিনি ডেভেলপার এপিআই- এর জন্য, কনসোলটি প্রয়োজনীয় এপিআইগুলো সক্রিয় করবে এবং আপনার প্রোজেক্টে একটি জেমিনি এপিআই কী তৈরি করবে।
এই জেমিনি এপিআই কী-টি আপনার অ্যাপের কোডবেসে যোগ করবেন না । আরও জানুন।কনসোলের ওয়ার্কফ্লোতে নির্দেশ দেওয়া হলে, আপনার অ্যাপটি রেজিস্টার করতে এবং ফায়ারবেসের সাথে সংযুক্ত করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
আপনার অ্যাপে SDK যোগ করতে এই নির্দেশিকার পরবর্তী ধাপে যান।
ধাপ ৩ : SDK যোগ করুন
ফায়ারবেস লাইব্রেরিটি জেনারেটিভ মডেলের সাথে ইন্টারঅ্যাক্ট করার জন্য এপিআই-গুলোতে অ্যাক্সেস প্রদান করে। লাইব্রেরিটি ওয়েবের জন্য ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে-র অংশ হিসেবে অন্তর্ভুক্ত রয়েছে।
npm ব্যবহার করে Firebase JS SDK for Web ইনস্টল করুন:
npm install firebaseআপনার অ্যাপে Firebase চালু করুন:
import { initializeApp } from "firebase/app"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);
ধাপ ৪ : পরিষেবাটি চালু করুন এবং একটি মডেল ইনস্ট্যান্স তৈরি করুন।
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন। |
মডেলে প্রম্পট অনুরোধ পাঠানোর আগে নিম্নলিখিত বিষয়গুলো সেট আপ করে নিন।
আপনার নির্বাচিত এপিআই প্রোভাইডারের জন্য পরিষেবাটি চালু করুন।
একটি
GenerativeModelইনস্ট্যান্স তৈরি করুন। নিম্নলিখিত বিষয়গুলো নিশ্চিত করুন:ব্যবহারকারীর কোনো ইন্টারঅ্যাকশনের (যেমন বোতামে ক্লিক) পরে বা সেই মুহূর্তে
getGenerativeModelকল করুন। এটিinferenceModeজন্য একটি পূর্বশর্ত।modeনিম্নলিখিতগুলির মধ্যে একটিতে সেট করুন:PREFER_ON_DEVICE: ডিভাইসে-ভিত্তিক মডেলটি উপলব্ধ থাকলে সেটি ব্যবহার করুন; অন্যথায়, ক্লাউড-হোস্টেড মডেলে ফিরে যান ।ONLY_ON_DEVICE: ডিভাইসে থাকা মডেলটি উপলব্ধ থাকলে সেটি ব্যবহার করুন; অন্যথায়, একটি ব্যতিক্রম (exception) দেখান ।PREFER_IN_CLOUD: ক্লাউড-হোস্টেড মডেলটি উপলব্ধ থাকলে সেটি ব্যবহার করুন; অন্যথায়, অন-ডিভাইস মডেলে ফিরে যান ।ONLY_IN_CLOUD: ক্লাউড-হোস্টেড মডেলটি উপলব্ধ থাকলে সেটি ব্যবহার করুন; অন্যথায়, একটি এক্সেপশন থ্রো করুন ।
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, InferenceMode } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance
// Call `getGenerativeModel` after or on an end-user interaction
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
ধাপ ৫ : একজন মডেলকে একটি প্রম্পট অনুরোধ পাঠান
এই বিভাগে দেখানো হয়েছে কীভাবে বিভিন্ন ধরণের ইনপুট পাঠিয়ে নানা ধরণের আউটপুট তৈরি করা যায়, যার মধ্যে রয়েছে:
আপনি যদি কাঠামোগত আউটপুট (যেমন JSON বা enum) তৈরি করতে চান, তাহলে নিম্নলিখিত 'টেক্সট তৈরি করুন' উদাহরণগুলির মধ্যে একটি ব্যবহার করুন এবং এর পাশাপাশি প্রদত্ত স্কিমা অনুযায়ী সাড়া দেওয়ার জন্য মডেলটিকে কনফিগার করুন ।
শুধুমাত্র টেক্সট ইনপুট থেকে টেক্সট তৈরি করুন
| এই নমুনাটি চেষ্টা করার আগে, নিশ্চিত করুন যে আপনি এই নির্দেশিকার ' শুরু করুন' অংশটি সম্পূর্ণ করেছেন। |
আপনি generateContent() ব্যবহার করে টেক্সট ধারণকারী কোনো প্রম্পট থেকে টেক্সট তৈরি করতে পারেন:
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
const prompt = "Write a story about a magic backpack."
// To generate text output, call `generateContent` with the text input
const result = await model.generateContent(prompt);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
উল্লেখ্য যে, Firebase AI Logic generateContentStream ব্যবহার করে টেক্সট রেসপন্স স্ট্রিমিং করাও সমর্থন করে ( generateContent এর পরিবর্তে)।
টেক্সট ও ছবি (মাল্টিমোডাল) ইনপুট থেকে টেক্সট তৈরি করুন
| এই নমুনাটি চেষ্টা করার আগে, নিশ্চিত করুন যে আপনি এই নির্দেশিকার ' শুরু করুন' অংশটি সম্পূর্ণ করেছেন। |
আপনি generateContent() ব্যবহার করে এমন একটি প্রম্পট থেকে টেক্সট তৈরি করতে পারেন, যেখানে টেক্সট এবং ইমেজ ফাইল রয়েছে—এর জন্য প্রতিটি ইনপুট ফাইলের mimeType এবং ফাইলটি নিজেই প্রদান করতে হবে।
ডিভাইসে ইনফারেন্সের জন্য সমর্থিত ইনপুট ছবির ধরণগুলো হলো PNG এবং JPEG।
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the image
const prompt = "Write a poem about this picture:";
const fileInputEl = document.querySelector("input[type=file]");
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call `generateContent` with the text and image
const result = await model.generateContent([prompt, imagePart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
উল্লেখ্য যে, Firebase AI Logic generateContentStream ব্যবহার করে টেক্সট রেসপন্স স্ট্রিমিং করাও সমর্থন করে ( generateContent এর পরিবর্তে)।
ব্যবহারকারীদের আপনার ফিচারটি পরখ করে দেখার সুযোগ দিন।
আপনার অ্যাপে ব্যবহারকারীরা যাতে আপনার ফিচারটি ব্যবহার করে দেখতে পারেন, তার জন্য আপনাকে অবশ্যই Chrome Origin Trials-এ নথিভুক্ত হতে হবে। মনে রাখবেন, এই ট্রায়ালগুলোর একটি সীমিত সময়কাল এবং ব্যবহারের সীমা রয়েছে।
Prompt API Chrome Origin Trial-এর জন্য নিবন্ধন করুন। আপনাকে একটি টোকেন দেওয়া হবে।
যেসব ওয়েব পেজে আপনি ট্রায়াল ফিচারটি চালু করতে চান, সেগুলোর প্রতিটিতে টোকেনটি প্রদান করুন। নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করুন:
<head>ট্যাগের মধ্যে টোকেনটি একটি মেটা ট্যাগ হিসেবে প্রদান করুন:<meta http-equiv="origin-trial" content=" TOKEN ">টোকেনটি একটি HTTP হেডার হিসেবে প্রদান করুন:
Origin-Trial: TOKENপ্রোগ্রামের মাধ্যমে টোকেনটি প্রদান করুন।
তুমি আর কী করতে পারো?
আপনার হাইব্রিড অভিজ্ঞতার জন্য আপনি বিভিন্ন অতিরিক্ত কনফিগারেশন বিকল্প এবং সক্ষমতা ব্যবহার করতে পারেন:
ডিভাইসে ইনফারেন্সের জন্য বৈশিষ্ট্যগুলি এখনও উপলব্ধ নয়
একটি প্রিভিউ রিলিজ হওয়ায়, ওয়েব এসডিকে-এর সমস্ত সক্ষমতা অন-ডিভাইস ইনফারেন্সের জন্য উপলব্ধ নয়। নিম্নলিখিত ফিচারগুলো এখনও অন-ডিভাইস ইনফারেন্সের জন্য সমর্থিত নয় (কিন্তু এগুলো সাধারণত ক্লাউড-ভিত্তিক ইনফারেন্সের জন্য উপলব্ধ থাকে)।
JPEG এবং PNG ব্যতীত অন্যান্য ইমেজ ফাইল ইনপুট টাইপ থেকে টেক্সট তৈরি করা
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
ONLY_ON_DEVICEমোড একটি ত্রুটি দেখাবে।
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
অডিও, ভিডিও এবং ডকুমেন্ট (যেমন পিডিএফ) ইনপুট থেকে টেক্সট তৈরি করা
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
ONLY_ON_DEVICEমোড একটি ত্রুটি দেখাবে।
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
জেমিনি বা ইমাজেন মডেল ব্যবহার করে ছবি তৈরি করা
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
ONLY_ON_DEVICEমোড একটি ত্রুটি দেখাবে।
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
মাল্টিমোডাল অনুরোধে ইউআরএল ব্যবহার করে ফাইল সরবরাহ করা। আপনাকে অবশ্যই অন-ডিভাইস মডেলগুলিতে ফাইলগুলি ইনলাইন ডেটা হিসাবে সরবরাহ করতে হবে।
মাল্টি-টার্ন চ্যাট
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
ONLY_ON_DEVICEমোড একটি ত্রুটি দেখাবে।
- ক্লাউড-হোস্টেড মডেলে ফিরে যাওয়া যেতে পারে; তবে,
Gemini Live API -এর মাধ্যমে দ্বিমুখী স্ট্রিমিং
মডেলটিকে তার প্রতিক্রিয়া তৈরি করতে সাহায্য করার জন্য সরঞ্জাম সরবরাহ করা (যেমন ফাংশন কলিং, কোড এক্সিকিউশন, ইউআরএল কনটেক্সট, এবং গুগল সার্চের সাথে সংযোগ স্থাপন)।
টোকেন গণনা করুন
- সর্বদা একটি ত্রুটি দেখায়। ক্লাউড-হোস্টেড এবং অন-ডিভাইস মডেলের মধ্যে সংখ্যাটি ভিন্ন হবে, তাই এর কোনো সহজ বিকল্প ব্যবস্থা নেই।
অন-ডিভাইস ইনফারেন্সের জন্য Firebase কনসোলে এআই মনিটরিং।
- উল্লেখ্য যে, ক্লাউড-হোস্টেড মডেল ব্যবহার করে করা যেকোনো ইনফারেন্স, ওয়েবের জন্য Firebase AI Logic ক্লায়েন্ট SDK ব্যবহার করে অন্যান্য ইনফারেন্সের মতোই পর্যবেক্ষণ করা যেতে পারে।
Firebase AI Logic ব্যবহারের অভিজ্ঞতা সম্পর্কে মতামত দিন।