Mengirim perintah multimodal

Perintah multimodal mengacu pada input model yang mencakup lebih dari satu modalitas, seperti teks, gambar, audio, video, dan dokumen.

Dalam panduan ini, Anda akan mengirim permintaan multimodal berikut ke Gemini menggunakan API dan melihat respons model:

  • Perintah dan URL gambar yang disimpan dalam bucket
  • Perintah dan trek audio inline

Pelajari kemampuan multimodal Gemini lainnya, termasuk perintah dengan video dan dokumen.

Anda dapat menyelesaikan panduan ini dengan menggunakan library klien untuk Python di lingkungan lokal atau mengirim permintaan command line ke REST API.

Pelajari bahasa yang didukung Gemini yang dapat Anda gunakan untuk mengirim perintah.

Sebelum memulai

Sebelum dapat mulai mengirim perintah multimodal agar Gemini membuat teks, Anda harus memiliki project dengan Gemini API yang diaktifkan, dan Anda harus memiliki peran dan kredensial yang sesuai. Anda harus menginstal, melakukan inisialisasi, dan melakukan autentikasi dengan gdcloud CLI serta menginstal library klien untuk Python.

Untuk mengetahui informasi selengkapnya, lihat Mulai.

Mengirim perintah dan URL gambar

Gunakan kode berikut untuk mengirim perintah yang menyertakan teks dan gambar ke Gemini API. Anda memberikan gambar JPG yang menunjukkan URL-nya dari bucket penyimpanan GDC (s3://file-bucket/image.jpg). Contoh ini menampilkan deskripsi gambar yang diberikan.

Anda dapat menjalankan kode dari command line, dengan menggunakan IDE, atau dengan menyertakan kode dalam aplikasi Anda.

Python

Ikuti langkah-langkah berikut untuk mengirimkan perintah dan gambar serta membuat teks dari skrip Python:

  1. Instal library Python yang diperlukan:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. Upload gambar Anda ke bucket penyimpanan GDC. Dalam contoh ini, jalur gambar di bucket adalah s3://file-bucket/image.jpg.

  3. Simpan permintaan API Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
        "messages": [
          {
            "role": "user",
            "content": "What's in this image?"
          },
          {
            "role": "user",
            "content": [
              {
                "type": "image_url",
                "image_url": {
                  "url": "s3://file-bucket/image.jpg"
                }
              }
            ]
          }
        ]
    }
    

    Untuk mengetahui detail isi permintaan, lihat Memformat permintaan API.

    Anda dapat bereksperimen dengan parameter dalam permintaan Anda. Untuk mengetahui informasi selengkapnya, lihat Kemampuan.

  4. Tetapkan variabel lingkungan yang diperlukan pada skrip Python.

  5. Lakukan autentikasi permintaan API Anda.

  6. Tambahkan kode berikut ke skrip Python yang Anda buat:

    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)
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • MODEL_ID: ID endpoint model yang ingin Anda gunakan untuk membuat respons.
  7. Simpan skrip Python.

  8. Mengirim permintaan ke Gemini dengan antarmuka Chat Completions:

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN
    

    Ganti kode berikut:

    • SCRIPT_NAME: nama yang Anda berikan ke skrip Python, seperti client.py.
    • ENDPOINT: endpoint Gemini yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.
    • TOKEN: token autentikasi yang Anda peroleh.

Anda harus mendapatkan respons yang mirip dengan berikut ini:

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

Ikuti langkah-langkah berikut untuk mengirim perintah dan gambar serta membuat teks melalui permintaan curl ke REST API:

  1. Upload gambar Anda ke bucket penyimpanan GDC. Dalam contoh ini, jalur gambar di bucket adalah s3://file-bucket/image.jpg.

  2. Simpan permintaan API Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
        "messages": [
          {
            "role": "user",
            "content": "What's in this image?"
          },
          {
            "role": "user",
            "content": [
              {
                "type": "image_url",
                "image_url": {
                  "url": "s3://file-bucket/image.jpg"
                }
              }
            ]
          }
        ]
    }
    

    Untuk mengetahui detail isi permintaan, lihat Memformat permintaan API.

    Anda dapat bereksperimen dengan parameter dalam permintaan Anda. Untuk mengetahui informasi selengkapnya, lihat Kemampuan.

  3. Lakukan autentikasi permintaan API Anda.

  4. Buat permintaan:

    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.json
    

    Ganti kode berikut:

Anda harus mendapatkan respons yang mirip dengan berikut ini:

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))

Mengirim perintah dan audio inline

Gunakan kode berikut untuk mengirim perintah yang menyertakan teks dan audio ke Gemini API. Anda menyediakan file audio MP3 secara inline sebagai data berenkode base64. Contoh ini menampilkan lirik lagu yang diberikan.

Anda dapat menjalankan kode dari command line, dengan menggunakan IDE, atau dengan menyertakan kode dalam aplikasi Anda.

Python

Ikuti langkah-langkah berikut untuk mengirim perintah dan audio guna membuat teks dari skrip Python:

  1. Instal library Python yang diperlukan:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. Enkode file menggunakan alat command line base64, yang memastikan untuk mencegah penggabungan baris menggunakan flag -w 0:

    base64 AUDIO_FILE -w 0 > OUTPUT_FILE
    
  3. Simpan permintaan API Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
        "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"
                }
              }
            ]
          }
        ]
    }
    

    Untuk mengetahui detail isi permintaan, lihat Memformat permintaan API.

    Anda dapat bereksperimen dengan parameter dalam permintaan Anda. Untuk mengetahui informasi selengkapnya, lihat Kemampuan.

  4. Tetapkan variabel lingkungan yang diperlukan pada skrip Python.

  5. Lakukan autentikasi permintaan API Anda.

  6. Tambahkan kode berikut ke skrip Python yang Anda buat:

    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)
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • MODEL_ID: ID endpoint model yang ingin Anda gunakan untuk membuat respons.
  7. Simpan skrip Python.

  8. Mengirim permintaan ke Gemini dengan antarmuka Chat Completions:

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN
    

    Ganti kode berikut:

    • SCRIPT_NAME: nama yang Anda berikan ke skrip Python, seperti client.py.
    • ENDPOINT: endpoint Gemini yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.
    • TOKEN: token autentikasi yang Anda peroleh.

Anda harus mendapatkan respons yang mirip dengan berikut ini:

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

Ikuti langkah-langkah berikut untuk mengirimkan perintah dan audio guna membuat teks melalui permintaan curl ke REST API:

  1. Enkode file menggunakan alat command line base64, yang memastikan untuk mencegah penggabungan baris menggunakan flag -w 0:

    base64 AUDIO_FILE -w 0 > OUTPUT_FILE
    
  2. Simpan permintaan API Anda dalam file JSON bernama request.json. File harus terlihat seperti contoh berikut:

    {
        "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"
                }
              }
            ]
          }
        ]
    }
    

    Untuk mengetahui detail isi permintaan, lihat Memformat permintaan API.

    Anda dapat bereksperimen dengan parameter dalam permintaan Anda. Untuk mengetahui informasi selengkapnya, lihat Kemampuan.

  3. Lakukan autentikasi permintaan API Anda.

  4. Buat permintaan:

    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.json
    

    Ganti kode berikut:

Anda harus mendapatkan respons yang mirip dengan berikut ini:

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))

Langkah berikutnya