Chiama Gemini usando la libreria OpenAI

L'API Gemini Chat Completamenti ti consente di inviare richieste ai l'API Gemini di Vertex AI mediante le librerie OpenAI per Python e REST. Se usi già le librerie OpenAI, puoi usare questa API per cambiare tra le chiamate ai modelli OpenAI Gemini per confrontare output, costi e scalabilità, senza modificare il codice esistente. Se non usi già le librerie OpenAI, ti consigliamo chiama l'API Gemini strato Add.

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 eseguire l'autenticazione con l'API Gemini Chat Completamenti, puoi: puoi modificare la configurazione del client o il tuo ambiente per utilizzare l'autenticazione Google e un modello Vertex AI endpoint. 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 il comando SDK Python google-auth:

pip install google-auth
pip install requests

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

# 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 vita del tuo token di accesso oppure aggiorna periodicamente il token e la variabile openai.api_key.

Variabili di ambiente

Installa Google Cloud CLI. La libreria OpenAI può lettura degli ambienti OPENAI_API_KEY e OPENAI_BASE_URL per modificare l'autenticazione e l'endpoint nel loro 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 vita del tuo token di accesso oppure aggiorna periodicamente il token e aggiorna OPENAI_API_KEY variabile di ambiente.

Chiamare l'API Gemini Chat Completamenti

Immissione testo

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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.

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)

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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta documentazione di riferimento dell'API Python.

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)

Parametri supportati

L'API Gemini Chat Completamenti supporta le seguenti funzionalità OpenAI parametri. Per una descrizione di ogni parametro, consulta la documentazione di OpenAI su Creazione di completamenti della chat.

messages
  • System message
  • User message: sono supportati i tipi text e image_url. La Il tipo image_url supporta solo immagini archiviate in Cloud Storage. A creare un bucket Cloud Storage e caricare un file al suo interno, vedi Scopri l'archiviazione di oggetti. L'opzione detail non è supportata.
  • Assistant message
  • Tool message
  • Function message: questo campo è obsoleto, ma è supportato per compatibilità con le versioni precedenti.
model
max_tokens
n
response_format
  • json_object: viene interpretato come superamento di "application/json" alla dell'API Gemini.
  • text: interpretato come "testo/normale" passante a Gemini tramite Google Cloud CLI o tramite l'API Compute Engine.
  • Qualsiasi altro tipo MIME viene passato così com'è al modello, ad esempio il passaggio "application/json" strato Add.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: specifica i parametri utilizzando la proprietà Specifica OpenAPI. Questo è diverso dal campo dei parametri OpenAI, che descritto come oggetto schema JSON. Per informazioni sulle parole chiave differenze tra OpenAPI e lo schema JSON, consulta le Guida di OpenAPI.
tool_choice
  • none
  • auto
  • required: corrisponde alla modalità ANY nel FunctionCallingConfig.
function_call Questo campo è obsoleto, ma è supportato per le versioni precedenti la compatibilità.
functions Questo campo è obsoleto, ma è supportato per le versioni precedenti la compatibilità.

Se passi qualsiasi parametro non supportato, questo viene ignorato.

Passaggi successivi