با استفاده از Firebase AI Logic ، برنامهها و ویژگیهای مبتنی بر هوش مصنوعی را با استنتاج ترکیبی بسازید. استنتاج ترکیبی، اجرای استنتاج با استفاده از مدلهای روی دستگاه را در صورت وجود امکانپذیر میسازد و در غیر این صورت به طور یکپارچه به مدلهای میزبان ابری بازمیگردد.
با این نسخه، استنتاج ترکیبی با استفاده از Firebase AI Logic Client SDK برای وب با پشتیبانی از استنتاج روی دستگاه برای Chrome در دسکتاپ در دسترس است.
موارد استفاده توصیه شده و قابلیت های پشتیبانی شده
موارد استفاده توصیه شده:
استفاده از یک مدل روی دستگاه برای استنتاج پیشنهادات:
- حریم خصوصی پیشرفته
- بافت محلی
- استنتاج بدون هزینه
- قابلیت آفلاین
استفاده از عملکرد ترکیبی ارائه می دهد:
- بدون توجه به در دسترس بودن مدل روی دستگاه، به 100٪ از مخاطبان خود دسترسی پیدا کنید
قابلیت ها و ویژگی های پشتیبانی شده برای استنتاج روی دستگاه:
- تولید محتوای تک نوبتی، پخش جریانی و بدون جریان
- تولید متن از ورودی فقط متنی
- تولید متن از ورودی متن و تصویر، مخصوصاً انواع تصویر ورودی JPEG و PNG
- تولید خروجی ساختاریافته، از جمله JSON و enums
شروع کنید
این راهنما به شما نشان می دهد که چگونه با استفاده از Firebase AI Logic SDK برای وب برای انجام استنتاج ترکیبی شروع کنید.
استنتاج با استفاده از مدل روی دستگاه از Prompt API Chrome استفاده میکند. در حالی که استنتاج با استفاده از یک مدل میزبان ابری از ارائهدهنده API Gemini انتخابی شما (یا Gemini Developer API یا Vertex AI Gemini API ) استفاده میکند.
مرحله 1 : Chrome و Prompt API را برای استنتاج روی دستگاه تنظیم کنید
آخرین ساخت Chrome Dev را دانلود کنید.
استنتاج روی دستگاه از Chrome نسخه 138 و بالاتر در دسترس است.
با تنظیم پرچمهای زیر، Prompt API را برای نمونه Chrome خود فعال کنید:
-
chrome://flags/#optimization-guide-on-device-model
: روی Enabled تنظیم کنید. -
chrome://flags/#prompt-api-for-gemini-nano
: روی Enabled تنظیم کنید.
درباره استفاده از APIها در لوکال هاست در اسناد Chrome اطلاعات بیشتری کسب کنید. در صورت تمایل، برای ارائه بازخورد به برنامه پیشنمایش اولیه Chrome (EPP) بپیوندید.
-
با تنظیم پرچم زیر، مدل چندوجهی روی دستگاه را فعال کنید:
-
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
: روی Enabled تنظیم کنید.
-
API را به صورت محلی تأیید کنید:
کروم را مجددا راه اندازی کنید.
Developer Tools > Console را باز کنید.
موارد زیر را اجرا کنید:
await LanguageModel.availability();
اطمینان حاصل کنید که خروجی
available
باشد،downloading
یاdownloadable
. .اگر خروجی
downloadable
است، می توانید دانلود مدل را با اجرایawait LanguageModel.create();
. در غیر این صورت، اولین درخواست برای استنتاج روی دستگاه، دانلود مدل را در پسزمینه شروع میکند که ممکن است چند دقیقه طول بکشد.
مرحله 2 : یک پروژه Firebase را راه اندازی کنید و برنامه خود را به Firebase متصل کنید
وارد کنسول Firebase شوید و سپس پروژه Firebase خود را انتخاب کنید.
اگر قبلاً پروژه Firebase ندارید، روی ایجاد پروژه کلیک کنید و سپس از یکی از گزینههای زیر استفاده کنید:
گزینه 1 : با وارد کردن نام پروژه جدید در اولین مرحله از گردش کار «ایجاد پروژه»، یک پروژه کاملاً جدید Firebase (و پروژه Google Cloud زیربنایی آن به صورت خودکار) ایجاد کنید.
گزینه 2 : «افزودن Firebase» به پروژه Google Cloud موجود با انتخاب نام پروژه Google Cloud خود از منوی کشویی در مرحله اول گردش کار «ایجاد پروژه».
توجه داشته باشید که وقتی از شما خواسته شد، برای استفاده از Firebase AI Logic SDK ها نیازی به راه اندازی Google Analytics ندارید .
در کنسول Firebase ، به صفحه Firebase AI Logic بروید.
برای راهاندازی یک گردش کار هدایتشده که به شما کمک میکند APIها و منابع مورد نیاز پروژه خود را تنظیم کنید، روی Get Start کلیک کنید.
ارائهدهنده « Gemini API » را که میخواهید با Firebase AI Logic SDK استفاده کنید، انتخاب کنید. اگر بخواهید، همیشه میتوانید بعداً ارائهدهنده API دیگر را راهاندازی کرده و از آن استفاده کنید.
Gemini Developer API — صورتحساب اختیاری (در طرح قیمتگذاری بدون هزینه Spark موجود است)
کنسول API های مورد نیاز را فعال می کند و یک کلید API Gemini در پروژه شما ایجاد می کند.
این کلید Gemini API را به پایگاه کد برنامه خود اضافه نکنید . بیشتر بدانید.اگر میخواهید طرح قیمتگذاری خود را ارتقا دهید، میتوانید بعداً صورتحساب را تنظیم کنید.
Vertex AI Gemini API - صورتحساب مورد نیاز است (به طرح قیمتگذاری Blaze نیاز دارد)
کنسول به شما کمک می کند تا صورتحساب را تنظیم کنید و API های مورد نیاز را در پروژه خود فعال کنید.
اگر در گردش کار کنسول از شما خواسته شد، دستورالعملهای روی صفحه را دنبال کنید تا برنامه خود را ثبت کرده و به Firebase متصل کنید.
برای افزودن SDK به برنامه خود، مرحله بعدی این راهنما را ادامه دهید.
مرحله 3 : SDK را اضافه کنید
کتابخانه Firebase دسترسی به API ها را برای تعامل با مدل های تولیدی فراهم می کند. این کتابخانه به عنوان بخشی از Firebase JavaScript SDK برای وب گنجانده شده است.
Firebase JS SDK for Web را با استفاده از npm نصب کنید.
ویژگی ترکیبی تحت یک تگ npm متفاوت منتشر می شود، بنابراین مطمئن شوید که آن را در دستور نصب خود قرار دهید.
npm install firebase@eap-ai-hybridinference
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 : سرویس را راه اندازی کنید و یک نمونه مدل ایجاد کنید
برای مشاهده محتوا و کد ارائه دهنده خاص در این صفحه، روی ارائه دهنده API Gemini خود کلیک کنید. |
قبل از ارسال درخواست به یک مدل Gemini ، سرویس را برای ارائه دهنده 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();
چه کار دیگری می توانید انجام دهید؟
علاوه بر مثالهای بالا، میتوانید از حالتهای استنتاج جایگزین نیز استفاده کنید ، مدل بازگشتی پیشفرض را لغو کنید ، و از پیکربندی مدل برای کنترل پاسخها استفاده کنید .
از حالت های استنتاج جایگزین استفاده کنید
مثالهای بالا از حالت prefer_on_device
برای پیکربندی SDK استفاده میکردند تا در صورت موجود بودن از یک مدل روی دستگاه استفاده کند، یا به مدل میزبانی ابری بازگردد. 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
برای پیکربندی مدل Gemini میزبان ابر استفاده کنید. با پارامترهای موجود آشنا شوید.
const model = getGenerativeModel(ai, {
mode: 'prefer_on_device',
inCloudParams: {
model: "gemini-2.0-flash"
temperature: 0.8,
topK: 10
}
});
پیکربندی را برای یک مدل روی دستگاه تنظیم کنید
توجه داشته باشید که استنتاج با استفاده از مدل روی دستگاه از Prompt API Chrome استفاده میکند.
از گزینه 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
همانطور که در بالا ذکر شد، اما با تطبیق مستندات مربوط به خروجی enum برای استنتاج ترکیبی:
// ...
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
// ...
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
// ...
ویژگیهایی که هنوز برای استنتاج روی دستگاه در دسترس نیستند
به عنوان یک نسخه آزمایشی، همه قابلیتهای Web SDK برای استنتاج روی دستگاه در دسترس نیستند. ویژگیهای زیر هنوز برای استنتاج روی دستگاه پشتیبانی نمیشوند (اما معمولاً برای استنتاج مبتنی بر ابر در دسترس هستند).
تولید متن از انواع ورودی فایل تصویری غیر از JPEG و PNG
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
only_on_device
یک خطا ایجاد می کند.
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
تولید متن از ورودی های صوتی، تصویری و اسناد (مانند فایل های PDF).
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
only_on_device
یک خطا ایجاد می کند.
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
تولید تصاویر با استفاده از مدل های Gemini یا Imagen
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
only_on_device
یک خطا ایجاد می کند.
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
ارائه فایل ها با استفاده از URL در درخواست های چندوجهی. باید فایلها را بهعنوان دادههای درون خطی به مدلهای روی دستگاه ارائه کنید.
چت چند نوبتی
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
only_on_device
یک خطا ایجاد می کند.
- می تواند به مدل میزبانی ابری بازگردد. با این حال، حالت
پخش جریانی دو جهته با Gemini Live API
- توجه داشته باشید که این مورد توسط Firebase AI Logic Client SDK برای وب حتی برای مدلهای میزبان ابری پشتیبانی نمیشود.
فراخوانی تابع
- به زودی!
توکن ها را بشمار
- همیشه خطا می دهد. شمارش بین مدلهای میزبان ابری و مدلهای روی دستگاه متفاوت است، بنابراین هیچ بازگشتی بصری وجود ندارد.
نظارت بر هوش مصنوعی در کنسول Firebase برای استنتاج روی دستگاه.
- توجه داشته باشید که هر استنتاجی با استفاده از مدلهای میزبان ابری میتواند درست مانند دیگر استنتاجها با استفاده از Firebase AI Logic Client SDK برای وب نظارت شود.
درباره تجربه خود با Firebase AI Logic بازخورد بدهید