ساختن مکالمه‌های چندنوبتی (گپ) بااستفاده از Gemini API

بااستفاده از Gemini API، می‌توانید مکالمه‌های آزاد در چندین نوبت بسازید. کیت توسعه نرم‌افزار Firebase AI Logic با مدیریت وضعیت مکالمه، این فرایند را ساده می‌کند، بنابراین برخلاف generateContent() (یا generateContentStream())، لازم نیست سابقه مکالمه را خودتان ذخیره کنید.

رفتن به کد برای گپ فقط نوشتاری رفتن به کد برای ویرایش تکرارشونده تصویر رفتن به کد برای پاسخ‌های جاری‌سازی‌شده

قبل از شروع

روی ارائه‌دهنده Gemini API خود کلیک کنید تا محتوا و کد مخصوص ارائه‌دهنده را در این صفحه مشاهده کنید.

اگر هنوز این کار را نکرده‌اید، راهنمای شروع به کار را تکمیل کنید. این راهنما نحوه راه‌اندازی پروژه Firebase، متصل کردن برنامه به Firebase، افزودن کیت توسعه نرم‌افزار، مقداردهی اولیه سرویس زیرینه برای ارائه‌دهنده Gemini API انتخابی، و ایجاد نمونه GenerativeModel را شرح می‌دهد.

برای آزمایش و تکرار پیام‌واره‌هایتان، توصیه می‌کنیم از Google AI Studio استفاده کنید.

منابع مفید را بررسی کنید

Swift

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر برنامه پلاتفرم‌های Apple خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

تماشای آموزش ویدیویی

این ویدیو نحوه پیاده‌سازی گپ با Firebase AI Logic را با ساختن برنامه هوشواره‌ای واقعی برای برنامه‌ریزی وعده‌های غذایی نشان می‌دهد که به کاربران امکان می‌دهد درباره هر دستور پختی که می‌خواهند آماده کنند با سرآشپز آشپزخانه گپ بزنند.

همچنین می‌توانید پایگاه کد برنامه را در ویدیو بارگیری و کاوش کنید.

مشاهده پایگاه کد برای برنامه ویدیو



Kotlin

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر برنامه Android خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

Java

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر برنامه Android خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

Web

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر برنامه وب خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

تماشای آموزش ویدیویی

این ویدیو نحوه پیاده‌سازی گپ با Firebase AI Logic را با ساختن برنامه هوشواره‌ای واقعی برای برنامه‌ریزی وعده‌های غذایی نشان می‌دهد که به کاربران امکان می‌دهد درباره هر دستور پختی که می‌خواهند آماده کنند با سرآشپز آشپزخانه گپ بزنند.

همچنین می‌توانید پایگاه کد برنامه را در ویدیو بارگیری و کاوش کنید.

مشاهده پایگاه کد برای برنامه ویدیو



Dart

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر برنامه Flutter خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

Unity

برنامه شروع سریع را امتحان کنید

از برنامه شروع سریع برای امتحان کردن سریع کیت توسعه نرم‌افزار و دیدن پیاده‌سازی کامل موارد استفاده مختلف استفاده کنید. یا اگر بازی Unity خودتان را ندارید، از برنامه شروع سریع استفاده کنید. برای استفاده از برنامه شروع سریع، باید آن را به پروژه Firebase متصل کنید.

رفتن به برنامه شروع سریع

ساختن تجربه گپ فقط نوشتاری

پیش‌از امتحان کردن این نمونه، بخش پیش‌از شروع این راهنما را تکمیل کنید تا پروژه و برنامه‌تان را راه‌اندازی کنید.
در آن بخش، همچنین روی دکمه‌ای برای ارائه‌دهنده Gemini API انتخابی‌تان کلیک خواهید کرد تا محتوای مختص ارائه‌دهنده را در این صفحه ببینید.

برای ساختن مکالمه چند نوبتی (مثل گپ)، با مقداردهی اولیه گپ با فراخوانی startChat() شروع کنید. سپس از sendMessage() برای ارسال پیام کاربر جدید استفاده کنید، که پیام و پاسخ را نیز به سابقه گپ اضافه می‌کند.

دو گزینه احتمالی برای role مرتبط با محتوای موجود در مکالمه وجود دارد:

  • user: نقشی که پیام‌واره‌ها را ارائه می‌دهد. این مقدار پیش‌فرض برای تماس با sendMessage() است، و اگر نقش دیگری ارائه شود، تابع استثنا ایجاد می‌کند.

  • model: نقشی که پاسخ‌ها را ارائه می‌دهد. این نقش را می‌توان هنگام تماس با startChat() با history موجود استفاده کرد.

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() تماس بگیرید:

برای Kotlin، روش‌های موجود در این کیت توسعه نرم‌افزار توابع تعلیق هستند و باید از محدوده Coroutine فراخوانی شوند.

// 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() تماس بگیرید:

برای Java، روش‌های موجود در این کیت توسعه نرم‌افزار 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: [{ text: "Hello, I have 2 dogs in my house." }],
      },
      {
        role: "model",
        parts: [{ 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 درباره تصاویری که تولید می‌کند یا تصاویری که ارائه می‌دهید تکرار کنید.

نمونه 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 generativeModel = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "gemini-3.1-flash-image",
  // 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-3.1-flash-image",
    // 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-3.1-flash-image",
    // 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-3.1-flash-image",
  // 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 {
    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-3.1-flash-image',
  // 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-3.1-flash-image",
  // 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 یا الگوهای پیام‌واره سرور استفاده کنید تا بتوانید بدون انتشار نسخه جدید برنامه، تغییرات درخواستی را در پیکربندی‌های ویژگی هوش مصنوعی خود (مثل نام مدل) اعمال کنید.

امتحان کردن قابلیت‌های دیگر

با نحوه کنترل تولید محتوا آشنا شوید

همچنین می‌توانید با پیام‌واره‌ها و پیکربندی‌های مدل آزمایش کنید و حتی بااستفاده از Google AI Studio یک تکه‌کد تولیدشده دریافت کنید.

درباره مدل‌های پشتیبانی‌شده بیشتر بدانید

درباره مدل‌های دردسترس برای موارد استفاده مختلف و سهمیه‌ها و قیمت‌گذاری آن‌ها بیشتر بدانید.


بازخورد دادن درباره تجربه‌تان با Firebase AI Logic