Os comandos multimodais se referem a entradas de modelo que incluem mais de uma modalidade, como texto, imagens, áudio, vídeo e documentos.
Neste guia, você vai enviar as seguintes solicitações multimodais ao Gemini usando a API e conferir as respostas do modelo:
- Um comando e um URL de uma imagem armazenada em um bucket
- Um comando e uma faixa de áudio inline
Saiba mais sobre outros recursos multimodais do Gemini, incluindo comandos com vídeos e documentos.
É possível concluir este guia usando bibliotecas de cliente para Python no seu ambiente local ou enviando solicitações de linha de comando para a API REST.
Saiba quais idiomas são aceitos no Gemini para enviar comandos.
Antes de começar
Antes de começar a enviar comandos multimodais para o Gemini gerar texto, você precisa ter um projeto com a API Gemini ativada e funções e credenciais adequadas. É necessário instalar, inicializar e fazer a autenticação com a CLI gdcloud e instalar bibliotecas de cliente para Python.
Para mais informações, consulte Começar.
Enviar um comando e um URL de imagem
Use o código a seguir para enviar um comando que inclui texto e uma imagem para a
API Gemini. Você fornece uma imagem JPG indicando o URL dela em um bucket de armazenamento do GDC (s3://file-bucket/image.jpg). Este exemplo retorna uma descrição da imagem fornecida.
É possível executar o código na linha de comando, usando um ambiente de desenvolvimento integrado ou incluindo o código no aplicativo.
Python
Siga estas etapas para enviar um comando e uma imagem e gerar texto com um script Python:
Instale as bibliotecas necessárias do Python:
pip install openai pip install absl-py pip install typing pip install protobufFaça upload da imagem para um bucket de armazenamento do GDC. Neste exemplo, o caminho da imagem no bucket é
s3://file-bucket/image.jpg.Salve a solicitação de API em um arquivo JSON chamado
request.json. O arquivo precisa ser parecido com o exemplo a seguir:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para detalhes sobre o corpo da solicitação, consulte Formatar solicitações de API.
Você pode testar parâmetros na sua solicitação. Para mais informações, consulte Recursos.
Defina as variáveis de ambiente necessárias em um script Python.
Adicione o seguinte código ao script Python que você criou:
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)Substitua:
PROJECT_ID: o ID do projeto.MODEL_ID: o ID do endpoint do modelo que você quer usar para gerar a resposta.
Salve o script Python.
Envie uma solicitação ao Gemini com a interface Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSubstitua:
SCRIPT_NAME: o nome que você deu ao script Python, comoclient.py.ENDPOINT: o endpoint do Gemini que você usa na sua organização. Para mais informações, consulte o status do serviço e os endpoints.TOKEN: o token de autenticação que você recebeu.
Você vai receber uma resposta semelhante a esta:
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
Siga estas etapas para enviar um comando e uma imagem e gerar texto por uma solicitação
curl para a API REST:
Faça upload da imagem para um bucket de armazenamento do GDC. Neste exemplo, o caminho da imagem no bucket é
s3://file-bucket/image.jpg.Salve a solicitação de API em um arquivo JSON chamado
request.json. O arquivo precisa ser parecido com o exemplo a seguir:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para detalhes sobre o corpo da solicitação, consulte Formatar solicitações de API.
Você pode testar parâmetros na sua solicitação. Para mais informações, consulte Recursos.
Faça a solicitação:
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.jsonSubstitua:
TOKEN: o token de autenticação que você recebeu.ENDPOINT: o endpoint do Gemini que você usa na sua organização. Para mais informações, consulte o status do serviço e os endpoints.PROJECT_ID: o ID do projeto.MODEL_ID: o ID do endpoint do modelo que você quer usar para gerar a resposta.
Você vai receber uma resposta semelhante a esta:
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))
Enviar um comando e áudio inline
Use o código a seguir para enviar um comando que inclui texto e áudio para a API Gemini. Você fornece um arquivo de áudio MP3 in-line como dados codificados em base64. Este exemplo retorna a letra da música fornecida.
É possível executar o código na linha de comando, usando um ambiente de desenvolvimento integrado ou incluindo o código no aplicativo.
Python
Siga estas etapas para enviar um comando e um áudio para gerar texto usando um script Python:
Instale as bibliotecas necessárias do Python:
pip install openai pip install absl-py pip install typing pip install protobufCodifique o arquivo usando a ferramenta de linha de comando
base64, evitando a quebra de linha com a sinalização-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESalve a solicitação de API em um arquivo JSON chamado
request.json. O arquivo precisa ser parecido com o exemplo a seguir:{ "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 detalhes sobre o corpo da solicitação, consulte Formatar solicitações de API.
Você pode testar parâmetros na sua solicitação. Para mais informações, consulte Recursos.
Defina as variáveis de ambiente necessárias em um script Python.
Adicione o seguinte código ao script Python que você criou:
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)Substitua:
PROJECT_ID: o ID do projeto.MODEL_ID: o ID do endpoint do modelo que você quer usar para gerar a resposta.
Salve o script Python.
Envie uma solicitação ao Gemini com a interface Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSubstitua:
SCRIPT_NAME: o nome que você deu ao script Python, comoclient.py.ENDPOINT: o endpoint do Gemini que você usa na sua organização. Para mais informações, consulte o status do serviço e os endpoints.TOKEN: o token de autenticação que você recebeu.
Você vai receber uma resposta semelhante a esta:
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
Siga estas etapas para enviar um comando e um áudio para gerar texto usando uma
solicitação curl para a API REST:
Codifique o arquivo usando a ferramenta de linha de comando
base64, evitando a quebra de linha com a sinalização-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESalve a solicitação de API em um arquivo JSON chamado
request.json. O arquivo precisa ser parecido com o exemplo a seguir:{ "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 detalhes sobre o corpo da solicitação, consulte Formatar solicitações de API.
Você pode testar parâmetros na sua solicitação. Para mais informações, consulte Recursos.
Faça a solicitação:
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.jsonSubstitua:
TOKEN: o token de autenticação que você recebeu.ENDPOINT: o endpoint do Gemini que você usa na sua organização. Para mais informações, consulte o status do serviço e os endpoints.PROJECT_ID: o ID do projeto.MODEL_ID: o ID do endpoint do modelo que você quer usar para gerar a resposta.
Você vai receber uma resposta semelhante a esta:
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))