Panggil Gemini dengan menggunakan library OpenAI

Gemini ChatCompletion API memungkinkan Anda mengirim permintaan ke Vertex AI Gemini API dengan menggunakan library OpenAI untuk Python dan REST. Jika sudah menggunakan library OpenAI, Anda bisa menggunakan API ini untuk beralih antara memanggil model OpenAI dan Model Gemini dapat membandingkan output, biaya, dan skalabilitas, tanpa mengubah kode yang sudah ada. Jika Anda belum menggunakan library OpenAI, sebaiknya Anda memanggil Gemini API secara langsung.

Model yang didukung

Model Versi
Flash Gemini 1.5 google/gemini-1.5-flash-001
Gemini 1.5 Pro google/gemini-1.5-pro-001
Gemini 1.0 Pro Vision google/gemini-1.0-pro-vision
google/gemini-1.0-pro-vision-001
Gemini 1.0 Pro google/gemini-1.0-pro-002
google/gemini-1.0-pro-001
google/gemini-1.0-pro

Autentikasikan

Untuk menggunakan library Python OpenAI, instal OpenAI SDK:

pip install openai

Untuk melakukan autentikasi dengan Gemini Chat Completion API, Anda dapat memodifikasi konfigurasi klien atau mengubah lingkungan Anda konfigurasi AI Google untuk menggunakan autentikasi Google endpoint. Pilih salah satu dari opsi berikut, mana yang lebih mudah:

Penyiapan klien

Untuk mendapatkan kredensial Google secara terprogram di Python, Anda bisa menggunakan SDK Python google-auth:

pip install google-auth
pip install requests

Mengubah OpenAI SDK agar mengarah ke chat Vertex AI titik akhir penyelesaian:

# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed.

# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT = 'PROJECT_ID'
LOCATION = 'LOCATION'
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
    base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/endpoints/openapi',
    api_key = creds.token)

Secara {i>default<i}, token akses berlaku selama 1 jam. Anda dapat memperpanjang masa pakai token akses atau perbarui token secara berkala dan perbarui variabel openai.api_key.

Variabel lingkungan

Menginstal Google Cloud CLI. Library OpenAI dapat membaca lingkungan OPENAI_API_KEY dan OPENAI_BASE_URL variabel untuk mengubah autentikasi dan endpoint di klien default mereka. Tetapkan variabel berikut:

$ export PROJECT=PROJECT_ID
$ export LOCATION=LOCATION
$ export MODEL_ID=MODEL_ID
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT}/locations/${LOCATION}/endpoints/openapi"

Berikutnya, inisialisasi klien:

client = openai.OpenAI()

Gemini Chat Completion API menggunakan OAuth untuk mengautentikasi dengan token akses jangka pendek. Secara {i>default<i}, token akses berlaku selama 1 jam. Anda dapat memperpanjang masa pakai token akses atau secara berkala memperbarui token Anda dan memperbarui OPENAI_API_KEY variabel lingkungan.

Memanggil Gemini Chat Completion API

Input teks

Contoh berikut menunjukkan cara mengirim permintaan non-streaming:

curl

  curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
  https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
  -d '{
    "model": "google/${MODEL_ID}",
    "messages": [{
      "role": "user",
      "content": "Write a story about a magic backpack."
    }]
  }'
  

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi Python API.

import vertexai
import openai

from google.auth import default, transport

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

vertexai.init(project=project_id, location=location)

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
auth_request = transport.requests.Request()
credentials.refresh(auth_request)

# # OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1beta1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-1.5-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Contoh berikut menunjukkan cara mengirim permintaan streaming:

curl

  curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
  https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
  -d '{
    "model": "google/${MODEL_ID}",
    "stream": true,
    "messages": [{
      "role": "user",
      "content": "Write a story about a magic backpack."
    }]
  }'
  

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk informasi selengkapnya, lihat Dokumentasi referensi Python API.

import vertexai
import openai

from google.auth import default, transport

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

vertexai.init(project=project_id, location=location)

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
auth_request = transport.requests.Request()
credentials.refresh(auth_request)

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1beta1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-1.5-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Parameter yang didukung

Gemini Chat Completion API mendukung OpenAI berikut parameter. Untuk penjelasan setiap parameter, lihat dokumentasi OpenAI tentang Membuat penyelesaian chat.

messages
  • System message
  • User message: Jenis text dan image_url didukung. Tujuan Jenis image_url hanya mendukung gambar yang disimpan di Cloud Storage. Kepada mempelajari cara membuat bucket Cloud Storage dan mengupload file ke dalamnya, lihat Menemukan penyimpanan objek. Opsi detail tidak didukung.
  • Assistant message
  • Tool message
  • Function message: Kolom ini tidak digunakan lagi, tetapi didukung untuk kompatibilitas mundur.
model
max_tokens
n
response_format
  • json_object: Diartikan sebagai meneruskan "application/json" ke Gemini API.
  • text: Diartikan sebagai meneruskan "teks/biasa" ke Gemini API.
  • Jenis MIME lainnya diteruskan apa adanya ke model, misalnya meneruskan &quot;application/json&quot; secara langsung.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: Menentukan parameter menggunakan elemen Spesifikasi OpenAPI. Ini berbeda dari isian parameter OpenAI, yang dijelaskan sebagai objek Skema JSON. Untuk mempelajari kata kunci perbedaan antara OpenAPI dan Skema JSON, lihat Panduan OpenAPI.
tool_choice
  • none
  • auto
  • required: Sesuai dengan mode ANY di FunctionCallingConfig.
function_call Kolom ini tidak digunakan lagi, tetapi didukung untuk versi mundur kompatibilitas mundur.
functions Kolom ini tidak digunakan lagi, tetapi didukung untuk versi mundur kompatibilitas mundur.

Jika Anda meneruskan parameter yang tidak didukung, parameter tersebut akan diabaikan.

Langkah selanjutnya