Firebase AI Logic का इस्तेमाल करके, हाइब्रिड इन्फ़्रेंस की मदद से एआई की सुविधाओं वाले वेब ऐप्लिकेशन और सुविधाएं बनाएं. हाइब्रिड इन्फ़्रेंस की मदद से, डिवाइस पर मौजूद मॉडल उपलब्ध होने पर, उनका इस्तेमाल करके इन्फ़्रेंस चलाया जा सकता है. साथ ही, ज़रूरत पड़ने पर क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. इसके अलावा, क्लाउड पर होस्ट किए गए मॉडल उपलब्ध होने पर, उनका इस्तेमाल करके इन्फ़्रेंस चलाया जा सकता है और ज़रूरत पड़ने पर डिवाइस पर मौजूद मॉडल का इस्तेमाल किया जा सकता है.
इस पेज पर, क्लाइंट एसडीके का इस्तेमाल शुरू करने का तरीका बताया गया है. इस स्टैंडर्ड सेटअप को पूरा करने के बाद, कॉन्फ़िगरेशन के अन्य विकल्प और सुविधाएं देखें. जैसे, स्ट्रक्चर्ड आउटपुट.
ध्यान दें कि उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा, डेस्कटॉप पर Chrome में चलने वाले वेब ऐप्लिकेशन के लिए काम करती है.
इस्तेमाल के सुझाए गए उदाहरण और उपलब्ध सुविधाएं
इसे कैसे इस्तेमाल करना चाहिए:
अनुमान लगाने के लिए, उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने से ये फ़ायदे मिलते हैं:
- बेहतर निजता
- लोकल कॉन्टेक्स्ट
- बिना किसी शुल्क के अनुमान लगाने की सुविधा
- ऑफ़लाइन काम करने की सुविधा
हाइब्रिड फ़ंक्शन का इस्तेमाल करने से ये फ़ायदे मिलते हैं:
- अपनी 100% ऑडियंस तक पहुंचें. भले ही, उपयोगकर्ता के डिवाइस पर मॉडल उपलब्ध हो या न हो या इंटरनेट कनेक्टिविटी हो या न हो
उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के साथ काम करने वाली क्षमताएं और सुविधाएं:
उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा, सिर्फ़ एक बार में टेक्स्ट जनरेट करने (चैट नहीं) के लिए काम करती है. इसमें स्ट्रीमिंग या नॉन-स्ट्रीमिंग आउटपुट का इस्तेमाल किया जा सकता है. यह टेक्स्ट जनरेट करने की इन सुविधाओं के साथ काम करता है:
सिर्फ़ टेक्स्ट वाले इनपुट से टेक्स्ट जनरेट करना
खास तौर पर, टेक्स्ट और इमेज इनपुट से टेक्स्ट जनरेट करना. इसमें JPEG और PNG टाइप की इमेज शामिल हैं
इसके अलावा, JSON और enum के साथ-साथ स्ट्रक्चर्ड आउटपुट भी जनरेट किया जा सकता है.
शुरू करने से पहले
इन बातों का ध्यान रखें:
उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करके अनुमान लगाने के लिए, Chrome के Prompt API का इस्तेमाल किया जाता है. वहीं, क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करके अनुमान लगाने के लिए, आपके चुने गए Gemini API प्रोवाइडर (Gemini Developer API या Agent Platform Gemini API (formerly Vertex AI)) का इस्तेमाल किया जाता है.
इस पेज पर, लोकलहोस्ट का इस्तेमाल करके डेवलपमेंट शुरू करने का तरीका बताया गया है. Chrome के दस्तावेज़ में, लोकलहोस्ट पर एपीआई इस्तेमाल करने के बारे में ज़्यादा जानें.
इस स्टैंडर्ड सेटअप को पूरा करने के बाद, कॉन्फ़िगरेशन के अन्य विकल्प और सुविधाएं देखें. जैसे, स्ट्रक्चर्ड आउटपुट.
लोकलहोस्ट पर इस्तेमाल शुरू करना
शुरू करने के इन चरणों में, किसी भी तरह के प्रॉम्प्ट अनुरोध को भेजने के लिए ज़रूरी सामान्य सेटअप के बारे में बताया गया है.
पहला चरण: उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए, Chrome और Prompt API को सेट अप करना
पक्का करें कि Chrome के नए वर्शन का इस्तेमाल किया जा रहा हो. chrome://settings/help में जाकर अपडेट करें.
उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा, Chrome के v139 और इसके बाद के वर्शन पर उपलब्ध है.उपयोगकर्ता के डिवाइस पर मौजूद मल्टीमॉडल मॉडल को चालू करने के लिए, इस फ़्लैग को चालू है पर सेट करें:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
Chrome को रीस्टार्ट करें.
(ज़रूरी नहीं) पहला अनुरोध करने से पहले, उपयोगकर्ता के डिवाइस पर मौजूद मॉडल को डाउनलोड करें.
Prompt API, Chrome में पहले से मौजूद होता है. हालांकि, उपयोगकर्ता के डिवाइस पर मौजूद मॉडल डिफ़ॉल्ट रूप से उपलब्ध नहीं होता. अगर आपने उपयोगकर्ता के डिवाइस पर अनुमान लगाने के पहले अनुरोध से पहले मॉडल डाउनलोड नहीं किया है, तो अनुरोध करने पर बैकग्राउंड में मॉडल अपने-आप डाउनलोड होने लगेगा.
दूसरा चरण: Firebase प्रोजेक्ट सेट अप करना और अपने ऐप्लिकेशन को Firebase से कनेक्ट करना
Firebase कंसोल में साइन इन करें. इसके बाद, अपना Firebase प्रोजेक्ट चुनें.
Firebase कंसोल में, एआई सेवाएं > एआई लॉजिक पर जाएं.
निर्देशों के साथ काम करने वाला वर्कफ़्लो लॉन्च करने के लिए, शुरू करें पर क्लिक करें. इससे आपको अपने प्रोजेक्ट के लिए, ज़रूरी एपीआई और संसाधन सेट अप करने में मदद मिलेगी.
अगर कहा जाए, तो स्क्रीन पर दिए गए निर्देशों का पालन करके, अपने ऐप्लिकेशन को रजिस्टर करें और उसमें Firebase कॉन्फ़िगरेशन जोड़ें.
"Gemini API की सेवा देने वाली कंपनी" चुनने के लिए कहे जाने पर, हमारा सुझाव है कि आप Gemini Developer API को चुनें. इससे आपको बिना किसी शुल्क के तुरंत शुरुआत करने में मदद मिलती है.
आपके पास बाद में किसी भी समय, Agent Platform Gemini API (formerly Vertex AI) को सेट अप करने का विकल्प होता है. साथ ही, बिलिंग के लिए ज़रूरी जानकारी भी जोड़ी जा सकती है.
Firebase AI Logic के लिए ज़रूरी एपीआई और उनसे जुड़ी सेवाएं सेट अप करने के लिए, वर्कफ़्लो में आगे बढ़ें.
वर्कफ़्लो का यह चरण, AI Logic के लिए Firebase App Check को अपने-आप लागू करता है. यह एक ज़रूरी सेवा है, जो आपके ऐप्लिकेशन से सीधे ऐक्सेस किए जाने पर Gemini API को सुरक्षित रखने में मदद करती है. शुरू करने के लिए (इस गाइड में बाद में दिए गए चरण देखें), आपको लोकल डेवलपमेंट के लिए App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना होगा. ऐसा तब करना होगा, जब App Check लागू हो.
अपने ऐप्लिकेशन में ज़रूरी एसडीके जोड़ने के लिए, इस गाइड में दिए गए अगले चरण पर जाएं.
तीसरा चरण: SDK टूल जोड़ना
Firebase लाइब्रेरी, जनरेटिव मॉडल के साथ इंटरैक्ट करने के लिए एपीआई का ऐक्सेस देती है. यह लाइब्रेरी, वेब के लिए Firebase JavaScript SDK के हिस्से के तौर पर शामिल है.
npm का इस्तेमाल करके, वेब के लिए Firebase JS SDK टूल इंस्टॉल करें:
npm install firebaseअपने ऐप्लिकेशन में Firebase को शुरू करें:
import { initializeApp } from "firebase/app"; import { initializeAppCheck } from "firebase/app-check"; // 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);
चौथा चरण: लोकल डेवलपमेंट के लिए, App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना
कंसोल में AI Logic के लिए, सेटअप वर्कफ़्लो के तहत Firebase App Check को अपने-आप लागू किया जाता है, ताकि Gemini API को सुरक्षित रखा जा सके. लोकल डेवलपमेंट के लिए, आपको App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना होगा, ताकि पुष्टि की प्रोसेस को बायपास किया जा सके. हालांकि, इस दौरान App Check को लागू करना जारी रखना होगा.
localhost से इंटरैक्टिव तरीके से ऐप्लिकेशन चलाते समय, डीबग प्रोवाइडर का इस्तेमाल करने का तरीका यहां बताया गया है. उदाहरण के लिए, लोकल डेवलपमेंट के दौरान:
App Check को शुरू करने से पहले, डीबग के लिए बिल्ड में डीबग मोड चालू करें. इसके लिए,
self.FIREBASE_APPCHECK_DEBUG_TOKENकोtrueपर सेट करें. उदाहरण के लिए:self.FIREBASE_APPCHECK_DEBUG_TOKEN = true; initializeAppCheck(firebaseApp, { /* App Check options */ });अपने वेब ऐप्लिकेशन को स्थानीय तौर पर ऐक्सेस करें और ब्राउज़र के डेवलपर टूल खोलें. डीबग कंसोल में, आपको एक डीबग टोकन दिखेगा:
AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678". You will need to safelist it in the Firebase console for it to work.App Check पर अपना डीबग टोकन रजिस्टर करें:
Firebase कंसोल में, सुरक्षा > App Check > ऐप्लिकेशन टैब पर जाएं.
अपना ऐप्लिकेशन ढूंढें और ओवरफ़्लो मेन्यू () पर क्लिक करें. इसके बाद, डीबग टोकन मैनेज करें को चुनें.
डीबग टोकन को रजिस्टर करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
डीबग प्रोवाइडर के बारे में ज़्यादा जानने के लिए, आधिकारिक App Check दस्तावेज़ देखें. इसमें नया डीबग टोकन पाने का तरीका भी बताया गया है.
पांचवां चरण: सेवा को शुरू करना और मॉडल इंस्टेंस बनाना
|
इस पेज पर, Gemini API की सेवा देने वाली कंपनी के हिसाब से कॉन्टेंट और कोड देखने के लिए, सेवा देने वाली कंपनी के नाम पर क्लिक करें. |
मॉडल को प्रॉम्प्ट का अनुरोध भेजने से पहले, ये सेट अप करें:
एपीआई की सेवा देने वाली चुनी गई कंपनी के लिए, सेवा शुरू करें.
GenerativeModelइंस्टेंस बनाएं. पक्का करें किmodeको इनमें से किसी एक पर सेट किया गया हो:PREFER_ON_DEVICE: अगर उपयोगकर्ता के डिवाइस पर मौजूद मॉडल उपलब्ध है, तो उसका इस्तेमाल करें. अगर वह उपलब्ध नहीं है, तो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करें.ONLY_ON_DEVICE: अगर उपयोगकर्ता के डिवाइस पर मौजूद मॉडल उपलब्ध है, तो उसका इस्तेमाल करें. अगर ऐसा नहीं है, तो कोई अपवाद दिखाएं.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
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
छठा चरण: डिवाइस पर मौजूद मॉडल को शुरू करना
आपको असली उपयोगकर्ता के पेज इंटरैक्शन (जैसे, बटन पर क्लिक करना) के बाद या उस दौरान और मॉडल को प्रॉम्प्ट का अनुरोध भेजने से पहले, initializeDeviceModel() को कॉल करना होगा. Chrome के दस्तावेज़ में, उपयोगकर्ता को चालू करने की ज़रूरी शर्त के बारे में ज़्यादा जानें.
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
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
// `initializeDeviceModel` must be called:
// (1) after or on an end-user page interaction such as a button click
// and
// (2) before any queries to the model (such as `generateContent()`)
// You may want to `await` this promise if using `ONLY_ON_DEVICE` (see note below).
model.initializeDeviceModel((val) =>
// Example: "Download progress: 72.62%""
console.log(`Download progress: ${Math.round(val*10000) / 100}%`)
);
सातवां चरण: किसी मॉडल को प्रॉम्प्ट का अनुरोध भेजना
इस सेक्शन में बताया गया है कि अलग-अलग तरह के आउटपुट जनरेट करने के लिए, अलग-अलग तरह के इनपुट कैसे भेजे जा सकते हैं. जैसे:
- सिर्फ़ टेक्स्ट वाले इनपुट से टेक्स्ट जनरेट करना
- टेक्स्ट और इमेज (मल्टीमोडल) इनपुट से टेक्स्ट जनरेट करना
अगर आपको स्ट्रक्चर्ड आउटपुट (जैसे, 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, generateContent के बजाय generateContentStream का इस्तेमाल करके, टेक्स्ट वाले जवाबों को स्ट्रीम करने की सुविधा भी देता है.
टेक्स्ट और इमेज (मल्टीमोडल) इनपुट से जनरेट किया गया टेक्स्ट
| इस सैंपल को आज़माने से पहले, पक्का करें कि आपने इस गाइड का शुरू करें सेक्शन पूरा कर लिया हो. |
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 {
type: "inlineData",
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, generateContent के बजाय generateContentStream का इस्तेमाल करके, टेक्स्ट वाले जवाबों को स्ट्रीम करने की सुविधा भी देता है.
तुम और क्या कर सकती हो?
हाइब्रिड अनुभव के लिए, कॉन्फ़िगरेशन के कई अन्य विकल्प और सुविधाएं इस्तेमाल की जा सकती हैं:
उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के लिए, फ़िलहाल ये सुविधाएं उपलब्ध नहीं हैं
Web SDK की सभी सुविधाएं, उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए उपलब्ध नहीं हैं. फ़िलहाल, उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए ये सुविधाएं उपलब्ध नहीं हैं. हालांकि, आम तौर पर ये सुविधाएं क्लाउड-आधारित अनुमान लगाने के लिए उपलब्ध होती हैं.
JPEG और PNG के अलावा, अन्य फ़ाइल टाइप वाली इमेज से टेक्स्ट जनरेट करना
- क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि,
ONLY_ON_DEVICEमोड में गड़बड़ी होगी.
- क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि,
ऑडियो, वीडियो, और दस्तावेज़ों (जैसे, PDF) से टेक्स्ट जनरेट करना
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
ONLY_ON_DEVICEमोड में गड़बड़ी होगी.
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
Gemini Nano Banana मॉडल का इस्तेमाल करके इमेज जनरेट की जा रही हैं
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
ONLY_ON_DEVICEमोड में गड़बड़ी होगी.
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
मल्टीमोडल अनुरोधों में यूआरएल का इस्तेमाल करके फ़ाइलें उपलब्ध कराना. आपको उपयोगकर्ता के डिवाइस पर मौजूद मॉडल के लिए, इनलाइन डेटा के तौर पर फ़ाइलें देनी होंगी.
एक से ज़्यादा बार चैट करने की सुविधा
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
ONLY_ON_DEVICEमोड में गड़बड़ी होगी.
- क्लाउड पर होस्ट किए गए मॉडल पर वापस जाया जा सकता है. हालांकि,
Gemini Live API के साथ, दोनों तरफ़ से ऑडियो स्ट्रीम करने की सुविधा
मॉडल को टूल उपलब्ध कराना, ताकि वह जवाब जनरेट कर सके. जैसे, फ़ंक्शन कॉलिंग, कोड एक्ज़ीक्यूशन, यूआरएल कॉन्टेक्स्ट,
Google Search के साथ ग्राउंडिंग, औरGoogle Maps के साथ ग्राउंडिंगटोकन की गिनती करना
- हमेशा गड़बड़ी का मैसेज दिखाता है. क्लाउड पर होस्ट किए गए मॉडल और उपयोगकर्ता के डिवाइस पर मौजूद मॉडल के बीच, टोकन की संख्या अलग-अलग होगी. इसलिए, कोई आसान फ़ॉलबैक नहीं है.
उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के लिए, Firebase कंसोल में एआई मॉनिटरिंग की सुविधा.
- ध्यान दें कि क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करके किए गए किसी भी अनुमान को मॉनिटर किया जा सकता है. ठीक उसी तरह जैसे Firebase AI Logic क्लाइंट SDK for Web का इस्तेमाल करके किए गए अन्य अनुमानों को मॉनिटर किया जाता है.
Firebase AI Logic के साथ अपने अनुभव के बारे में सुझाव/राय देना या शिकायत करना