باستخدام Gemini API، يمكنك إنشاء محادثات بتنسيق حر على مستوى
أدوار متعدّدة. تعمل حزمة تطوير البرامج Firebase AI Logic SDK على تبسيط العملية من خلال إدارة
حالة المحادثة، لذا لا تحتاج إلى تخزين سجلّ المحادثة
بنفسك، على عكس استخدام generateContent()
(أو generateContentStream()
).
قبل البدء
انقر على مزوّد Gemini API لعرض المحتوى الخاص بالمزوّد والرمز البرمجي في هذه الصفحة. |
أكمِل قراءة
دليل البدء، الذي يوضّح كيفية
إعداد مشروعك على Firebase وربط تطبيقك بـ Firebase وإضافة حزمة تطوير البرامج (SDK)
وبدء خدمة الخلفية لمزوّد Gemini API الذي اخترته،
وإنشاء مثيل GenerativeModel
، إذا لم يسبق لك إجراء ذلك.
لاختبار طلباتك وتكرارها وحتى الحصول على مقتطف رمز تم إنشاؤه، ننصحك باستخدام Google AI Studio.
إرسال طلب لإرسال إشعارات عبر المحادثة
قبل تجربة هذا العيّنة، عليك إكمال القسم
قبل البدء من هذا الدليل
لإعداد مشروعك وتطبيقك. في هذا القسم، عليك أيضًا النقر على زر Gemini API مقدّم الخدمة الذي اخترته حتى يظهر لك المحتوى الخاص بالمقدّم في هذه الصفحة. |
لإنشاء محادثة متعددة المقاطع (مثل المحادثة)، ابدأ بإعداد
المحادثة من خلال استدعاء startChat()
. بعد ذلك، استخدِم رمز
sendMessage()
لإرسال رسالة مستخدم جديدة، والتي
ستُلحق أيضًا الرسالة والردّ بسجلّ المحادثة.
هناك خياران محتملان لـ role
المرتبط بالمحتوى في
محادثة:
user
: الدور الذي يقدّم الطلبات. هذه القيمة هي القيمة التلقائية لطلباتsendMessage()
، وتُلقي الدالة استثناءً في حال تم تمرير دور مختلف.model
: الدور الذي يقدّم الردود يمكن استخدام هذا الدور عند الاتصال بـstartChat()
باستخدامhistory
الحالي.
Swift
يمكنك الاتصال برقم startChat()
وsendMessage()
لإرسال رسالة إلى مستخدم جديد:
import FirebaseAI
// 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-2.0-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-2.0-flash")
// Initialize the chat
val chat = generativeModel.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-2.0-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-2.0-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 response = await result.response;
const text = 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-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
Unity
يمكنك الاتصال برقمَي startChat()
و
sendMessage()
لإرسال رسالة إلى مستخدم جديد:
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-2.0-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 مقدّم الخدمة الذي اخترته حتى يظهر لك المحتوى الخاص بالمقدّم في هذه الصفحة. |
يمكنك تحقيق تفاعلات أسرع من خلال عدم انتظار النتيجة الكاملة من
إنشاء النموذج، واستخدام البث بدلاً من ذلك للتعامل مع النتائج الجزئية.
لبث الردّ، اتصل على sendMessageStream()
.
ما هي الإجراءات الأخرى التي يمكنك اتّخاذها؟
- تعرَّف على كيفية احتساب الرموز المميّزة قبل إرسال طلبات طويلة إلى النموذج.
- إعداد Cloud Storage for Firebase لكي تتمكّن من تضمين ملفات كبيرة في طلباتك المتعدّدة الوسائط والحصول على حلّ أكثر تنظيمًا لتقديم الملفات في طلباتك يمكن أن تتضمّن الملفات صورًا وملفات PDF وفيديوهات وملفات صوتية.
-
ابدأ التفكير في الاستعداد للإنتاج (اطّلِع على
قائمة التحقّق من الإنتاج)،
بما في ذلك:
- إعداد Firebase App Check بهدف حماية Gemini API من إساءة استخدام العملاء غير المصرّح لهم
- دمج Firebase Remote Config لتعديل القيم في تطبيقك (مثل اسم الطراز) بدون طرح إصدار جديد من التطبيق
تجربة إمكانات أخرى
- إنشاء نص من الطلبات النصية فقط
- يمكنك إنشاء نص من خلال طلب أنواع ملفات مختلفة، مثل الصور، ملفات PDF، الفيديوهات، المقاطع الصوتية.
- إنشاء إخراج منظَّم (مثل تنسيق JSON) من كلّ من الطلبات النصية والطلبات باستخدام وسائط متعدّدة
- إنشاء صور من طلبات نصية
- استخدِم استدعاء الدوال لربط النماذج التوليدية بالأنظمة والمعلومات الخارجية.
التعرّف على كيفية التحكّم في إنشاء المحتوى
- التعرّف على تصميم الطلبات، بما في ذلك أفضل الممارسات والاستراتيجيات وأمثلة الطلبات
- ضبط مَعلمات النموذج، مثل درجة الحرارة والحد الأقصى لرموز الإخراج (لميزة Gemini) أو نسبة العرض إلى الارتفاع وإنشاء الأشخاص (لميزة Imagen)
- استخدام إعدادات الأمان لضبط احتمالية تلقّي ردود قد تُعتبر ضارة
مزيد من المعلومات عن الطُرز المتوافقة
اطّلِع على مزيد من المعلومات عن النماذج المتاحة لحالات الاستخدام المختلفة واطلاعك على الحصص و الأسعار.تقديم ملاحظات حول تجربتك مع Firebase AI Logic