إنشاء نص من طلبات متعددة الوسائط باستخدام Gemini API


عند طلب Gemini API من تطبيقك باستخدام حزمة تطوير برامج Vertex AI in Firebase SDK، يمكنك توجيه نموذج Gemini لإنشاء نص استنادًا إلى إدخال متعدد الوسائط. يمكن أن تتضمّن الطلبات المتعدّدة الوسائط وسائط متعددة (أو أنواعًا من الإدخال)، مثل النصوص والصور وملفات PDF والملفات النصية العادية والفيديوهات والمقاطع الصوتية.

في كل طلب متعدد الوسائط، يجب دائمًا تقديم ما يلي:

  • حجم الملف هو mimeType. اطّلِع على أنواع MIME المتوافقة لكل ملف إدخال.

  • الملف يمكنك تقديم الملف كبيانات مضمّنة (كما هو موضّح في هذه الصفحة) أو باستخدام عنوان URL أو معرّف الموارد المنتظم (URI).

لاختبار طلبات التفاعل المتعدّد وتحسينها، ننصحك باستخدام Vertex AI Studio.

قبل البدء

إذا لم يسبق لك ذلك، أكمِل قراءة دليل البدء الذي يوضّح كيفية إعداد مشروعك على Firebase وربط تطبيقك بـ Firebase وإضافة حزمة تطوير البرامج (SDK) وبدء خدمة Vertex AI وإنشاء مثيل GenerativeModel.

إنشاء نص من نص وصورة واحدة إنشاء نص من نص وصور متعددة إنشاء نص من نص وفيديو

نماذج ملفات الوسائط

إذا لم تكن لديك ملفات وسائط، يمكنك استخدام الملفات التالية المتاحة للجميع. بما أنّ هذه الملفات يتم تخزينها في حِزم ليست في مشروعك على Firebase، عليك استخدام تنسيق https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE لعنوان URL.

إنشاء نص من نص وصورة واحدة

تأكَّد من إكمال قسم قبل البدء في هذا الدليل قبل تجربة هذا العيّنة.

يمكنك استدعاء 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 من إساءة استخدام العملاء غير المصرّح لهم. يُرجى أيضًا مراجعة قائمة التحقّق من الإنتاج.

تجربة إمكانات أخرى

التعرّف على كيفية التحكّم في إنشاء المحتوى

يمكنك أيضًا تجربة الطلبات وإعدادات النماذج باستخدام Vertex AI Studio.

مزيد من المعلومات عن الطُرز المتوافقة

اطّلِع على مزيد من المعلومات عن النماذج المتاحة لحالات الاستخدام المختلفة واطلاعك على الحصص و الأسعار.


تقديم ملاحظات حول تجربتك مع Vertex AI in Firebase