Cuando llames a Gemini API desde tu app con un SDK de Vertex AI in Firebase, puedes pedirle al modelo de Gemini que genere texto según una entrada multimodal. Las instrucciones multimodales pueden incluir varias modalidades (o tipos de entrada), como texto junto con imágenes, archivos PDF, archivos de texto sin formato, video y audio.
En cada solicitud multimodal, siempre debes proporcionar lo siguiente:
El
mimeType
del archivo. Obtén información sobre los tipos de MIME compatibles de cada archivo de entrada.El archivo. Puedes proporcionar el archivo como datos intercalados (como se muestra en esta página) o con su URL o URI.
Para probar y, luego, iterar las instrucciones multimodales, recomendamos usar Vertex AI Studio.
Antes de comenzar
Si aún no lo hiciste, completa la guía de introducción a los SDKs de Vertex AI in Firebase. Asegúrate de haber hecho lo siguiente:
Configura un proyecto de Firebase nuevo o existente, incluido el uso del plan de precios Blaze y la habilitación de las APIs requeridas.
Conecta tu app a Firebase, lo que incluye registrarla y agregar la configuración de Firebase a la app.
Agrega el SDK y, luego, inicializa el servicio de Vertex AI y el modelo generativo en tu app.
Después de conectar tu app a Firebase, agregar el SDK y inicializar el servicio Vertex AI y el modelo generativo, está todo listo para llamar a Gemini API.
Genera texto a partir de texto y una sola imagen Genera texto a partir de texto y varias imágenes Genera texto a partir de texto y un video
Archivos multimedia de muestra
Si aún no tienes archivos multimedia, puedes usar los siguientes archivos disponibles de forma pública:
Imagen:
gs://cloud-samples-data/generative-ai/image/scones.jpg
con un tipo MIME deimage/jpeg
.
Consulta o descarga esta imagen.PDF:
gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
con un tipo de MIME deapplication/pdf
.
Consulta o descarga este PDF.Video:
gs://cloud-samples-data/video/animals.mp4
con un tipo de MIME devideo/mp4
Mira o descarga este video.Audio:
gs://cloud-samples-data/generative-ai/audio/pixel.mp3
con un tipo de MIME deaudio/mp3
Escucha o descarga este audio.
Genera texto a partir de texto y una sola imagen
Asegúrate de haber completado la sección Antes de comenzar de esta guía antes de probar este ejemplo.
Puedes llamar a Gemini API con instrucciones multimodales que incluyan texto y un solo archivo (como una imagen, como se muestra en este ejemplo). Para estas llamadas, debes usar un modelo que admita contenido multimedia en las instrucciones (como Gemini 1.5 Flash).
Asegúrate de revisar los requisitos y las recomendaciones para los archivos de entrada.
Elige si quieres transmitir la respuesta (generateContentStream
) o esperar a que se genere todo el resultado (generateContent
).
Transmisión
Puedes lograr interacciones más rápidas si no esperas a que se genere todo el resultado del modelo y, en su lugar, usas la transmisión para controlar los resultados parciales.
En este ejemplo, se muestra cómo usar generateContentStream()
para transmitir texto generado a partir de una solicitud de instrucción multimodal que incluye texto y una sola imagen:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Sin transmisión
Como alternativa, puedes esperar a que se muestre todo el resultado en lugar de transmitirlo. El resultado solo se muestra después de que el modelo completa todo el proceso de generación.
En este ejemplo, se muestra cómo usar generateContent()
para generar texto a partir de una solicitud de instrucción multimodal que incluye texto y una sola imagen:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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.")
Aprende a elegir un modelo de Gemini y, de manera opcional, una ubicación adecuada para tu caso de uso y app.
Genera texto a partir de texto y varias imágenes
Asegúrate de haber completado la sección Antes de comenzar de esta guía antes de probar este ejemplo.
Puedes llamar a Gemini API con instrucciones multimodales que incluyan texto y varios archivos (como imágenes, como se muestra en este ejemplo). Para estas llamadas, debes usar un modelo que admita contenido multimedia en las instrucciones (como Gemini 1.5 Flash).
Asegúrate de revisar los requisitos y las recomendaciones para los archivos de entrada.
Elige si quieres transmitir la respuesta (generateContentStream
) o esperar a que se genere todo el resultado (generateContent
).
Transmisión
Puedes lograr interacciones más rápidas si no esperas a que se genere todo el resultado del modelo y, en su lugar, usas la transmisión para controlar los resultados parciales.
En este ejemplo, se muestra cómo usar generateContentStream()
para transmitir texto generado a partir de una solicitud de instrucción multimodal que incluye texto y varias imágenes:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Sin transmisión
Como alternativa, puedes esperar a que se complete todo el resultado en lugar de transmitirlo. El resultado solo se muestra después de que el modelo completa todo el proceso de generación.
En este ejemplo, se muestra cómo usar generateContent()
para generar texto a partir de una solicitud de instrucción multimodal que incluye texto y varias imágenes:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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.")
Aprende a elegir un modelo de Gemini y, de manera opcional, una ubicación adecuada para tu caso de uso y app.
Genera texto a partir de texto y un video
Asegúrate de haber completado la sección Antes de comenzar de esta guía antes de probar este ejemplo.
Puedes llamar a Gemini API con instrucciones multimodales que incluyan archivos de texto y video (como se muestra en este ejemplo). Para estas llamadas, debes usar un modelo que admita contenido multimedia en las instrucciones (como Gemini 1.5 Flash).
Asegúrate de revisar los requisitos y las recomendaciones para los archivos de entrada.
Elige si quieres transmitir la respuesta (generateContentStream
) o esperar a que se genere todo el resultado (generateContent
).
Transmisión
Puedes lograr interacciones más rápidas si no esperas a que se genere todo el resultado del modelo y, en su lugar, usas la transmisión para controlar los resultados parciales.
En este ejemplo, se muestra cómo usar
generateContentStream()
para transmitir texto generado a partir de una solicitud de instrucción multimodal que incluye texto
y un solo video:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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)
}
}
Sin transmisión
Como alternativa, puedes esperar a que se muestre todo el resultado en lugar de transmitirlo. El resultado solo se muestra después de que el modelo completa todo el proceso de generación.
En este ejemplo, se muestra cómo usar generateContent()
para generar texto a partir de una solicitud de instrucción multimodal que incluye texto y un solo video:
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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.")
Aprende a elegir un modelo de Gemini y, de manera opcional, una ubicación adecuada para tu caso de uso y app.
Requisitos y recomendaciones para los archivos de entrada
Consulta Archivos de entrada compatibles y requisitos para Vertex AI Gemini API para obtener información sobre lo siguiente:
- Diferentes opciones para proporcionar un archivo en una solicitud
- Tipos de archivos admitidos
- Tipos de MIME admitidos y cómo especificarlos
- Requisitos y prácticas recomendadas para archivos y solicitudes multimodales
¿Qué más puedes hacer?
- Aprende a contar tokens antes de enviar instrucciones largas al modelo.
- Configura Cloud Storage for Firebase para que puedas incluir archivos grandes en tus solicitudes multimodales y tener una solución más administrada para proporcionar archivos en instrucciones. Los archivos pueden incluir imágenes, archivos PDF, videos y audio.
- Comienza a pensar en prepararte para la producción, lo que incluye configurar Firebase App Check para proteger el Gemini API del abuso de clientes no autorizados.
Prueba otras funciones de Gemini API
- Crea conversaciones de varios turnos (chat).
- Genera texto a partir de instrucciones de solo texto.
- Genera resultados estructurados (como JSON) a partir de instrucciones multimodales y de texto.
- Usa las llamadas a función para conectar los modelos generativos a sistemas y datos externos.
Aprende a controlar la generación de contenido
- Comprende el diseño de instrucciones, incluidas las prácticas recomendadas, las estrategias y los ejemplos de instrucciones.
- Configura los parámetros del modelo, como la temperatura y la cantidad máxima de tokens de salida.
- Usa la configuración de seguridad para ajustar la probabilidad de obtener respuestas que se puedan considerar dañinas.
Más información sobre los modelos de Gemini
Obtén información sobre los modelos disponibles para varios casos de uso y sus cuotas y precios.Envía comentarios sobre tu experiencia con Vertex AI in Firebase