عند طلب Gemini API من تطبيقك باستخدام حزمة تطوير برامج Vertex AI in Firebase SDK، يمكنك توجيه نموذج Gemini لإنشاء نص استنادًا إلى إدخال متعدد الوسائط. يمكن أن تتضمّن الطلبات المتعدّدة الوسائط وسائط متعددة (أو أنواعًا من الإدخال)، مثل النصوص والصور وملفات PDF والملفات النصية العادية والفيديوهات والمقاطع الصوتية.
في كل طلب متعدد الوسائط، يجب دائمًا تقديم ما يلي:
حجم الملف هو
mimeType
. اطّلِع على أنواع MIME المتوافقة لكل ملف إدخال.الملف يمكنك تقديم الملف كبيانات مضمّنة (كما هو موضّح في هذه الصفحة) أو باستخدام عنوان URL أو معرّف الموارد المنتظم (URI).
لاختبار طلبات التفاعل المتعدّد وتحسينها، ننصحك باستخدام Vertex AI Studio.
خيارات أخرى للعمل مع Gemini API
يمكنك تجربة إصدار "Google AI" بديل من Gemini API
الحصول على إذن وصول مجاني (ضمن الحدود المتاحة) باستخدام Google AI Studio و Google AI حِزم تطوير البرامج (SDK) للعملاء. يجب استخدام حِزم تطوير البرامج (SDK) هذه لإنشاء النماذج الأولية فقط في تطبيقات الويب والتطبيقات المتوافقة مع الأجهزة الجوّالة.بعد التعرّف على طريقة عمل Gemini API، يمكنك نقل بياناتك إلى حِزم Vertex AI in Firebase SDK (هذه المستندات)، التي تتضمّن العديد من الميزات الإضافية المهمة للتطبيقات المتوافقة مع الأجهزة الجوّالة والويب، مثل حماية واجهة برمجة التطبيقات من إساءة الاستخدام باستخدام Firebase App Check وتوفير إمكانية استخدام ملفات وسائط كبيرة في الطلبات.
يمكنك اختياريًا استدعاء Vertex AI Gemini API من جهة الخادم (مثل استخدام Python أو Node.js أو Go)
استخدِم حِزم تطوير البرامج (SDK) من جهة الخادم لVertex AI أو Genkit أو Firebase Extensions لGemini API.
قبل البدء
إذا لم يسبق لك ذلك، أكمِل قراءة
دليل البدء الذي يوضّح كيفية
إعداد مشروعك على Firebase وربط تطبيقك بـ Firebase وإضافة حزمة تطوير البرامج (SDK)
وبدء خدمة Vertex AI وإنشاء مثيل GenerativeModel
.
إنشاء نص من نص وصورة واحدة إنشاء نص من نص وصور متعددة إنشاء نص من نص وفيديو
نماذج ملفات الوسائط
إذا لم تكن لديك ملفات وسائط، يمكنك استخدام الملفات التالية المتاحة للجميع. بما أنّ هذه الملفات يتم تخزينها في حِزم ليست في
مشروعك على Firebase، عليك استخدام تنسيق
https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE
لعنوان URL.
الصورة:
https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
باستخدام نوع MIMEimage/jpeg
اطّلِع على هذه الصورة أو نزِّلها.PDF:
https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf
باستخدام نوع MIMEapplication/pdf
اطّلِع على ملف PDF هذا أو نزِّله.الفيديو:
https://storage.googleapis.com/cloud-samples-data/video/animals.mp4
باستخدام نوع MIMEvideo/mp4
شاهِد هذا الفيديو أو نزِّله.المحتوى الصوتي:
https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3
باستخدام نوع MIMEaudio/mp3
استمع إلى هذا المقطع الصوتي أو نزِّله.
إنشاء نص من نص وصورة واحدة
تأكَّد من إكمال قسم قبل البدء في هذا الدليل قبل تجربة هذا العيّنة.
يمكنك استدعاء Gemini API باستخدام طلبات متعددة الوسائط تتضمّن كلّ من النص وملف واحد (مثل صورة، كما هو موضّح في هذا المثال). بالنسبة إلى هذه الطلبات، عليك استخدام نموذج يتيح استخدام الوسائط في الطلبات (مثل Gemini 2.0 Flash).
يُرجى الحرص على مراجعة المتطلبات والاقتراحات المتعلّقة بملفات الإدخال.
اختَر ما إذا كنت تريد بث الردّ (generateContentStream
) أو الانتظار
لتلقّي الردّ إلى أن يتم إنشاء النتيجة بالكامل (generateContent
).
يمكنك تحقيق تفاعلات أسرع من خلال عدم انتظار النتيجة الكاملة من إنشاء النموذج، واستخدام البث بدلاً من ذلك للتعامل مع النتائج الجزئية.
يوضّح هذا المثال كيفية استخدام generateContentStream()
لبث النص الذي تم إنشاؤه من طلب طلب متعدد الوسائط يتضمّن نصًا
وصورة واحدة:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
بدلاً من ذلك، يمكنك الانتظار إلى أن تظهر النتيجة بالكامل بدلاً من بثها، ولا يتم عرض النتيجة إلا بعد أن يُكمل النموذج عملية الإنشاء بالكامل.
يوضّح هذا المثال كيفية استخدام
generateContent()
لإنشاء نص من طلب طلب متعدّد الوسائط يتضمّن نصًا و
صورة واحدة:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")
تعرَّف على كيفية اختيار نموذج وموقع جغرافي اختياريًا مناسبَين لحالة الاستخدام والتطبيق.
إنشاء نص من نص وصور متعددة
تأكَّد من إكمال قسم قبل البدء في هذا الدليل قبل تجربة هذا العيّنة.
يمكنك الاتصال بخدمة Gemini API باستخدام طلبات متعددة الوسائط التي تتضمّن كلّ من النصوص وملفات متعددة (مثل الصور، كما هو موضّح في هذا المثال). بالنسبة إلى هذه الطلبات، عليك استخدام نموذج يتيح استخدام الوسائط في الطلبات (مثل Gemini 2.0 Flash).
يُرجى الحرص على مراجعة المتطلبات والاقتراحات المتعلّقة بملفات الإدخال.
اختَر ما إذا كنت تريد بث الردّ (generateContentStream
) أو الانتظار
لتلقّي الردّ إلى أن يتم إنشاء النتيجة بالكامل (generateContent
).
يمكنك تحقيق تفاعلات أسرع من خلال عدم انتظار النتيجة الكاملة من إنشاء النموذج، واستخدام البث بدلاً من ذلك للتعامل مع النتائج الجزئية.
يوضّح هذا المثال كيفية استخدام
generateContentStream()
لبث النص الذي تم إنشاؤه من طلب طلب متعدّد الوسائط يتضمّن نصًا
وصورًا متعددة:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
بدلاً من ذلك، يمكنك الانتظار للحصول على النتيجة بالكامل بدلاً من بثها، ولا يتم عرض النتيجة إلا بعد أن يُكمل النموذج عملية الإنشاء بالكامل.
يوضّح هذا المثال كيفية استخدام
generateContent()
لإنشاء نص من طلب طلب متعدّد الوسائط يتضمّن نصًا و
صورًا متعدّدة:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")
تعرَّف على كيفية اختيار نموذج وموقع جغرافي اختياريًا مناسبَين لحالة الاستخدام والتطبيق.
إنشاء نص من نص وفيديو
تأكَّد من إكمال قسم قبل البدء في هذا الدليل قبل تجربة هذا العيّنة.
يمكنك الاتصال بـ Gemini API باستخدام طلبات متعددة الوسائط تتضمّن ملفّات نصية وملفات فيديو (كما هو موضّح في هذا المثال). بالنسبة إلى هذه المكالمات، تحتاج إلى استخدام نموذج يتيح استخدام الوسائط في الطلبات (مثل Gemini 2.0 Flash).
يُرجى الحرص على مراجعة المتطلبات والاقتراحات المتعلّقة بملفات الإدخال.
اختَر ما إذا كنت تريد بث الردّ (generateContentStream
) أو الانتظار
لتلقّي الردّ إلى أن يتم إنشاء النتيجة بالكامل (generateContent
).
يمكنك تحقيق تفاعلات أسرع من خلال عدم انتظار النتيجة الكاملة من إنشاء النموذج، واستخدام البث بدلاً من ذلك للتعامل مع النتائج الجزئية.
يوضّح هذا المثال كيفية استخدام
generateContentStream()
لبث نص تم إنشاؤه من طلب طلب متعدد الوسائط يتضمّن نصًا
وفيديو واحدًا:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
بدلاً من ذلك، يمكنك الانتظار إلى أن تظهر النتيجة بالكامل بدلاً من بثها، ولا يتم عرض النتيجة إلا بعد أن يُكمل النموذج عملية الإنشاء بالكامل.
يوضّح هذا المثال كيفية استخدام
generateContent()
لإنشاء نص من طلب طلب متعدد الوسائط يتضمّن نصًا و
فيديو واحدًا:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
تعرَّف على كيفية اختيار نموذج وموقع جغرافي اختياريًا مناسبَين لحالة الاستخدام والتطبيق.
المتطلبات والاقتراحات المتعلّقة بملفات الإدخال
اطّلِع على ملفات الإدخال المتوافقة ومتطلبات Vertex AI Gemini API للتعرّف على ما يلي:
- خيارات مختلفة لتقديم ملف في طلب
- أنواع الملفات المتوافقة
- أنواع MIME المتوافقة وكيفية تحديدها
- المتطلبات وأفضل الممارسات المتعلّقة بالملفات والطلبات المتعدّدة الوسائط
ما هي الإجراءات الأخرى التي يمكنك اتّخاذها؟
- تعرَّف على كيفية احتساب الرموز المميّزة قبل إرسال طلبات طويلة إلى النموذج.
- إعداد Cloud Storage for Firebase لكي تتمكّن من تضمين ملفات كبيرة في طلباتك المتعدّدة الوسائط والحصول على حلّ أكثر تنظيمًا لتقديم الملفات في طلباتك يمكن أن تتضمّن الملفات صورًا وملفات PDF وفيديوهات وملفات صوتية.
- ابدأ التفكير في التحضير للإصدار العلني، بما في ذلك إعداد Firebase App Check لحماية Gemini API من إساءة استخدام العملاء غير المصرّح لهم. يُرجى أيضًا مراجعة قائمة التحقّق من الإنتاج.
تجربة إمكانات أخرى
- إنشاء محادثات متعددة المقاطع (محادثة)
- إنشاء نص من الطلبات النصية فقط
- إنشاء إخراج منظَّم (مثل تنسيق JSON) من كلّ من الطلبات النصية والطلبات المتعدّدة الوسائط
- إنشاء صور من طلبات نصية
- استخدِم استدعاء الدوال لربط النماذج التوليدية بالأنظمة والمعلومات الخارجية.
التعرّف على كيفية التحكّم في إنشاء المحتوى
- التعرّف على تصميم الطلبات، بما في ذلك أفضل الممارسات والاستراتيجيات وأمثلة الطلبات
- ضبط مَعلمات النموذج، مثل درجة الحرارة والحد الأقصى لرموز الإخراج (لميزة Gemini) أو نسبة العرض إلى الارتفاع وإنشاء الأشخاص (لميزة Imagen)
- استخدام إعدادات الأمان لتعديل احتمالية تلقّي ردود قد تُعتبر ضارة
مزيد من المعلومات عن الطُرز المتوافقة
اطّلِع على مزيد من المعلومات عن النماذج المتاحة لحالات الاستخدام المختلفة واطلاعك على الحصص و الأسعار.تقديم ملاحظات حول تجربتك مع Vertex AI in Firebase