Puedes agregar imágenes a las solicitudes de Gemini para realizar tareas que implican comprender el contenido de las imágenes incluidas. En esta página, se muestra cómo agregar imágenes a tus solicitudes a Gemini en Vertex AI mediante la consola de Google Cloud y la API de Vertex AI.
Modelos compatibles
En la siguiente tabla, se enumeran los modelos que admiten la comprensión de imágenes:
Modelo | Detalles de la modalidad de imagen |
---|---|
Gemini 1.5 Flash Ir a la tarjeta de modelo de Gemini 1.5 Flash |
Cantidad máxima de imágenes por instrucción: 3,000 |
Gemini 1.5 Pro Ir a la tarjeta de modelo de Gemini 1.5 Pro |
Cantidad máxima de imágenes por instrucción: 3,000 |
Gemini 1.0 Pro Vision Ir a la tarjeta de modelo de Gemini 1.0 Pro Vision |
Cantidad máxima de imágenes por instrucción: 16 |
Para obtener una lista de los idiomas compatibles con los modelos de Gemini, consulta la información del modelo de los Modelos de Google. Para obtener más información sobre cómo diseñar instrucciones multimodales, consulta Diseña instrucciones multimodales. Si buscas una manera de usar Gemini directamente desde tus apps web y tus dispositivos móviles, consulta los SDK de Vertex AI in Firebase para apps de Android, Swift, Web y Flutter.
Agrega imágenes a una solicitud
Puedes agregar una o varias imágenes en tu solicitud a Gemini.
Imagen única
El código de muestra en cada una de las siguientes pestañas muestra una manera diferente de identificar el contenido de una imagen. Esta muestra funciona con todos los modelos multimodales de Gemini.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex para Python.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el parámetro stream
en generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para una respuesta sin transmisión, quita el parámetro o configúralo como False
.
Código de muestra
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Para una respuesta sin transmisión, usa el método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de muestra
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de IA generativa para usar el SDK de Node.js. Si deseas obtener más información, consulta la documentación de referencia del SDK de Node.js para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Para una respuesta sin transmisión, usa el método generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Código de muestra
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para una respuesta sin transmisión, usa el método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de muestra
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Vertex AI. Para obtener más información, consulta la documentación de referencia de C# de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Para una respuesta sin transmisión, usa el método GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Para obtener más información acerca de cómo el servidor puede transmitir respuestas, consulta RPC de transmisión.
Código de muestra
REST
Después de configurar tu entorno, puedes usar REST para probar una instrucción de texto. En el siguiente ejemplo, se envía una solicitud al extremo del modelo de publicador.
Puedes incluir imágenes almacenadas en Cloud Storage o usar datos de imagen codificados en base64.Imagen en Cloud Storage
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
LOCATION
: La región para procesar la solicitud. Ingresa una región compatible. Para obtener la lista completa de regiones admitidas, consulta Ubicaciones disponibles.Haz clic para expandir una lista parcial de regiones disponibles
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
: El ID del proyecto.FILE_URI
: El URI de Cloud Storage del archivo que se incluirá en la instrucción. El objeto del bucket debe poder leerse de forma pública o residir en el mismo proyecto de Google Cloud que envía la solicitud. También debes especificar el tipo de medio (mimeType
) del archivo.Si no tienes un archivo de imagen en Cloud Storage, puedes usar el siguiente archivo disponible de forma pública:
gs://cloud-samples-data/generative-ai/image/scones.jpg
con un tipo de MIME deimage/jpeg
. Para ver esta imagen, abre el archivo de imagen de muestra.MIME_TYPE
El tipo de medio del archivo especificado en los camposdata
ofileUri
. Los valores aceptables son los siguientes:Haz clic para expandir los tipos de MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
: Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo,What is shown in this image?
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
@' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Datos de imágenes en base64
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
LOCATION
: La región para procesar la solicitud. Ingresa una región compatible. Para obtener la lista completa de regiones admitidas, consulta Ubicaciones disponibles.Haz clic para expandir una lista parcial de regiones disponibles
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
: El ID del proyecto. La codificación en base64 de la imagen o el video que se incluirá intercalada en la instrucción. Si incluyes contenido multimedia intercalado, también debes especificar el tipo de medio (B64_BASE_IMAGE
mimeType
) de los datos.MIME_TYPE
El tipo de medio del archivo especificado en los camposdata
ofileUri
. Los valores aceptables son los siguientes:Haz clic para expandir los tipos de MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
: Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo,What is shown in this image?
.
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "inlineData": { "data": "B64_BASE_IMAGE", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
@' { "contents": { "role": "USER", "parts": [ { "inlineData": { "data": "B64_BASE_IMAGE", "mimeType": "MIME_TYPE" } }, { "text": "TEXT" } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
- Usa el método
generateContent
para solicitar que la respuesta se muestre después de que se haya generado por completo. Para reducir la percepción de latencia a un público humano, transmite la respuesta a medida que se genera; para ello, usa el métodostreamGenerateContent
. - El ID del modelo multimodal se encuentra al final de la URL antes del método (por ejemplo,
gemini-1.5-flash
ogemini-1.0-pro-vision
). Esta muestra también puede admitir otros modelos.
Console
Para enviar un mensaje multimodal con la consola de Google Cloud, haz lo siguiente:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
- En Diseño de instrucciones (un solo turno), haz clic en Abrir.
Opcional: Configura el modelo y los parámetros:
- Modelo: Selecciona un modelo.
- Región: selecciona la región que deseas usar.
Temperatura: Usa el control deslizante o el cuadro de texto para ingresar un valor de temperatura.
La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplicantopP
ytopK
. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de0
significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.
Límite de tokens de salida: Usa el control deslizante o el cuadro de texto para ingresar un valor para el límite máximo de salida.
Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene casi cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.
- Agrega una secuencia de detención: Opcional. Ingresa una secuencia de detención, que es una serie de caracteres que incluyen espacios. Si el modelo encuentra una secuencia de detención, la generación de respuesta se detiene. La secuencia de detención no se incluye en la respuesta y puedes agregar hasta cinco secuencias de detención.
- Opcional: Para configurar parámetros avanzados, haz clic en Avanzada y establece la configuración de la siguiente manera:
K superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor para K superior. (no es compatible con Gemini 1.5).
El parámetro Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a1
significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a3
significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.
Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
- P superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor de P superior.
Los tokens se seleccionan del más probable al menos probable hasta que la suma de sus
probabilidades sea igual al valor de Top-P. Para obtener los resultados menos variables,
establece Top-P como
0
. - Habilitar fundamentos: Los fundamentos no son compatibles con las instrucciones multimodales.
- Para subir contenido multimedia, como archivos PNG, haz lo siguiente:
- Haz clic en Insertar medios y selecciona una fuente.
Si eliges Google Drive como tu fuente, debes elegir una cuenta y dar consentimiento a Vertex AI Studio para acceder a tu cuenta la primera vez que selecciones esta opción. Puedes subir varios archivos multimedia con un tamaño total de hasta 10 MB. Un solo archivo no puede superar los 7 MB.
- Haz clic en el archivo que quieras agregar.
- Haz clic en Seleccionar.
La miniatura del archivo se muestra en el panel Instrucción. También se muestra la cantidad total de tokens. Si los datos de la instrucción superan el límite de tokens, los tokens se truncan y no se incluyen en el procesamiento de tus datos.
- Opcional: Para mostrar la cantidad de tokens calculados en tus imágenes y la suma de todos los tokens, haz clic en Ver tokens.
El recuento de tokens puede tardar hasta 15 segundos en calcularse para los archivos multimedia. Las vistas ID de token a texto e ID de token no muestran ningún resultado valioso porque no se admiten tokens multimedia.
Para cerrar el panel de herramientas del tokenizador, haz clic en X o haz clic fuera del panel.
- Ingresa tu mensaje de texto en el panel Mensaje. El modelo usa las instrucciones anteriores como contexto para las respuestas nuevas.
- Opcional: Para mostrar la cantidad de tokens calculados en tus imágenes y la suma de todos los tokens, haz clic en Ver tokens. Puedes ver los tokens o los IDs de token de tu mensaje de texto.
- Para ver los tokens en el mensaje de texto que están destacados con diferentes colores que marcan el límite de cada ID de token, haz clic en ID de token a texto. No se admiten tokens multimedia.
- Para ver los IDs de los tokens, haz clic en ID de token.
Para cerrar el panel de herramientas del tokenizador, haz clic en X o haz clic fuera del panel.
- Haz clic en Enviar.
- Opcional: Para guardar el mensaje en Mis mensajes, haz clic en Guardar.
- Opcional: Para obtener el código de Python o un comando curl para tu mensaje, haz clic en Obtener código.
- Opcional: Para borrar todos los mensajes anteriores, haz clic en Borrar conversación.
Haz clic para expandir las configuraciones avanzadas.
Varias imágenes
En cada una de las siguientes pestañas, se muestra una forma diferente de incluir varias imágenes en una solicitud de instrucciones. En cada ejemplo, se toman dos conjuntos de las siguientes entradas:
- Imagen de un punto de referencia de una ciudad popular
- El tipo de medio de la imagen
- Texto que indica la ciudad y el punto de referencia en la imagen
La muestra también toma una tercera imagen y tipo de medio, pero no texto. En el ejemplo, se muestra una respuesta de texto que indica la ciudad y el punto de referencia en la tercera imagen.
Estas muestras de imágenes funcionan con todos los modelos multimodales de Gemini.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex para Python.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el parámetro stream
en generate_content
.
response = model.generate_content(contents=[...], stream = True)
Para una respuesta sin transmisión, quita el parámetro o configúralo como False
.
Código de muestra
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Para una respuesta sin transmisión, usa el método generateContent
.
public GenerateContentResponse generateContent(Content content)
Código de muestra
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de IA generativa para usar el SDK de Node.js. Si deseas obtener más información, consulta la documentación de referencia del SDK de Node.js para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Para una respuesta sin transmisión, usa el método generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Código de muestra
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Vertex AI. Si deseas obtener más información, consulta la documentación de referencia del SDK de Java de Vertex AI para Gemini.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Para una respuesta sin transmisión, usa el método GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Código de muestra
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Vertex AI. Para obtener más información, consulta la documentación de referencia de C# de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Respuestas de transmisión y sin transmisión
Puedes elegir si el modelo genera respuestas de transmisión o sin transmisión. Para las respuestas de transmisión, recibirás cada respuesta en cuanto se genere su token de salida. En el caso de las respuestas sin transmisión continua, recibes todas las respuestas después de que se generan todos los tokens de salida.
Para una respuesta de transmisión, usa el método StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Para una respuesta sin transmisión, usa el método GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Para obtener más información acerca de cómo el servidor puede transmitir respuestas, consulta RPC de transmisión.
Código de muestra
REST
Después de configurar tu entorno, puedes usar REST para probar una instrucción de texto. En el siguiente ejemplo, se envía una solicitud al extremo del modelo de publicador.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
LOCATION
: La región para procesar la solicitud. Ingresa una región compatible. Para obtener la lista completa de regiones admitidas, consulta Ubicaciones disponibles.Haz clic para expandir una lista parcial de regiones disponibles
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
: El ID del proyecto.FILE_URI1
: El URI de Cloud Storage del archivo que se incluirá en la instrucción. El objeto del bucket debe poder leerse de forma pública o residir en el mismo proyecto de Google Cloud que envía la solicitud. También debes especificar el tipo de medio (mimeType
) del archivo.Si no tienes un archivo de imagen en Cloud Storage, puedes usar el siguiente archivo disponible de forma pública:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png
con un tipo de MIME deimage/png
. Para ver esta imagen, abre el archivo de imagen de muestra.MIME_TYPE
El tipo de medio del archivo especificado en los camposdata
ofileUri
. Los valores aceptables son los siguientes:Haz clic para expandir los tipos de MIME.
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT1
: Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo,city: Rome, Landmark: the Colosseum
FILE_URI2
: El URI de Cloud Storage del archivo que se incluirá en la instrucción. El objeto del bucket debe poder leerse de forma pública o residir en el mismo proyecto de Google Cloud que envía la solicitud. También debes especificar el tipo de medio (mimeType
) del archivo.Si no tienes un archivo de imagen en Cloud Storage, puedes usar el siguiente archivo disponible de forma pública:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png
con un tipo de MIME deimage/png
. Para ver esta imagen, abre el archivo de imagen de muestra.TEXT2
: Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo,city: Beijing, Landmark: Forbidden City
FILE_URI3
: El URI de Cloud Storage del archivo que se incluirá en la instrucción. El objeto del bucket debe poder leerse de forma pública o residir en el mismo proyecto de Google Cloud que envía la solicitud. También debes especificar el tipo de medio (mimeType
) del archivo.Si no tienes un archivo de imagen en Cloud Storage, puedes usar el siguiente archivo disponible de forma pública:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png
con un tipo de MIME deimage/png
. Para ver esta imagen, abre el archivo de imagen de muestra.
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
cat > request.json << 'EOF' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI1", "mimeType": "MIME_TYPE" } }, { "text": "TEXT1" }, { "fileData": { "fileUri": "FILE_URI2", "mimeType": "MIME_TYPE" } }, { "text": "TEXT2" }, { "fileData": { "fileUri": "FILE_URI3", "mimeType": "MIME_TYPE" } } ] } } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
.
Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:
@' { "contents": { "role": "USER", "parts": [ { "fileData": { "fileUri": "FILE_URI1", "mimeType": "MIME_TYPE" } }, { "text": "TEXT1" }, { "fileData": { "fileUri": "FILE_URI2", "mimeType": "MIME_TYPE" } }, { "text": "TEXT2" }, { "fileData": { "fileUri": "FILE_URI3", "mimeType": "MIME_TYPE" } } ] } } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Ten en cuenta lo siguiente en la URL para esta muestra:- Usa el método
generateContent
para solicitar que la respuesta se muestre después de que se haya generado por completo. Para reducir la percepción de latencia a un público humano, transmite la respuesta a medida que se genera; para ello, usa el métodostreamGenerateContent
. - El ID del modelo multimodal se encuentra al final de la URL antes del método (por ejemplo,
gemini-1.5-flash
ogemini-1.0-pro-vision
). Esta muestra también puede admitir otros modelos.
Console
Para enviar un mensaje multimodal con la consola de Google Cloud, haz lo siguiente:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
- En Diseño de instrucciones (un solo turno), haz clic en Abrir.
Opcional: Configura el modelo y los parámetros:
- Modelo: Selecciona un modelo.
- Región: selecciona la región que deseas usar.
Temperatura: Usa el control deslizante o el cuadro de texto para ingresar un valor de temperatura.
La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplicantopP
ytopK
. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de0
significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.
Límite de tokens de salida: Usa el control deslizante o el cuadro de texto para ingresar un valor para el límite máximo de salida.
Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene casi cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.
- Agrega una secuencia de detención: Opcional. Ingresa una secuencia de detención, que es una serie de caracteres que incluyen espacios. Si el modelo encuentra una secuencia de detención, la generación de respuesta se detiene. La secuencia de detención no se incluye en la respuesta y puedes agregar hasta cinco secuencias de detención.
- Opcional: Para configurar parámetros avanzados, haz clic en Avanzada y establece la configuración de la siguiente manera:
K superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor para K superior. (no es compatible con Gemini 1.5).
El parámetro Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a1
significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a3
significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.
Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
- P superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor de P superior.
Los tokens se seleccionan del más probable al menos probable hasta que la suma de sus
probabilidades sea igual al valor de Top-P. Para obtener los resultados menos variables,
establece Top-P como
0
. - Habilitar fundamentos: Los fundamentos no son compatibles con las instrucciones multimodales.
- Para subir contenido multimedia, como archivos PNG, haz lo siguiente:
- Haz clic en Insertar medios y selecciona una fuente.
Si eliges Google Drive como tu fuente, debes elegir una cuenta y dar consentimiento a Vertex AI Studio para acceder a tu cuenta la primera vez que selecciones esta opción. Puedes subir varios archivos multimedia con un tamaño total de hasta 10 MB. Un solo archivo no puede superar los 7 MB.
- Haz clic en el archivo que quieras agregar.
- Haz clic en Seleccionar.
La miniatura del archivo se muestra en el panel Instrucción. También se muestra la cantidad total de tokens. Si los datos de la instrucción superan el límite de tokens, los tokens se truncan y no se incluyen en el procesamiento de tus datos.
- Opcional: Para mostrar la cantidad de tokens calculados en tus imágenes y la suma de todos los tokens, haz clic en Ver tokens.
El recuento de tokens puede tardar hasta 15 segundos en calcularse para los archivos multimedia. Las vistas ID de token a texto e ID de token no muestran ningún resultado valioso porque no se admiten tokens multimedia.
Para cerrar el panel de herramientas del tokenizador, haz clic en X o haz clic fuera del panel.
- Ingresa tu mensaje de texto en el panel Mensaje. El modelo usa las instrucciones anteriores como contexto para las respuestas nuevas.
- Opcional: Para mostrar la cantidad de tokens calculados en tus imágenes y la suma de todos los tokens, haz clic en Ver tokens. Puedes ver los tokens o los IDs de token de tu mensaje de texto.
- Para ver los tokens en el mensaje de texto que están destacados con diferentes colores que marcan el límite de cada ID de token, haz clic en ID de token a texto. No se admiten tokens multimedia.
- Para ver los IDs de los tokens, haz clic en ID de token.
Para cerrar el panel de herramientas del tokenizador, haz clic en X o haz clic fuera del panel.
- Haz clic en Enviar.
- Opcional: Para guardar el mensaje en Mis mensajes, haz clic en Guardar.
- Opcional: Para obtener el código de Python o un comando curl para tu mensaje, haz clic en Obtener código.
- Opcional: Para borrar todos los mensajes anteriores, haz clic en Borrar conversación.
Haz clic para expandir las configuraciones avanzadas.
Establece parámetros de modelo
Los siguientes parámetros del modelo se pueden establecer en modelos multimodales:
Top-P
P superior cambia la manera en la que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde el más alto (consulta K superior) hasta el menos probable, hasta que la suma de sus probabilidades sea igual al valor de P superior. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es 0.5
, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.
Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
Top-K
El parámetro Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a 1
significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3
significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.
Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.
Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
Temperatura
La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican topP
y topK
. La temperatura controla el grado de aleatorización en la selección de tokens.
Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que
las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de 0
significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado
son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.
Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.
Valores de parámetros válidos
Parámetro | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1 - 40 (predeterminado 32) | No compatible | No compatible |
Top-P | 0 - 1.0 (predeterminado 1.0) | 0 - 1.0 (predeterminado 0.95) | 0 - 1.0 (predeterminado 0.95) |
Temperatura | 0 - 1.0 (predeterminado 0.4) | 0 - 2.0 (predeterminado 1.0) | 0 - 2.0 (predeterminado 1.0) |
Requisitos de imagen
Los modelos multimodales de Gemini admiten los siguientes tipos de MIME de imagen:
Tipo MIME de imagen | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
PNG - image/png |
|||
JPEG - image/jpeg |
No hay un límite específico para la cantidad de píxeles en una imagen. Sin embargo, las imágenes más grandes se reducen y se rellenan para adaptarse a una resolución máxima de 3,072 x 3,072, a la vez que conservan su relación de aspecto original.
Esta es la cantidad máxima de archivos de imagen permitidos en una solicitud de instrucciones:
- Gemini 1.0 Pro Vision: 16 imágenes
- Gemini 1.5 Flash y Gemini 1.5 Pro: 3,000 imágenes
A continuación, se explica cómo se calculan los tokens para las imágenes:
- Gemini 1.0 Pro Vision: cada imagen representa 258 tokens.
- Gemini 1.5 Flash y Gemini 1.5 Pro:
- Si ambas dimensiones de una imagen son menores o iguales que 384 píxeles, se usan 258 tokens.
- Si una dimensión de una imagen es superior a 384 píxeles, la imagen se corta en mosaicos. El tamaño de cada mosaico se establece de forma predeterminada en la dimensión más pequeña (ancho o alto) dividida por 1.5. Si es necesario, cada mosaico se ajusta para que no sea inferior a 256 píxeles ni mayor que 768 píxeles. Luego, cada tarjeta cambia de tamaño a 768 × 768 y usa 258 tokens.
Prácticas recomendadas
Cuando uses imágenes, usa la siguiente información y prácticas recomendadas para obtener los mejores resultados.
- Si deseas detectar texto en una imagen, usa mensajes con una sola imagen para producir mejores resultados que los mensajes con varias imágenes.
- Si la instrucción contiene una sola imagen, colócala antes de la instrucción de texto en tu solicitud.
- Si tu instrucción contiene varias imágenes y quieres consultarlas más adelante en la instrucción o hacer que el modelo haga referencia a ellas en la respuesta del modelo, puede ser útil darle a cada imagen un índice antes de que aparezca. Usa
ora
b
c
para tu índice. El siguiente es un ejemplo del uso de imágenes indexadas en un mensaje:image 1
image 2
image 3
image 1
image 2 image 3 Write a blogpost about my day using image 1 and image 2. Then, give me ideas for tomorrow based on image 3. - Usa imágenes con mayor resolución, ya que producen mejores resultados.
- Incluye algunos ejemplos en el mensaje.
- Rota las imágenes a su orientación adecuada antes de agregarlas al mensaje.
- Evita las imágenes borrosas.
Limitaciones
Si bien los modelos multimodales de Gemini son potentes en muchos casos de usuarios multimodales, es importante comprender las limitaciones de los modelos:
- Moderación de contenido: Los modelos se niegan a proporcionar respuestas en las imágenes que infringen nuestras políticas de seguridad.
- Razonamiento espacial: Los modelos no son precisos para ubicar texto u objetos en imágenes. Es posible que solo devuelvan los recuentos aproximados de los objetos.
- Usos médicos: Los modelos no son adecuados para interpretar imágenes médicas (por ejemplo, radiografías y TC) ni brindar asesoramiento médico.
- Reconocimiento de personas: Los modelos no están diseñados para identificar a personas que no son celebridades en las imágenes.
- Exactitud: Los modelos pueden tener alucinaciones o cometer errores cuando se interpretan imágenes de baja calidad, rotadas o muy baja resolución. Los modelos también pueden tener alucinaciones cuando se interpreta texto escrito a mano en documentos de imágenes.
¿Qué sigue?
- Comienza a compilar con modelos multimodales de Gemini. Los clientes nuevos obtienen $300 en créditos gratuitos de Google Cloud para explorar lo que pueden hacer con Gemini.
- Aprende a enviar solicitudes de mensaje de chat.
- Obtén información sobre las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI.