অন-ডিভাইস এবং ক্লাউড-হোস্টেড মডেলগুলির সাহায্যে ওয়েব অ্যাপগুলিতে হাইব্রিড অভিজ্ঞতা তৈরি করুন


Firebase AI Logic ব্যবহার করে হাইব্রিড ইনফারেন্সের মাধ্যমে এআই-চালিত ওয়েব অ্যাপ এবং ফিচার তৈরি করুন। হাইব্রিড ইনফারেন্সের সাহায্যে, ডিভাইসে উপলব্ধ মডেল ব্যবহার করে ইনফারেন্স চালানো যায় এবং অন্যথায় এটি নির্বিঘ্নে ক্লাউড-হোস্টেড মডেলে ফিরে যেতে পারে (এবং এর বিপরীতটিও সম্ভব)।

এই পৃষ্ঠায় ক্লায়েন্ট SDK ব্যবহার শুরু করার পদ্ধতি বর্ণনা করা হয়েছে। এই সাধারণ সেটআপটি সম্পন্ন করার পর, অতিরিক্ত কনফিগারেশন বিকল্প এবং সক্ষমতাগুলো (যেমন স্ট্রাকচার্ড আউটপুট) দেখে নিন।

উল্লেখ্য যে, ডেস্কটপে ক্রোমে চালিত ওয়েব অ্যাপগুলোর জন্য অন-ডিভাইস ইনফারেন্স সমর্থিত।

কোডের উদাহরণগুলিতে যান

সুপারিশকৃত ব্যবহারের ক্ষেত্র এবং সমর্থিত সক্ষমতা

সুপারিশকৃত ব্যবহারের ক্ষেত্রসমূহ:

  • ইনফারেন্সের জন্য অন-ডিভাইস মডেল ব্যবহারের সুবিধাগুলো হলো:

    • উন্নত গোপনীয়তা
    • স্থানীয় প্রেক্ষাপট
    • বিনা খরচে অনুমান
    • অফলাইন কার্যকারিতা
  • হাইব্রিড কার্যকারিতা ব্যবহারের সুবিধা:

    • ডিভাইসে মডেলের প্রাপ্যতা বা ইন্টারনেট সংযোগ নির্বিশেষে আপনার শতভাগ দর্শকের কাছে পৌঁছান।

অন-ডিভাইস ইনফারেন্সের জন্য সমর্থিত সক্ষমতা এবং বৈশিষ্ট্যসমূহ:

অন-ডিভাইস ইনফারেন্স শুধুমাত্র একক-টার্ন টেক্সট জেনারেশন (চ্যাট নয় ) সমর্থন করে, যার আউটপুট স্ট্রিমিং বা নন-স্ট্রিমিং হতে পারে। এটি নিম্নলিখিত টেক্সট-জেনারেটর ক্ষমতাগুলো সমর্থন করে:

আপনি JSON এবং enum সহ কাঠামোগত আউটপুটও তৈরি করতে পারেন।

শুরু করার আগে

নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

লোকালহোস্টে শুরু করুন

এই প্রারম্ভিক ধাপগুলোতে আপনার পাঠাতে চাওয়া যেকোনো সমর্থিত প্রম্পট অনুরোধের জন্য প্রয়োজনীয় সাধারণ সেটআপ বর্ণনা করা হয়েছে।

ধাপ ১ : ডিভাইসে ইনফারেন্সের জন্য ক্রোম এবং প্রম্পট এপিআই সেট আপ করুন।

  1. নিশ্চিত করুন যে আপনি ক্রোমের সাম্প্রতিক সংস্করণ ব্যবহার করছেন। chrome://settings/help থেকে আপডেট করুন।
    ক্রোম সংস্করণ ১৩৯ এবং তার পরবর্তী সংস্করণগুলো থেকে ডিভাইসেই ইনফারেন্স সুবিধাটি পাওয়া যায়।

  2. নিম্নলিখিত ফ্ল্যাগটিকে 'Enabled'- এ সেট করে অন-ডিভাইস মাল্টিমোডাল মডেলটি সক্রিয় করুন:

    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
  3. ক্রোম পুনরায় চালু করুন।

  4. (ঐচ্ছিক) প্রথম অনুরোধের আগে ডিভাইসে থাকা মডেলটি ডাউনলোড করুন।

    প্রম্পট এপিআই ক্রোমের সাথে বিল্ট-ইন থাকে; তবে, অন-ডিভাইস মডেলটি ডিফল্টভাবে উপলব্ধ নয়। আপনি যদি অন-ডিভাইস ইনফারেন্সের জন্য আপনার প্রথম অনুরোধের আগে মডেলটি ডাউনলোড না করে থাকেন, তাহলে অনুরোধটি স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে মডেল ডাউনলোড শুরু করে দেবে।

ধাপ ২ : একটি ফায়ারবেস প্রজেক্ট সেট আপ করুন এবং আপনার অ্যাপটিকে ফায়ারবেসের সাথে সংযুক্ত করুন।

  1. Firebase কনসোলে সাইন ইন করুন এবং তারপরে আপনার ফায়ারবেস প্রজেক্টটি নির্বাচন করুন।

  2. Firebase কনসোলে, Firebase AI Logic পৃষ্ঠায় যান।

  3. আপনার প্রোজেক্টের জন্য প্রয়োজনীয় এপিআই ও রিসোর্স সেট আপ করতে সাহায্যকারী একটি নির্দেশিত ওয়ার্কফ্লো চালু করতে 'Get started'- এ ক্লিক করুন।

  4. আপনার প্রজেক্টটি একটি ' Gemini API ' প্রোভাইডার ব্যবহার করার জন্য সেট আপ করুন।

    আমরা জেমিনি ডেভেলপার এপিআই (Gemini Developer API) ব্যবহার করে কাজ শুরু করার পরামর্শ দিই। আপনি যেকোনো সময়ে ভার্টেক্স এআই জেমিনি এপিআই ( Vertex AI Gemini API) (এবং বিলিংয়ের জন্য এর প্রয়োজনীয়তা) সেট আপ করে নিতে পারেন।

    জেমিনি ডেভেলপার এপিআই- এর জন্য, কনসোলটি প্রয়োজনীয় এপিআইগুলো সক্রিয় করবে এবং আপনার প্রোজেক্টে একটি জেমিনি এপিআই কী তৈরি করবে।
    এই জেমিনি এপিআই কী-টি আপনার অ্যাপের কোডবেসে যোগ করবেন না আরও জানুন।

  5. কনসোলের ওয়ার্কফ্লোতে নির্দেশ দেওয়া হলে, আপনার অ্যাপটি রেজিস্টার করতে এবং ফায়ারবেসের সাথে সংযুক্ত করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।

  6. আপনার অ্যাপে SDK যোগ করতে এই নির্দেশিকার পরবর্তী ধাপে যান।

ধাপ ৩ : SDK যোগ করুন

ফায়ারবেস লাইব্রেরিটি জেনারেটিভ মডেলের সাথে ইন্টারঅ্যাক্ট করার জন্য এপিআই-গুলোতে অ্যাক্সেস প্রদান করে। লাইব্রেরিটি ওয়েবের জন্য ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে-র অংশ হিসেবে অন্তর্ভুক্ত রয়েছে।

  1. npm ব্যবহার করে Firebase JS SDK for Web ইনস্টল করুন:

    npm install firebase
    
  2. আপনার অ্যাপে 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);
    

ধাপ ৪ : পরিষেবাটি চালু করুন এবং একটি মডেল ইনস্ট্যান্স তৈরি করুন।

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন।

মডেলে প্রম্পট অনুরোধ পাঠানোর আগে নিম্নলিখিত বিষয়গুলো সেট আপ করে নিন।

  1. আপনার নির্বাচিত এপিআই প্রোভাইডারের জন্য পরিষেবাটি চালু করুন।

  2. একটি GenerativeModel ইনস্ট্যান্স তৈরি করুন। নিম্নলিখিত বিষয়গুলো নিশ্চিত করুন:

    1. ব্যবহারকারীর কোনো ইন্টারঅ্যাকশনের (যেমন বোতামে ক্লিক) পরে বা সেই মুহূর্তে getGenerativeModel কল করুন। এটি inferenceMode জন্য একটি পূর্বশর্ত।

    2. 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-এ নথিভুক্ত হতে হবে। মনে রাখবেন, এই ট্রায়ালগুলোর একটি সীমিত সময়কাল এবং ব্যবহারের সীমা রয়েছে।

  1. Prompt API Chrome Origin Trial-এর জন্য নিবন্ধন করুন। আপনাকে একটি টোকেন দেওয়া হবে।

  2. যেসব ওয়েব পেজে আপনি ট্রায়াল ফিচারটি চালু করতে চান, সেগুলোর প্রতিটিতে টোকেনটি প্রদান করুন। নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করুন:

    • <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 ব্যবহারের অভিজ্ঞতা সম্পর্কে মতামত দিন।