Las instrucciones multimodales hacen referencia a las entradas del modelo que incluyen más de una modalidad, como texto, imágenes, audio, video y documentos.
En esta guía, enviarás las siguientes solicitudes multimodales a Gemini con la API y verás las respuestas del modelo:
- Una instrucción y la URL de una imagen almacenada en un bucket
- Una instrucción y una pista de audio intercalada
Puedes completar esta guía usando bibliotecas cliente para Python en tu entorno local o enviando solicitudes de línea de comandos a la API de REST.
Obtén información sobre los idiomas admitidos en Gemini en los que puedes enviar tus instrucciones.
Antes de comenzar
Antes de comenzar a enviar prompts multimodales para que Gemini genere texto, debes tener un proyecto con la API de Gemini habilitada y los roles y las credenciales adecuados. Debes instalar, inicializar y autenticarte con la CLI de gcloud, y también instalar las bibliotecas cliente para Python.
Para obtener más información, consulta Cómo comenzar.
Envía una instrucción y la URL de una imagen
Usa el siguiente código para enviar una instrucción que incluya texto y una imagen a la API de Gemini. Proporcionas una imagen JPG que indica su URL desde un bucket de almacenamiento de GDC (s3://file-bucket/image.jpg). En este ejemplo, se devuelve una descripción de la imagen proporcionada.
Puedes ejecutar el código desde la línea de comandos, con un IDE o incluyéndolo en tu aplicación.
Python
Sigue estos pasos para enviar una instrucción y una imagen, y generar texto a partir de una secuencia de comandos de Python:
Instala las bibliotecas de Python necesarias:
pip install openai pip install absl-py pip install typing pip install protobufSube tu imagen a un bucket de almacenamiento de GDC. En este ejemplo, la ruta de acceso a la imagen en el bucket es
s3://file-bucket/image.jpg.Guarda tu solicitud a la API en un archivo JSON llamado
request.json. El archivo debe verse como el siguiente ejemplo:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para obtener detalles sobre el cuerpo de la solicitud, consulta Cómo dar formato a tus solicitudes a la API.
Puedes experimentar con los parámetros de tu solicitud. Para obtener más información, consulta Capacidades.
Configura las variables de entorno necesarias en una secuencia de comandos de Python.
Agrega el siguiente código a la secuencia de comandos de Python que creaste:
import json import os from absl import app from absl import flags from openai import OpenAI, OpenAIError from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from typing import Sequence _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) def chat_completion_client(host): return OpenAI( api_key="None", base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID" ) def chat_completion(client, messages, token): try: response = client.chat.completions.create( model="MODEL_ID", messages=messages, extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"} ) print("response:", response) except Exception as e: print("Got exception:", e) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) print("Request: ", data) client = chat_completion_client(_HOST.value,) chat_completion(client=client, messages=data["messages"], token=_TOKEN.value) if __name__=="__main__": app.run(main)Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoMODEL_ID: El ID del extremo del modelo con el que deseas generar la respuesta.
Guarda la secuencia de comandos de Python.
Envía una solicitud a Gemini con la interfaz de Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENReemplaza lo siguiente:
SCRIPT_NAME: Es el nombre que le asignaste a tu secuencia de comandos de Python, comoclient.py.ENDPOINT: Es el extremo de Gemini que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.TOKEN: El token de autenticación que obtuviste
Debes obtener una respuesta similar a la siguiente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s what\'s in the image: Several freshly baked blueberry scones are arranged on parchment paper.\n", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
curl
Sigue estos pasos para enviar una instrucción y una imagen, y generar texto a través de una solicitud curl a la API de REST:
Sube tu imagen a un bucket de almacenamiento de GDC. En este ejemplo, la ruta de acceso a la imagen en el bucket es
s3://file-bucket/image.jpg.Guarda tu solicitud a la API en un archivo JSON llamado
request.json. El archivo debe verse como el siguiente ejemplo:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para obtener detalles sobre el cuerpo de la solicitud, consulta Cómo dar formato a tus solicitudes a la API.
Puedes experimentar con los parámetros de tu solicitud. Para obtener más información, consulta Capacidades.
Realiza la solicitud:
curl \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -X POST https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions -d @./request.jsonReemplaza lo siguiente:
TOKEN: El token de autenticación que obtuvisteENDPOINT: Es el extremo de Gemini que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.PROJECT_ID: el ID de tu proyectoMODEL_ID: El ID del extremo del modelo con el que deseas generar la respuesta.
Debes obtener una respuesta similar a la siguiente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s what\'s in the image: Several freshly baked blueberry scones are arranged on parchment paper.\n", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
Envía un mensaje y audio intercalados
Usa el siguiente código para enviar una instrucción que incluya texto y audio a la API de Gemini. Proporcionas un archivo de audio MP3 intercalado como datos codificados en Base64. En este ejemplo, se muestra la letra de la canción proporcionada.
Puedes ejecutar el código desde la línea de comandos, con un IDE o incluyéndolo en tu aplicación.
Python
Sigue estos pasos para enviar una instrucción y audio para generar texto a partir de una secuencia de comandos de Python:
Instala las bibliotecas de Python necesarias:
pip install openai pip install absl-py pip install typing pip install protobufCodifica el archivo con la herramienta de línea de comandos
base64y asegúrate de evitar el ajuste de línea con la marca-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILEGuarda tu solicitud a la API en un archivo JSON llamado
request.json. El archivo debe verse como el siguiente ejemplo:{ "messages": [ { "role": "user", "content": "Show me the lyrics of this song." }, { "role": "user", "content": [ { "type": "input_audio", "input_audio": { "data": "BASE64_ENCODED_DATA", "format": "mp3" } } ] } ] }Para obtener detalles sobre el cuerpo de la solicitud, consulta Cómo dar formato a tus solicitudes a la API.
Puedes experimentar con los parámetros de tu solicitud. Para obtener más información, consulta Capacidades.
Configura las variables de entorno necesarias en una secuencia de comandos de Python.
Agrega el siguiente código a la secuencia de comandos de Python que creaste:
import json import os from absl import app from absl import flags from openai import OpenAI, OpenAIError from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from typing import Sequence _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) def chat_completion_client(host): return OpenAI( api_key="None", base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID" ) def chat_completion(client, messages, token): try: response = client.chat.completions.create( model="MODEL_ID", messages=messages, extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"} ) print("response:", response) except Exception as e: print("Got exception:", e) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) print("Request: ", data) client = chat_completion_client(_HOST.value,) chat_completion(client=client, messages=data["messages"], token=_TOKEN.value) if __name__=="__main__": app.run(main)Reemplaza lo siguiente:
PROJECT_ID: el ID de tu proyectoMODEL_ID: El ID del extremo del modelo con el que deseas generar la respuesta.
Guarda la secuencia de comandos de Python.
Envía una solicitud a Gemini con la interfaz de Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENReemplaza lo siguiente:
SCRIPT_NAME: Es el nombre que le asignaste a tu secuencia de comandos de Python, comoclient.py.ENDPOINT: Es el extremo de Gemini que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.TOKEN: El token de autenticación que obtuviste
Debes obtener una respuesta similar a la siguiente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s the lyrics of the song: There are places I remember all my life, though some have changed...", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
curl
Sigue estos pasos para enviar una instrucción y audio para generar texto a través de una solicitud curl a la API de REST:
Codifica el archivo con la herramienta de línea de comandos
base64y asegúrate de evitar el ajuste de línea con la marca-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILEGuarda tu solicitud a la API en un archivo JSON llamado
request.json. El archivo debe verse como el siguiente ejemplo:{ "messages": [ { "role": "user", "content": "Show me the lyrics of this song." }, { "role": "user", "content": [ { "type": "input_audio", "input_audio": { "data": "BASE64_ENCODED_DATA", "format": "mp3" } } ] } ] }Para obtener detalles sobre el cuerpo de la solicitud, consulta Cómo dar formato a tus solicitudes a la API.
Puedes experimentar con los parámetros de tu solicitud. Para obtener más información, consulta Capacidades.
Realiza la solicitud:
curl \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -X POST https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions -d @./request.jsonReemplaza lo siguiente:
TOKEN: El token de autenticación que obtuvisteENDPOINT: Es el extremo de Gemini que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.PROJECT_ID: el ID de tu proyectoMODEL_ID: El ID del extremo del modelo con el que deseas generar la respuesta.
Debes obtener una respuesta similar a la siguiente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s the lyrics of the song: There are places I remember all my life, though some have changed...", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
¿Qué sigue?
- Más información sobre las capacidades de Gemini
- Obtén más información sobre los idiomas admitidos en Gemini