Chiama Gemini usando la libreria OpenAI

L'API Gemini Chat Completamenti consente di inviare richieste all'API Gemini di Vertex AI mediante le librerie OpenAI per Python e REST. Se utilizzi già le librerie OpenAI, puoi utilizzare questa API per passare dai modelli OpenAI ai modelli Gemini e viceversa per confrontare output, costi e scalabilità, senza modificare il codice esistente. Se non utilizzi già le librerie OpenAI, ti consigliamo di chiamare direttamente l'API Gemini.

Modelli supportati

Modello Versione
Gemini 1.5 Flash 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

Autentica

Per utilizzare le librerie Python di OpenAI, installa l'SDK OpenAI:

pip install openai

Per autenticarti con l'API Gemini Chat Completamenti, puoi modificare la configurazione del client o cambiare la configurazione dell'ambiente per utilizzare l'autenticazione Google e un endpoint Vertex AI. Scegli una delle seguenti opzioni, a seconda di quale delle due opzioni è più semplice:

Configurazione client

Per ottenere in modo programmatico le credenziali Google in Python, puoi utilizzare l'SDK Python google-auth:

pip install google-auth
pip install requests

Modifica l'SDK OpenAI in modo che punti all'endpoint di completamento della chat Vertex AI:

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

Per impostazione predefinita, i token di accesso durano un'ora. Puoi prolungare la durata del token di accesso o aggiornare periodicamente il token e aggiornare la variabile openai.api_key.

Variabili di ambiente

Installa Google Cloud CLI. La libreria OpenAI può leggere le variabili di ambiente OPENAI_API_KEY e OPENAI_BASE_URL per modificare l'autenticazione e l'endpoint nel client predefinito. Imposta le seguenti variabili:

$ 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"

Quindi, inizializza il client:

client = openai.OpenAI()

L'API Gemini Chat Completamenti utilizza OAuth per l'autenticazione con un token di accesso di breve durata. Per impostazione predefinita, i token di accesso durano un'ora. Puoi prolungare la durata del token di accesso o aggiornare periodicamente il token e aggiornare la variabile di ambiente OPENAI_API_KEY.

Chiamare l'API Gemini Chat Completamenti

Il seguente esempio mostra come inviare richieste non di 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

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = f"google/{MODEL_ID}",
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

L'esempio seguente mostra come inviare richieste di 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

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = f"google/{MODEL_ID}",
  stream = True,
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

Parametri supportati

L'API Gemini Chat Completamenti supporta i seguenti parametri OpenAI. Per una descrizione di ogni parametro, consulta la documentazione di OpenAI sulla creazione di completamenti di chat.

messages
  • System message
  • User message: sono supportati i tipi text e image_url. Il tipo image_url supporta solo immagini archiviate in Cloud Storage. Per scoprire come creare un bucket Cloud Storage e caricare un file al suo interno, consulta Scopri l'archiviazione di oggetti. L'opzione detail non è supportata.
  • Assistant message
model
max_tokens
n
response_format
  • json_object: interpretato come passaggio di "application/json" all'API Gemini.
  • text: interpretato come passaggio di "testo/normale" all'API Gemini.
  • Qualsiasi altro tipo MIME viene passato al modello così com'è, ad esempio il passaggio diretto di "application/json".
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters
tool_choice
  • none
  • auto
  • required: corrisponde alla modalità ANY in FunctionCallingConfig.
function_call Questo campo è deprecato, ma è supportato per la compatibilità con le versioni precedenti.
functions Questo campo è deprecato, ma è supportato per la compatibilità con le versioni precedenti.

Se passi qualsiasi parametro non supportato, questo viene ignorato.

Passaggi successivi