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


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

এই রিলিজের সাথে, ডেস্কটপে Chrome-এর জন্য অন-ডিভাইস অনুমানের সমর্থন সহ ওয়েবের জন্য Firebase AI লজিক ক্লায়েন্ট SDK ব্যবহার করে হাইব্রিড অনুমান পাওয়া যায়।

কোড উদাহরণ ঝাঁপ

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

প্রস্তাবিত ব্যবহারের ক্ষেত্রে:

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

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

    • ডিভাইসে মডেলের উপলব্ধতা নির্বিশেষে আপনার 100% দর্শকদের কাছে পৌঁছান

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

  • একক-পালা সামগ্রী তৈরি, স্ট্রিমিং এবং নন-স্ট্রিমিং
  • শুধুমাত্র পাঠ্য ইনপুট থেকে পাঠ্য তৈরি করা হচ্ছে
  • টেক্সট-এবং-ইমেজ ইনপুট থেকে টেক্সট তৈরি করা হচ্ছে, বিশেষ করে JPEG এবং PNG-এর ইমেজ ধরনের ইনপুট
  • JSON এবং enums সহ কাঠামোগত আউটপুট তৈরি করা হচ্ছে

শুরু করুন

এই গাইডটি আপনাকে দেখায় যে কীভাবে হাইব্রিড ইনফারেন্স সম্পাদন করতে ওয়েবের জন্য Firebase AI লজিক SDK ব্যবহার শুরু করবেন।

একটি অন-ডিভাইস মডেল ব্যবহার করে অনুমান Chrome থেকে প্রম্পট API ব্যবহার করে; যেখানে একটি ক্লাউড-হোস্টেড মডেল ব্যবহার করে অনুমান আপনার নির্বাচিত জেমিনি API প্রদানকারী ব্যবহার করে (হয় জেমিনি ডেভেলপার API বা Vertex AI Gemini API )।

ধাপ 1 : ডিভাইসে অনুমানের জন্য Chrome এবং প্রম্পট API সেট আপ করুন

  1. সর্বশেষ Chrome Dev বিল্ড ডাউনলোড করুন।

    Chrome v138 এবং উচ্চতর থেকে ডিভাইসে অনুমান পাওয়া যায়।

  2. নিম্নলিখিত ফ্ল্যাগগুলি সেট করে আপনার Chrome উদাহরণের জন্য প্রম্পট API সক্ষম করুন:

    • chrome://flags/#optimization-guide-on-device-model : সক্রিয় তে সেট করুন।
    • chrome://flags/#prompt-api-for-gemini-nano : সক্রিয় তে সেট করুন।

    Chrome ডকুমেন্টেশনে লোকালহোস্টে API ব্যবহার করার বিষয়ে আরও জানুন। ঐচ্ছিকভাবে, প্রতিক্রিয়া জানাতে Chrome এর আর্লি প্রিভিউ প্রোগ্রামে (EPP) যোগ দিন।

  3. নিম্নলিখিত পতাকা সেট করে অন-ডিভাইস মাল্টিমোডাল মডেল সক্ষম করুন:

    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input : সক্রিয় এ সেট করুন।
  4. স্থানীয়ভাবে API যাচাই করুন:

    1. Chrome পুনরায় চালু করুন।

    2. বিকাশকারী সরঞ্জাম > কনসোল খুলুন।

    3. নিম্নলিখিত চালান:

      await LanguageModel.availability();
      
    4. নিশ্চিত করুন যে আউটপুট available , downloading বা downloadable । .

    5. আউটপুট downloadable হলে, আপনি await LanguageModel.create(); চালিয়ে মডেল ডাউনলোড শুরু করতে পারেন। . অন্যথায়, ডিভাইসে অনুমানের জন্য প্রথম অনুরোধটি পটভূমিতে একটি মডেল ডাউনলোড শুরু করবে, যা কয়েক মিনিট সময় নিতে পারে।

ধাপ 2 : একটি Firebase প্রকল্প সেট আপ করুন এবং আপনার অ্যাপটিকে Firebase-এর সাথে সংযুক্ত করুন

  1. Firebase কনসোলে সাইন ইন করুন, এবং তারপর আপনার Firebase প্রকল্প নির্বাচন করুন।

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

  3. একটি নির্দেশিত ওয়ার্কফ্লো চালু করতে শুরু করুন ক্লিক করুন যা আপনাকে আপনার প্রকল্পের জন্য প্রয়োজনীয় API এবং সংস্থানগুলি সেট আপ করতে সহায়তা করে৷

  4. " Gemini API " প্রদানকারী নির্বাচন করুন যা আপনি Firebase AI Logic SDK-এর সাথে ব্যবহার করতে চান৷ আপনি যদি চান তাহলে আপনি সর্বদা সেট আপ করতে এবং পরে অন্য API প্রদানকারী ব্যবহার করতে পারেন।

    • জেমিনি ডেভেলপার APIবিলিং ঐচ্ছিক (বিনামূল্য স্পার্ক মূল্য পরিকল্পনায় উপলব্ধ)
      কনসোল প্রয়োজনীয় API গুলি সক্ষম করবে এবং আপনার প্রকল্পে একটি Gemini API কী তৈরি করবে৷
      আপনার অ্যাপের কোডবেসে এই Gemini API কী যোগ করবেন না আরও জানুন।

      আপনি যদি আপনার মূল্য পরিকল্পনা আপগ্রেড করতে চান তাহলে আপনি পরে বিলিং সেট আপ করতে পারেন৷

    • Vertex AI Gemini APIবিলিং প্রয়োজন (প্রয়োজন-অ্যাজ ইউ-গো ব্লেজ মূল্য পরিকল্পনা)
      কনসোল আপনাকে বিলিং সেট আপ করতে এবং আপনার প্রকল্পে প্রয়োজনীয় API গুলি সক্ষম করতে সহায়তা করবে৷

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

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

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

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

  1. npm ব্যবহার করে ওয়েবের জন্য Firebase JS SDK ইনস্টল করুন।

    হাইব্রিড বৈশিষ্ট্যটি একটি ভিন্ন এনপিএম ট্যাগের অধীনে প্রকাশিত হয়েছে, তাই এটি আপনার ইনস্টলেশন কমান্ডে অন্তর্ভুক্ত করা নিশ্চিত করুন।

    npm install firebase@eap-ai-hybridinference
    
  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);
    

ধাপ 4 : পরিষেবাটি শুরু করুন এবং একটি মডেল উদাহরণ তৈরি করুন

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

একটি জেমিনি মডেলে একটি প্রম্পট পাঠানোর আগে, আপনার নির্বাচিত API প্রদানকারীর জন্য পরিষেবাটি শুরু করুন এবং একটি GenerativeModel উদাহরণ তৈরি করুন৷

একটিতে mode সেট করুন:

  • prefer_on_device : SDK কনফিগার করে অন-ডিভাইস মডেলটি ব্যবহার করার জন্য যদি এটি উপলব্ধ থাকে, অথবা ক্লাউড-হোস্টেড মডেলে ফিরে আসে।

  • only_on_device : অন-ডিভাইস মডেল ব্যবহার করতে SDK কনফিগার করে বা একটি ব্যতিক্রম থ্রো করে।

  • only_in_cloud : কখনোই অন-ডিভাইস মডেল ব্যবহার না করার জন্য SDK কনফিগার করে।

ডিফল্টরূপে আপনি যখন prefer_on_device বা only_in_cloud ব্যবহার করেন, ক্লাউড-হোস্টেড মডেলটি হয় gemini-2.0-flash-lite , কিন্তু আপনি ডিফল্টটিকে ওভাররাইড করতে পারেন।

import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } 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 to use on-device model when possible
const model = getGenerativeModel(ai, { mode: "prefer_on_device" });

একটি মডেল একটি প্রম্পট অনুরোধ পাঠান

এই বিভাগটি বিভিন্ন ধরনের আউটপুট তৈরি করতে বিভিন্ন ধরনের ইনপুট কীভাবে পাঠাতে হয় তার উদাহরণ প্রদান করে, যার মধ্যে রয়েছে:

আপনি যদি স্ট্রাকচার্ড আউটপুট তৈরি করতে চান (যেমন JSON বা enums), তাহলে নিম্নলিখিত "টেক্সট তৈরি করুন" উদাহরণগুলির মধ্যে একটি ব্যবহার করুন এবং অতিরিক্তভাবে একটি প্রদত্ত স্কিমা অনুযায়ী প্রতিক্রিয়া জানাতে মডেলটিকে কনফিগার করুন

শুধুমাত্র পাঠ্য ইনপুট থেকে পাঠ্য তৈরি করুন

এই নমুনাটি চেষ্টা করার আগে, নিশ্চিত করুন যে আপনি এই গাইডের শুরু করুন বিভাগটি সম্পূর্ণ করেছেন।

আপনি 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();

পাঠ্য-এবং-চিত্র (মাল্টিমোডাল) ইনপুট থেকে পাঠ্য তৈরি করুন

এই নমুনাটি চেষ্টা করার আগে, নিশ্চিত করুন যে আপনি এই গাইডের শুরু করুন বিভাগটি সম্পূর্ণ করেছেন।

আপনি 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();

আপনি আর কি করতে পারেন?

উপরের উদাহরণগুলি ছাড়াও, আপনি বিকল্প অনুমান মোডগুলিও ব্যবহার করতে পারেন, ডিফল্ট ফলব্যাক মডেলটিকে ওভাররাইড করতে পারেন এবং প্রতিক্রিয়াগুলি নিয়ন্ত্রণ করতে মডেল কনফিগারেশন ব্যবহার করতে পারেন

বিকল্প অনুমান মোড ব্যবহার করুন

উপরের উদাহরণগুলি SDK কনফিগার করার জন্য prefer_on_device মোড ব্যবহার করেছে যদি এটি উপলব্ধ থাকে তাহলে একটি অন-ডিভাইস মডেল ব্যবহার করতে বা ক্লাউড-হোস্টেড মডেলে ফিরে আসে। SDK দুটি বিকল্প ইনফারেন্স মোড অফার করে: only_on_device এবং only_in_cloud

  • only_on_device মোড ব্যবহার করুন যাতে SDK শুধুমাত্র একটি অন-ডিভাইস মডেল ব্যবহার করতে পারে। এই কনফিগারেশনে, একটি অন-ডিভাইস মডেল উপলব্ধ না হলে API একটি ত্রুটি নিক্ষেপ করবে।

    const model = getGenerativeModel(ai, { mode: "only_on_device" });
    
  • only_in_cloud মোড ব্যবহার করুন যাতে SDK শুধুমাত্র একটি ক্লাউড-হোস্টেড মডেল ব্যবহার করতে পারে।

    const model = getGenerativeModel(ai, { mode: "only_in_cloud" });
    

ডিফল্ট ফলব্যাক মডেল ওভাররাইড করুন

আপনি যখন prefer_on_device মোড ব্যবহার করেন, একটি অন-ডিভাইস মডেল অনুপলব্ধ হলে SDK ক্লাউড-হোস্টেড মডেল ব্যবহার করতে ফিরে আসবে। ডিফল্ট ফলব্যাক ক্লাউড-হোস্টেড মডেল হল gemini-2.0-flash-lite । আপনি only_in_cloud মোড ব্যবহার করার সময় এই ক্লাউড-হোস্টেড মডেলটিও ডিফল্ট।

আপনি একটি বিকল্প ডিফল্ট ক্লাউড-হোস্টেড মডেল নির্দিষ্ট করতে inCloudParams কনফিগারেশন বিকল্পটি ব্যবহার করতে পারেন:

const model = getGenerativeModel(ai, {
  mode: 'prefer_on_device',
  inCloudParams: {
    model: "gemini-2.0-flash"
  }
});

সমস্ত সমর্থিত মিথুন মডেলের মডেলের নাম খুঁজুন।

প্রতিক্রিয়া নিয়ন্ত্রণ করতে মডেল কনফিগারেশন ব্যবহার করুন

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

কনফিগারেশনটি দৃষ্টান্তের আজীবনের জন্য বজায় রাখা হয়। আপনি যদি একটি ভিন্ন কনফিগারেশন ব্যবহার করতে চান, তাহলে সেই কনফিগারেশনের সাথে একটি নতুন GenerativeModel উদাহরণ তৈরি করুন।

একটি ক্লাউড-হোস্টেড মডেলের জন্য কনফিগারেশন সেট করুন

একটি ক্লাউড-হোস্টেড জেমিনি মডেল কনফিগার করতে inCloudParams বিকল্পটি ব্যবহার করুন৷ উপলব্ধ পরামিতি সম্পর্কে জানুন।

const model = getGenerativeModel(ai, {
  mode: 'prefer_on_device',
  inCloudParams: {
    model: "gemini-2.0-flash"
    temperature: 0.8,
    topK: 10
  }
});

একটি অন-ডিভাইস মডেলের জন্য কনফিগারেশন সেট করুন

মনে রাখবেন যে একটি অন-ডিভাইস মডেল ব্যবহার করে অনুমান Chrome থেকে প্রম্পট API ব্যবহার করে।

একটি অন-ডিভাইস মডেল কনফিগার করতে onDeviceParams বিকল্পটি ব্যবহার করুন। উপলব্ধ পরামিতি সম্পর্কে জানুন।

const model = getGenerativeModel(ai, {
  mode: 'prefer_on_device',
  onDeviceParams: {
    createOptions: {
      temperature: 0.8,
      topK: 8
    }
  }
});

কাঠামোগত আউটপুটের জন্য কনফিগারেশন সেট করুন

ক্লাউড-হোস্টেড এবং অন-ডিভাইস মডেল উভয় ব্যবহার করে অনুমানের জন্য কাঠামোগত আউটপুট (যেমন JSON এবং enums) তৈরি করা সমর্থিত।

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

  • inCloudParams এর জন্য : উপযুক্ত responseMimeType (এই উদাহরণে, application/json ) উল্লেখ করুন সেইসাথে responseSchema যা আপনি মডেলটি ব্যবহার করতে চান।

  • onDeviceParams এর জন্য : আপনি মডেলটি ব্যবহার করতে চান এমন responseConstraint নির্দিষ্ট করুন।

JSON আউটপুট

নিম্নলিখিত উদাহরণটি হাইব্রিড অনুমানের জন্য সাধারণ JSON আউটপুট উদাহরণকে অভিযোজিত করে:

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const jsonSchema = Schema.object({
 properties: {
    characters: Schema.array({
      items: Schema.object({
        properties: {
          name: Schema.string(),
          accessory: Schema.string(),
          age: Schema.number(),
          species: Schema.string(),
        },
        optionalProperties: ["accessory"],
      }),
    }),
  }
});

const model = getGenerativeModel(ai, {
  mode: 'prefer_on_device',
  inCloudParams: {
    model: "gemini-2.0-flash"
    generationConfig: {
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});
এনাম আউটপুট

উপরের হিসাবে, কিন্তু হাইব্রিড অনুমানের জন্য enum আউটপুটে ডকুমেন্টেশন মানিয়ে নেওয়া:

// ...

const enumSchema = Schema.enumString({
  enum: ["drama", "comedy", "documentary"],
});

const model = getGenerativeModel(ai, {

// ...

    generationConfig: {
      responseMimeType: "text/x.enum",
      responseSchema: enumSchema
    },

// ...

ডিভাইসে অনুমানের জন্য বৈশিষ্ট্যগুলি এখনও উপলব্ধ নয়৷

একটি পরীক্ষামূলক রিলিজ হিসাবে, ওয়েব SDK-এর সমস্ত ক্ষমতা ডিভাইসে অনুমানের জন্য উপলব্ধ নয়৷ নিম্নলিখিত বৈশিষ্ট্যগুলি এখনও অন-ডিভাইস অনুমানের জন্য সমর্থিত নয় (তবে এগুলি সাধারণত ক্লাউড-ভিত্তিক অনুমানের জন্য উপলব্ধ)।

  • JPEG এবং PNG ছাড়া অন্য ইমেজ ফাইল ইনপুট প্রকার থেকে পাঠ্য তৈরি করা হচ্ছে

    • ক্লাউড-হোস্টেড মডেলে ফলব্যাক করতে পারে; তবে, only_on_device মোড একটি ত্রুটি নিক্ষেপ করবে।
  • অডিও, ভিডিও এবং নথি (যেমন পিডিএফ) ইনপুট থেকে পাঠ্য তৈরি করা হচ্ছে

    • ক্লাউড-হোস্টেড মডেলে ফলব্যাক করতে পারে; তবে, only_on_device মোড একটি ত্রুটি নিক্ষেপ করবে।
  • Gemini বা Imagen মডেল ব্যবহার করে ছবি তৈরি করা

    • ক্লাউড-হোস্টেড মডেলে ফলব্যাক করতে পারে; তবে, only_on_device মোড একটি ত্রুটি নিক্ষেপ করবে।
  • মাল্টিমোডাল অনুরোধে ইউআরএল ব্যবহার করে ফাইল প্রদান করা। অন-ডিভাইস মডেলগুলিতে আপনাকে ইনলাইন ডেটা হিসাবে ফাইলগুলি সরবরাহ করতে হবে৷

  • বহু পালা চ্যাট

    • ক্লাউড-হোস্টেড মডেলে ফলব্যাক করতে পারে; তবে, only_on_device মোড একটি ত্রুটি নিক্ষেপ করবে।
  • Gemini Live API সাথে দ্বি-দিকনির্দেশক স্ট্রিমিং

    • মনে রাখবেন যে এটি ওয়েবের জন্য Firebase AI লজিক ক্লায়েন্ট SDK দ্বারা সমর্থিত নয় এমনকি ক্লাউড-হোস্টেড মডেলগুলির জন্যও
  • ফাংশন কলিং

    • শীঘ্রই আসছে!
  • টোকেন গণনা করুন

    • সর্বদা একটি ত্রুটি নিক্ষেপ. ক্লাউড-হোস্টেড এবং অন-ডিভাইস মডেলের মধ্যে গণনা আলাদা হবে, তাই কোন স্বজ্ঞাত ফলব্যাক নেই।
  • অন-ডিভাইস অনুমানের জন্য Firebase কনসোলে AI পর্যবেক্ষণ।

    • মনে রাখবেন যে ক্লাউড-হোস্টেড মডেলগুলি ব্যবহার করে যে কোনও অনুমান ওয়েবের জন্য Firebase AI লজিক ক্লায়েন্ট SDK ব্যবহার করে অন্যান্য অনুমানের মতোই পর্যবেক্ষণ করা যেতে পারে।


Firebase AI লজিকের সাথে আপনার অভিজ্ঞতা সম্পর্কে মতামত দিন