באמצעות Gemini API, אתם יכולים ליצור שיחות חופשיות עם כמה פניות. Firebase AI Logic SDK מפשט את התהליך על ידי ניהול מצב השיחה, כך שבניגוד ל-generateContent() (או ל-generateContentStream()), אתם לא צריכים לאחסן את היסטוריית השיחות בעצמכם.
דילוג לקוד של צ'אט טקסט בלבד דילוג לקוד של עריכת תמונות איטרטיבית דילוג לקוד של תשובות בסטרימינג
לפני שמתחילים
|
כדי לראות תוכן וקוד שספציפיים לספק, לוחצים על הספק Gemini API בדף הזה. |
אם עדיין לא עשיתם את זה, אתם צריכים לפעול לפי המדריך לתחילת הדרך, שבו מוסבר איך להגדיר את הפרויקט ב-Firebase, לקשר את האפליקציה ל-Firebase, להוסיף את ה-SDK, להפעיל את שירות הקצה העורפי של ספק ה-Gemini API שבחרתם וליצור מכונה של GenerativeModel.
כדי לבדוק את ההנחיות ולשפר אותן, מומלץ להשתמש ב-Google AI Studio.
מקורות מידע שימושיים
Swift
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם אפליקציה משלכם לפלטפורמות של אפל, אתם יכולים להשתמש באפליקציה למתחילים. כדי להשתמש באפליקציה למתחילים, תצטרכו לקשר אותה לפרויקט Firebase.
לצפייה בסרטון הדרכה
בסרטון הזה מוסבר איך להטמיע צ'אט עם Firebase AI Logic באמצעות פיתוח אפליקציה אמיתית לתכנון ארוחות שמבוססת על AI, שמאפשרת למשתמשים לשוחח בצ'אט עם שף במטבח על כל מתכון שהם רוצים להכין.
אתם יכולים גם להוריד את בסיס הקוד של האפליקציה שבסרטון ולעיין בו.
צפייה בבסיס הקוד של האפליקציה בסרטון
Kotlin
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם אפליקציה משלכם ל-Android, אתם יכולים להשתמש באפליקציה לדוגמה. כדי להשתמש באפליקציה לדוגמה, תצטרכו לקשר אותה לפרויקט Firebase.
Java
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם אפליקציה משלכם ל-Android, אתם יכולים להשתמש באפליקציה לדוגמה. כדי להשתמש באפליקציה לדוגמה, תצטרכו לקשר אותה לפרויקט Firebase.
Web
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם אפליקציית אינטרנט משלכם, אתם יכולים להשתמש באפליקציית ההתחלה המהירה. כדי להשתמש באפליקציית ההתחלה המהירה, תצטרכו לקשר אותה לפרויקט Firebase.
לצפייה בסרטון הדרכה
בסרטון הזה מוסבר איך להטמיע צ'אט עם Firebase AI Logic באמצעות פיתוח אפליקציה אמיתית לתכנון ארוחות שמבוססת על AI, שמאפשרת למשתמשים לשוחח בצ'אט עם שף במטבח על כל מתכון שהם רוצים להכין.
אתם יכולים גם להוריד את בסיס הקוד של האפליקציה שבסרטון ולעיין בו.
צפייה בבסיס הקוד של האפליקציה בסרטון
Dart
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם אפליקציית Flutter משלכם, אתם יכולים להשתמש באפליקציה לדוגמה. כדי להשתמש באפליקציה לדוגמה, תצטרכו לחבר אותה לפרויקט Firebase.
Unity
התנסות באפליקציה למתחילים
אתם יכולים להשתמש באפליקציה למתחילים כדי לנסות את ה-SDK במהירות ולראות הטמעה מלאה של תרחישים שונים לדוגמה. אם אין לכם משחק Unity משלכם, אתם יכולים להשתמש באפליקציה לדוגמה. כדי להשתמש באפליקציה, צריך לחבר אותה לפרויקט Firebase.
יצירת חוויית צ'אט עם טקסט בלבד
|
לפני שמנסים את הדוגמה הזו, צריך להשלים את השלבים בקטע לפני שמתחילים במדריך הזה כדי להגדיר את הפרויקט והאפליקציה. בקטע הזה צריך גם ללחוץ על כפתור של ספק Gemini API שבחרתם כדי לראות בדף הזה תוכן שספציפי לספק. |
כדי ליצור שיחה עם כמה פניות (כמו צ'אט), מתחילים בהפעלת הצ'אט באמצעות קריאה ל-startChat(). אחר כך משתמשים ב-sendMessage() כדי לשלוח הודעה חדשה מהמשתמש, שגם תוסיף את ההודעה והתשובה להיסטוריית השיחות.
יש שתי אפשרויות ל-role שמשויך לתוכן בשיחה:
user: התפקיד שמספק את ההנחיות. הערך הזה הוא ברירת המחדל לקריאות ל-sendMessage(), והפונקציה מחזירה חריגה אם מועבר תפקיד אחר.
model: התפקיד שמספק את התשובות. אפשר להשתמש בתפקיד הזה כשקוראים ל-startChat()עםhistoryקיים.שימו לב: ב-
gemini-4-argon, במודלים שלgemini-3.x-flash(חוץ מ-gemini-3.5-flash) וב-gemini-3.5-flash-lite, אין תמיכה בתשובת מודל מאוכלסת מראש. אם התור האחרון בבקשה שאינו ריק הוא תור שלmodel, הבקשה נכשלת עם שגיאה 400.
Swift
אתם יכולים להפעיל את הפונקציות startChat() ו-sendMessage() כדי לשלוח הודעה למשתמש חדש:
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(modelName: "gemini-3.8-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
Kotlin
כדי לשלוח הודעה למשתמש חדש, אפשר להפעיל את startChat() ו-sendMessage():
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash")
// Initialize the chat
val chat = model.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
כדי לשלוח הודעה למשתמש חדש, אפשר להפעיל את
startChat()
ואת
sendMessage():
ListenableFuture.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
אתם יכולים להפעיל את הפונקציות startChat() ו-sendMessage() כדי לשלוח הודעה למשתמש חדש:
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 with a model that supports your use case.
const model = getGenerativeModel(ai, { model: "gemini-3.8-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ type: "text", text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ type: "text", text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const text = result.response.text();
console.log(text);
}
run();
Dart
אתם יכולים להפעיל את הפונקציות startChat() ו-sendMessage() כדי לשלוח הודעה למשתמש חדש:
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-3.8-flash');
// Initialize the chat with history
final chat = model.startChat(
history: [
Content.text('Hello, I have 2 dogs in my house.'),
Content.model([const TextPart('Great to meet you. What would you like to know?')]),
],
);
// Send a message to the chat
final response = await chat.sendMessage(Content.text('How many paws are in my house?'));
print(response.text);
Unity
אתם יכולים להפעיל את הפונקציות StartChat() ו-SendMessageAsync() כדי לשלוח הודעה למשתמש חדש:
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case.
var model = ai.GetGenerativeModel(modelName: "gemini-3.8-flash");
// Optionally specify existing chat history
var history = new [] {
ModelContent.Text("Hello, I have 2 dogs in my house."),
new ModelContent("model", new ModelContent.TextPart("Great to meet you. What would you like to know?")),
};
// Initialize the chat with optional chat history
var chat = model.StartChat(history);
// To generate text output, call SendMessageAsync and pass in the message
var response = await chat.SendMessageAsync("How many paws are in my house?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
איך בוחרים מודל שמתאימים לתרחיש לדוגמה ולאפליקציה.
איך משפרים ועורכים תמונות באמצעות שיחה עם זיכרון
|
לפני שמנסים את הדוגמה הזו, צריך להשלים את השלבים בקטע לפני שמתחילים במדריך הזה כדי להגדיר את הפרויקט והאפליקציה. בקטע הזה צריך גם ללחוץ על כפתור של ספק Gemini API שבחרתם כדי לראות בדף הזה תוכן שספציפי לספק. |
באמצעות שיחה עם זיכרון, אתם יכולים לבקש ממודל Gemini Nano Banana לשנות את התמונות שהוא יוצר או שאתם מספקים.
יוצרים מופע של GenerativeModel, כוללים את אופן התגובה של IMAGE בהגדרות המודל, וקוראים ל-startChat() ול-sendMessage() כדי לשלוח הודעות חדשות למשתמשים.
Swift
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a Gemini model that supports image output.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: "gemini-nano-banana-2.1",
// Configure the model to respond with images only.
generationConfig: GenerationConfig(responseModalities: [.image])
)
// Initialize the chat
let chat = model.startChat()
guard let image = UIImage(named: "scones") else { fatalError("Image file not found.") }
// Provide an initial text prompt instructing the model to edit the image
let prompt = "Edit this image to make it look like a cartoon"
// To generate an initial response, send a user message with the image and text prompt
let response = try await chat.sendMessage(image, prompt)
// Inspect the generated image
guard let inlineDataPart = response.inlineDataParts.first else {
fatalError("No image data in response.")
}
guard let uiImage = UIImage(data: inlineDataPart.data) else {
fatalError("Failed to convert data to UIImage.")
}
// Follow up requests do not need to specify the image again
let followUpResponse = try await chat.sendMessage("But make it old-school line drawing style")
// Inspect the edited image after the follow up request
guard let followUpInlineDataPart = followUpResponse.inlineDataParts.first else {
fatalError("No image data in response.")
}
guard let followUpUIImage = UIImage(data: followUpInlineDataPart.data) else {
fatalError("Failed to convert data to UIImage.")
}
Kotlin
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a Gemini model that supports image output.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = "gemini-nano-banana-2.1",
// Configure the model to respond with images only.
generationConfig = generationConfig {
responseModalities = listOf(ResponseModality.IMAGE) }
)
// Provide an image for the model to edit
val bitmap = BitmapFactory.decodeResource(context.resources, R.drawable.scones)
// Create the initial prompt instructing the model to edit the image
val prompt = content {
image(bitmap)
text("Edit this image to make it look like a cartoon")
}
// Initialize the chat
val chat = model.startChat()
// To generate an initial response, send a user message with the image and text prompt
var response = chat.sendMessage(prompt)
// Inspect the returned image
var generatedImageAsBitmap = response
.candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image
// Follow up requests do not need to specify the image again
response = chat.sendMessage("But make it old-school line drawing style")
generatedImageAsBitmap = response
.candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image
Java
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a Gemini model that supports image output.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI()).generativeModel(
"gemini-nano-banana-2.1",
// Configure the model to respond with images only.
new GenerationConfig.Builder()
.setResponseModalities(Arrays.asList(ResponseModality.IMAGE))
.build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide an image for the model to edit
Bitmap bitmap = BitmapFactory.decodeResource(resources, R.drawable.scones);
// Initialize the chat
ChatFutures chat = model.startChat();
// Create the initial prompt instructing the model to edit the image
Content prompt = new Content.Builder()
.setRole("user")
.addImage(bitmap)
.addText("Edit this image to make it look like a cartoon")
.build();
// To generate an initial response, send a user message with the image and text prompt
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(prompt);
// Extract the image from the initial response
ListenableFuture<@Nullable Bitmap> initialRequest = Futures.transform(response, result -> {
for (Part part : result.getCandidates().get(0).getContent().getParts()) {
if (part instanceof ImagePart) {
ImagePart imagePart = (ImagePart) part;
return imagePart.getImage();
}
}
return null;
}, executor);
// Follow up requests do not need to specify the image again
ListenableFuture<GenerateContentResponse> modelResponseFuture = Futures.transformAsync(
initialRequest,
generatedImage -> {
Content followUpPrompt = new Content.Builder()
.addText("But make it old-school line drawing style")
.build();
return chat.sendMessage(followUpPrompt);
},
executor);
// Add a final callback to check the reworked image
Futures.addCallback(modelResponseFuture, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
for (Part part : result.getCandidates().get(0).getContent().getParts()) {
if (part instanceof ImagePart) {
ImagePart imagePart = (ImagePart) part;
Bitmap generatedImageAsBitmap = imagePart.getImage();
break;
}
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, ResponseModality } 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 with a model that supports your use case
const model = getGenerativeModel(ai, {
model: "gemini-nano-banana-2.1",
// Configure the model to respond with images only.
generationConfig: {
responseModalities: [ResponseModality.IMAGE],
},
});
// Prepare an image for the model to edit
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 },
};
}
const fileInputEl = document.querySelector("input[type=file]");
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// Provide an initial text prompt instructing the model to edit the image
const prompt = "Edit this image to make it look like a cartoon";
// Initialize the chat
const chat = model.startChat();
// To generate an initial response, send a user message with the image and text prompt
const result = await chat.sendMessage([prompt, imagePart]);
// Request and inspect the generated image
try {
const inlineDataParts = result.response.inlineDataParts();
if (inlineDataParts?.[0]) {
// Inspect the generated image
const image = inlineDataParts[0].inlineData;
console.log(image.mimeType, image.data);
}
} catch (err) {
console.error('Prompt or candidate was blocked:', err);
}
// Follow up requests do not need to specify the image again
const followUpResult = await chat.sendMessage("But make it old-school line drawing style");
// Request and inspect the returned image
try {
const followUpInlineDataParts = followUpResult.response.inlineDataParts();
if (followUpInlineDataParts?.[0]) {
// Inspect the generated image
const followUpImage = followUpInlineDataParts[0].inlineData;
console.log(followUpImage.mimeType, followUpImage.data);
}
} catch (err) {
console.error('Prompt or candidate was blocked:', err);
}
Dart
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a Gemini model that supports image output.
final model = FirebaseAI.googleAI().generativeModel(
model: 'gemini-nano-banana-2.1',
// Configure the model to respond with images only.
generationConfig: GenerationConfig(responseModalities: [ResponseModalities.image]),
);
// Prepare an image for the model to edit
final image = await File('scones.jpg').readAsBytes();
final imagePart = InlineDataPart('image/jpeg', image);
// Provide an initial text prompt instructing the model to edit the image
final prompt = TextPart("Edit this image to make it look like a cartoon");
// Initialize the chat
final chat = model.startChat();
// To generate an initial response, send a user message with the image and text prompt
final response = await chat.sendMessage([
Content.multi([prompt,imagePart])
]);
// Inspect the returned image
if (response.inlineDataParts.isNotEmpty) {
final imageBytes = response.inlineDataParts[0].bytes;
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
// Follow up requests do not need to specify the image again
final followUpResponse = await chat.sendMessage([
Content.text("But make it old-school line drawing style")
]);
// Inspect the returned image
if (followUpResponse.inlineDataParts.isNotEmpty) {
final followUpImageBytes = response.inlineDataParts[0].bytes;
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
Unity
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a Gemini model that supports image output.
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
modelName: "gemini-nano-banana-2.1",
// Configure the model to respond with images only.
generationConfig: new GenerationConfig(
responseModalities: new[] { ResponseModality.Image })
);
// Prepare an image for the model to edit
var imageFile = System.IO.File.ReadAllBytes(System.IO.Path.Combine(
UnityEngine.Application.streamingAssetsPath, "scones.jpg"));
var image = ModelContent.InlineData("image/jpeg", imageFile);
// Provide an initial text prompt instructing the model to edit the image
var prompt = ModelContent.Text("Edit this image to make it look like a cartoon.");
// Initialize the chat
var chat = model.StartChat();
// To generate an initial response, send a user message with the image and text prompt
var response = await chat.SendMessageAsync(new [] { prompt, image });
// Inspect the returned image
var imageParts = response.Candidates.First().Content.Parts
.OfType<ModelContent.InlineDataPart>()
.Where(part => part.MimeType == "image/png");
// Load the image into a Unity Texture2D object
UnityEngine.Texture2D texture2D = new(2, 2);
if (texture2D.LoadImage(imageParts.First().Data.ToArray())) {
// Do something with the image
}
// Follow up requests do not need to specify the image again
var followUpResponse = await chat.SendMessageAsync("But make it old-school line drawing style");
// Inspect the returned image
var followUpImageParts = followUpResponse.Candidates.First().Content.Parts
.OfType<ModelContent.InlineDataPart>()
.Where(part => part.MimeType == "image/png");
// Load the image into a Unity Texture2D object
UnityEngine.Texture2D followUpTexture2D = new(2, 2);
if (followUpTexture2D.LoadImage(followUpImageParts.First().Data.ToArray())) {
// Do something with the image
}
הצגת התשובה באופן שוטף
|
לפני שמנסים את הדוגמה הזו, צריך להשלים את השלבים בקטע לפני שמתחילים במדריך הזה כדי להגדיר את הפרויקט והאפליקציה. בקטע הזה צריך גם ללחוץ על כפתור של ספק Gemini API שבחרתם כדי לראות בדף הזה תוכן שספציפי לספק. |
כדי לקבל אינטראקציות מהירות יותר, אתם יכולים לא לחכות לתוצאה המלאה מהמודל, אלא להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.
כדי להעביר את התשובה בסטרימינג, צריך להפעיל את sendMessageStream().
מה עוד אפשר לעשות?
- איך סופרים טוקנים לפני ששולחים הנחיות ארוכות למודל.
- להגדיר את Cloud Storage for Firebase כדי לכלול קבצים גדולים בבקשות המולטי-מודאליות, ולקבל פתרון מנוהל יותר להוספת קבצים בהנחיות. הקבצים יכולים לכלול תמונות, קובצי PDF, סרטונים וקטעי אודיו.
-
מתחילים לחשוב על הכנה לייצור (ראו את רשימת המשימות לייצור):
- אכפו את Firebase App Check מוקדם ככל האפשר כדי להגן על Gemini API מפני ניצול לרעה על ידי לקוחות לא מורשים.
- השתמשו בFirebase Remote Config או בתבניות לפרומפטים בשרת כדי שתוכלו לשנות לפי דרישה את ההגדרות של תכונת ה-AI (כמו שם המודל) בלי להוציא גרסה חדשה של האפליקציה.
לנסות יכולות אחרות
- ליצור טקסט דינמי מבוסס-AI מהנחיות טקסט בלבד.
- ליצור טקסט באמצעות הנחיות עם סוגי קבצים שונים, כמו תמונות, קובצי PDF, סרטונים ואודיו.
- ליצור פלט מובנה (כמו JSON) מפרומפטים של טקסט ומפרומפטים מולטי-מודאליים.
- ליצור ולערוך תמונות באמצעות פרומפטים טקסטואליים ומולטי-מודאליים.
-
להשתמש בכלים (כמו קריאה להפעלת פונקציות וביסוס בעזרת
Google Search אוGoogle Maps ) כדי לקשר מודל Gemini לחלקים אחרים באפליקציה ולמערכות ולמידע חיצוניים.
איך לשלוט ביצירת התוכן
- הסבר על עיצוב הנחיות, כולל שיטות מומלצות, אסטרטגיות ודוגמאות להנחיות.
- להגדיר פרמטרים של מודלים, כמו המספר המקסימלי של טוקנים בפלט, ההסתברות של טוקנים חוזרים בפלט וכו'.
- להשתמש בהגדרות הבטיחות כדי לשנות את הסבירות לקבלת תשובות שעלולות להיחשב כמזיקות.
מידע נוסף על המודלים הנתמכים
מידע ולמידה על המודלים שזמינים לתרחישי שימוש שונים, המכסות והתמחור שלהם.שליחת משוב על חוויית השימוש ב-Firebase AI Logic