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:
Instal library Python yang diperlukan:
pip install openai pip install absl-py pip install typing pip install protobufUpload gambar Anda ke bucket penyimpanan GDC. Dalam contoh ini, jalur gambar di bucket adalah
s3://file-bucket/image.jpg.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.
Tetapkan variabel lingkungan yang diperlukan pada skrip Python.
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.
Simpan skrip Python.
Mengirim permintaan ke Gemini dengan antarmuka Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENGanti kode berikut:
SCRIPT_NAME: nama yang Anda berikan ke skrip Python, seperticlient.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:
Upload gambar Anda ke bucket penyimpanan GDC. Dalam contoh ini, jalur gambar di bucket adalah
s3://file-bucket/image.jpg.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.
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.jsonGanti kode berikut:
TOKEN: token autentikasi yang Anda peroleh.ENDPOINT: endpoint Gemini yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.PROJECT_ID: project ID Anda.MODEL_ID: ID endpoint model yang ingin Anda gunakan untuk membuat respons.
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:
Instal library Python yang diperlukan:
pip install openai pip install absl-py pip install typing pip install protobufEnkode file menggunakan alat command line
base64, yang memastikan untuk mencegah penggabungan baris menggunakan flag-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESimpan 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.
Tetapkan variabel lingkungan yang diperlukan pada skrip Python.
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.
Simpan skrip Python.
Mengirim permintaan ke Gemini dengan antarmuka Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENGanti kode berikut:
SCRIPT_NAME: nama yang Anda berikan ke skrip Python, seperticlient.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:
Enkode file menggunakan alat command line
base64, yang memastikan untuk mencegah penggabungan baris menggunakan flag-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESimpan 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.
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.jsonGanti kode berikut:
TOKEN: token autentikasi yang Anda peroleh.ENDPOINT: endpoint Gemini yang Anda gunakan untuk organisasi Anda. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.PROJECT_ID: project ID Anda.MODEL_ID: ID endpoint model yang ingin Anda gunakan untuk membuat respons.
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))