Os comandos multimodais referem-se a entradas de modelos que incluem mais do que uma modalidade, como texto, imagens, áudio, vídeo e documentos.
Neste guia, envia os seguintes pedidos multimodais ao Gemini através da API e vê as respostas do modelo:
- Um comando e um URL de uma imagem armazenada num contentor
- Um comando e uma faixa de áudio inline
Pode concluir este guia usando bibliotecas cliente para Python no seu ambiente local ou enviando pedidos da linha de comandos para a API REST.
Saiba mais sobre os idiomas suportados pelo Gemini nos quais pode enviar os seus comandos.
Antes de começar
Antes de poder começar a enviar comandos multimodais para o Gemini gerar texto, tem de ter um projeto com a API Gemini ativada e ter funções e credenciais adequadas. Tem de instalar, inicializar e autenticar com a CLI gcloud, bem como instalar bibliotecas de cliente para Python.
Para mais informações, consulte o artigo Comece a usar o Google Workspace.
Envie um comando e um URL de imagem
Use o seguinte código para enviar um comando que inclua texto e uma imagem para a API Gemini. Fornece uma imagem JPG que indica o respetivo URL a partir de um contentor de armazenamento do GDC (s3://file-bucket/image.jpg). Este exemplo devolve uma descrição da imagem fornecida.
Pode executar o código a partir da linha de comandos, através de um IDE ou incluindo o código na sua aplicação.
Python
Siga estes passos para enviar um comando e uma imagem, e gerar texto a partir de um script Python:
Instale as bibliotecas Python necessárias:
pip install openai pip install absl-py pip install typing pip install protobufCarregue a imagem para um contentor de armazenamento do GDC. Neste exemplo, o caminho da imagem no contentor é
s3://file-bucket/image.jpg.Guarde o seu pedido de API num ficheiro JSON denominado
request.json. O ficheiro tem de ter o seguinte aspeto:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para ver detalhes do corpo do pedido, consulte o artigo Formate os seus pedidos à API.
Pode experimentar parâmetros no seu pedido. Para mais informações, consulte Capacidades.
Defina as variáveis de ambiente necessárias num script Python.
Adicione o seguinte código ao script Python que 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 o seguinte:
PROJECT_ID: o ID do seu projeto.MODEL_ID: o ID do ponto final do modelo para o qual quer gerar a resposta.
Guarde o script Python.
Enviar uma solicitação ao Gemini com a interface Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSubstitua o seguinte:
SCRIPT_NAME: o nome que deu ao seu script Python, comoclient.py.ENDPOINT: o ponto final do Gemini que usa para a sua organização. Para mais informações, consulte o estado do serviço e os pontos finais.TOKEN: o token de autenticação que obteve.
Tem de obter uma resposta semelhante à seguinte:
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 estes passos para enviar um comando e uma imagem, e gerar texto através de um pedido curl à API REST:
Carregue a imagem para um contentor de armazenamento do GDC. Neste exemplo, o caminho da imagem no contentor é
s3://file-bucket/image.jpg.Guarde o seu pedido de API num ficheiro JSON denominado
request.json. O ficheiro tem de ter o seguinte aspeto:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Para ver detalhes do corpo do pedido, consulte o artigo Formate os seus pedidos à API.
Pode experimentar parâmetros no seu pedido. Para mais informações, consulte Capacidades.
Faça o pedido:
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 o seguinte:
TOKEN: o token de autenticação que obteve.ENDPOINT: o ponto final do Gemini que usa para a sua organização. Para mais informações, consulte o estado do serviço e os pontos finais.PROJECT_ID: o ID do seu projeto.MODEL_ID: o ID do ponto final do modelo para o qual quer gerar a resposta.
Tem de obter uma resposta semelhante à seguinte:
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))
Envie um comando e áudio inline
Use o seguinte código para enviar um comando que inclua texto e áudio para a API Gemini. Fornece um ficheiro de áudio MP3 inline como dados codificados em base64. Este exemplo devolve a letra da música fornecida.
Pode executar o código a partir da linha de comandos, através de um IDE ou incluindo o código na sua aplicação.
Python
Siga estes passos para enviar um comando e áudio para gerar texto a partir de um script Python:
Instale as bibliotecas Python necessárias:
pip install openai pip install absl-py pip install typing pip install protobufCodifique o ficheiro através da ferramenta de linhas de comandos
base64, certificando-se de que impede a mudança de linha com a marca-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILEGuarde o seu pedido de API num ficheiro JSON denominado
request.json. O ficheiro tem de ter o seguinte aspeto:{ "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 ver detalhes do corpo do pedido, consulte o artigo Formate os seus pedidos à API.
Pode experimentar parâmetros no seu pedido. Para mais informações, consulte Capacidades.
Defina as variáveis de ambiente necessárias num script Python.
Adicione o seguinte código ao script Python que 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 o seguinte:
PROJECT_ID: o ID do seu projeto.MODEL_ID: o ID do ponto final do modelo para o qual quer gerar a resposta.
Guarde o script Python.
Enviar uma solicitação ao Gemini com a interface Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSubstitua o seguinte:
SCRIPT_NAME: o nome que deu ao seu script Python, comoclient.py.ENDPOINT: o ponto final do Gemini que usa para a sua organização. Para mais informações, consulte o estado do serviço e os pontos finais.TOKEN: o token de autenticação que obteve.
Tem de obter uma resposta semelhante à seguinte:
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 estes passos para enviar um comando e áudio para gerar texto através de um pedido curl à API REST:
Codifique o ficheiro através da ferramenta de linhas de comandos
base64, certificando-se de que impede a mudança de linha com a marca-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILEGuarde o seu pedido de API num ficheiro JSON denominado
request.json. O ficheiro tem de ter o seguinte aspeto:{ "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 ver detalhes do corpo do pedido, consulte o artigo Formate os seus pedidos à API.
Pode experimentar parâmetros no seu pedido. Para mais informações, consulte Capacidades.
Faça o pedido:
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 o seguinte:
TOKEN: o token de autenticação que obteve.ENDPOINT: o ponto final do Gemini que usa para a sua organização. Para mais informações, consulte o estado do serviço e os pontos finais.PROJECT_ID: o ID do seu projeto.MODEL_ID: o ID do ponto final do modelo para o qual quer gerar a resposta.
Tem de obter uma resposta semelhante à seguinte:
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))