Formatta le richieste API

Questa pagina ti guida nella formattazione delle richieste API per Gemini su Google Distributed Cloud (GDC) air-gapped utilizzando i dettagli del corpo della richiesta dell'endpoint Chat Completions di OpenAI. Aderendo a questo formato, puoi integrare senza problemi le funzionalità avanzate di Gemini nelle tue applicazioni utilizzando la struttura dell'API OpenAI.

La famiglia di modelli Gemini include modelli che funzionano con richieste di prompt multimodali. Il termine multimodale indica che puoi utilizzare più di una modalità o tipo di input in un prompt. Per ulteriori informazioni, consulta la sezione Prompt di progettazione.

Per ulteriori informazioni sulle descrizioni generiche dei tipi, dei metodi e dei campi generati per la libreria gRPC, consulta il riferimento gRPC di Gemini.

Prima di iniziare

Prima di formattare le richieste API, assicurati di soddisfare i seguenti prerequisiti:

  • Scopri di più sulle funzionalità di Gemini su GDC.
  • Inizia con i requisiti minimi del progetto per effettuare richieste API per Gemini.
  • Identifica l'ID endpoint del modello Gemini che vuoi utilizzare nelle tue richieste. Selezionando un modello specifico, puoi utilizzare le sue funzionalità uniche per le tue attività. Consulta i modelli Gemini disponibili su GDC.
  • Scopri come creare prompt con attenzione per ottenere le risposte previste da Gemini. Sperimenta stili e formati di prompt diversi per ottimizzare l'output. Per ulteriori informazioni, consulta la pagina Introduzione ai prompt.
  • Esplora i vari parametri disponibili nell'endpoint OpenAI Chat Completions per controllare il comportamento di Gemini. Modifica i parametri, ad esempio temperature, max_completion_tokens e top_p, per controllare la creatività, la lunghezza e la diversità del testo generato. Per ulteriori informazioni, consulta Eseguire esperimenti con i parametri.

Sintassi della richiesta

Gli esempi seguenti contengono la sintassi che devi utilizzare nelle richieste API per generare una risposta modello:

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "MODEL_ID",
  messages = [
    {
      ...
    }
  ]
  ...
)

print(model_response)

curl

curl \
  -X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
  -d '{
      "model_id": "MODEL_ID",
      "messages" = [
        {
          ...
        }
      ]
      ...
  }'

Parametri API

Questa sezione contiene un elenco dei parametri più importanti che puoi definire nel corpo della richiesta delle tue richieste API per Gemini in GDC e nel corpo della risposta che il modello deve restituire. Per il riferimento API completo dell'endpoint Chat Completions di OpenAI, consulta https://platform.openai.com/docs/api-reference/chat.

Corpo della richiesta

{
  "messages" = [
    {
      "role": string,
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": string
          }
        },
        {
          "type": "input_audio",
          "input_audio": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "audio_url",
          "audio_url": {
            "url": string
          }
        },
        {
          "type": "input_video",
          "input_video": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "video_url",
          "video_url": {
            "url": string
          }
        },
        {
          "type": "input_document",
          "input_document": {
            "data": string,
            "format": string
          }
        },
        {
          "type": "document_url",
          "document_url": {
            "url": string
          }
        }
      ]
    }
  ],
  "temperature": number,
  "max_completion_tokens": integer,
  "top_p": number,
  "n": integer,
  "stop": string,
  "user": string
}

La tabella seguente descrive i campi chiave e le relative descrizioni nel corpo della richiesta per l'endpoint OpenAI Chat Completions quando viene utilizzato con Gemini:

Parametri
Nome campo Descrizione

model

Obbligatorio: string

Il modello Gemini da utilizzare.

Per saperne di più, consulta la pagina Modelli Gemini disponibili.

messages

Obbligatorio: object

Un elenco dei messaggi che compongono la conversazione corrente con il modello. Ogni messaggio ha un role e un content.

Sono supportati diversi tipi di messaggi (modalità), come testo, immagini, audio, video e documenti.

role

Obbligatorio: string

Il ruolo dell'autore del messaggio, che può essere uno dei seguenti:

  • system: istruzioni fornite dal sistema che il modello deve seguire, indipendentemente dai messaggi inviati dall'utente.
  • user: messaggi forniti dall'utente a cui il modello deve rispondere e che contengono prompt o informazioni contestuali aggiuntive.
  • assistant: Messaggi forniti dal modello in risposta ai messaggi degli utenti.

content

Obbligatorio: string o array

I contenuti del messaggio del sistema, dell'utente o dell'assistente.

Il valore è una singola istanza per le query a un solo turno. Per le query multi-turno, content è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta. Per maggiori dettagli, vedi content.

temperature

(Facoltativo) number o null

La casualità del testo generato.

I valori più bassi (più vicini a 0) producono risposte più deterministiche e mirate, mentre i valori più alti (più vicini a 2) producono risultati più diversificati e creativi.

Il valore predefinito è 1.

max_completion_tokens

(Facoltativo) integer o null

Il numero massimo di token da generare nella risposta, inclusi i token di output visibili e i token di ragionamento.

top_p

(Facoltativo) number o null

La probabilità di campionamento del nucleo.

I valori più alti (più vicini a 1) campionano una gamma più ampia di potenziali token, mentre i valori più bassi (più vicini a 0) si concentrano sui token più probabili.

Il valore predefinito è 1.

n

(Facoltativo) integer o null

Il numero di completamenti da generare per ogni prompt.

Il valore predefinito è 1.

stop

(Facoltativo) string, array o null

Un elenco di stringhe che, quando vengono rilevate, interrompono il processo di generazione del testo.

Il valore predefinito è null.

user

(Facoltativo) string

Un identificatore univoco per l'utente finale.

Questo parametro ti consente di monitorare i pattern di utilizzo e personalizzare le risposte.

content

Questo campo è il tipo di dati strutturati di base contenente i contenuti in più parti di un messaggio.

Se l'input è un prompt di testo, il valore di questo campo è una stringa. Tuttavia, per i prompt multimodali, questo campo è costituito da un array che contiene due proprietà principali in ogni oggetto: type e INPUT. La proprietà type indica il tipo di contenuti dell'input multimodale, mentre la proprietà INPUT contiene l'elemento di input, rappresentato come dati con codifica Base64 o un URL di un bucket di archiviazione GDC.

La seguente tabella mostra i campi content chiave e le relative descrizioni per i prompt multimodali:

Nome campo Descrizione

type

Obbligatorio: string

Il tipo di contenuti per i prompt multimodali. I valori accettabili includono:

  • image_url: i contenuti di input sono un'immagine fornita come dati codificati in base64 o come URL di un bucket di archiviazione GDC.
  • input_audio: i contenuti di input sono audio fornito come dati codificati in base64.
  • audio_url: I contenuti di input sono audio forniti come URL da un bucket di archiviazione GDC.
  • input_video: i contenuti di input sono video forniti come dati codificati in base64.
  • video_url: i contenuti di input sono video forniti come URL da un bucket di archiviazione GDC.
  • input_document: I contenuti di input sono un documento fornito come dati con codifica base64.
  • document_url: I contenuti di input sono un documento fornito come URL da un bucket di archiviazione GDC.

INPUT

Obbligatorio: object

L'input dei contenuti per i prompt multimodali. Il nome di questo campo deve corrispondere al valore specificato nel campo type.

Pertanto, questo nome di campo è uno dei seguenti:

  • Per le immagini: image_url
  • Per l'audio: input_audio o audio_url
  • Per i video: input_video o video_url
  • Per i documenti: input_document o document_url.

Ogni campo di input ha un url o un data e un format.

url

(Facoltativo) string

Se i contenuti di input vengono forniti come URL, il percorso del file in un bucket di archiviazione GDC.

Nel caso delle immagini, questo campo può contenere dati codificati in base64 anziché un URL.

data

(Facoltativo) string

Se i contenuti di input vengono forniti come dati con codifica base64, i dati binari vengono convertiti in una stringa di caratteri.

Nel caso delle immagini, i dati con codifica base64 vengono forniti nel campo url.

format

(Facoltativo) string

Se i contenuti di input vengono forniti nel campo data, la specifica del formato dei dati forniti.

A seconda dei dati di input, sono supportati diversi formati. Per ulteriori informazioni, consulta Tipi MIME per immagini, audio, video e documenti.

Corpo della risposta

{
  "id": string,
  "object": string,
  "created": integer,
  "model": string,
  "choices": [
    {
      "index": integer,
      "message": {
        "role": string,
        "content": string,
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": string
    }
  ],
  "usage": {
    "completion_tokens": integer,
    "prompt_tokens": integer,
    "total_tokens": integer
  },
  "system_fingerprint": string
}

La tabella seguente descrive i campi chiave e le relative descrizioni nel corpo della risposta restituito dal modello in base all'input fornito:

Nome campo Descrizione

id

string

Un identificatore univoco per il testo generato.

object

string

Il tipo di oggetto, che è sempre chat.completion.

created

integer

Il timestamp in secondi della generazione del testo.

model

string

Il modello utilizzato per generare il testo.

choices

array

Un elenco di scelte per la generazione di testo. Questo campo può contenere più scelte se n è maggiore di 1.

index

integer

L'indice della scelta nell'elenco delle scelte.

message

object

Un messaggio di generazione di testo generato dal modello. Questo campo contiene le seguenti proprietà:

  • role: (string) Il ruolo dell'autore del messaggio.
  • content: (string o null) I contenuti del messaggio.
  • refusal: (string o null) Il messaggio di rifiuto generato dal modello.

logprobs

object o null

Informazioni sulla probabilità logaritmica per la scelta.

finish_reason

string

Il motivo per cui il modello ha smesso di generare token. Il valore può essere uno dei seguenti:

  • stop: il modello raggiunge un punto di interruzione naturale o una sequenza di interruzione fornita.
  • length: è stato raggiunto il numero massimo di token specificato nella richiesta.
  • content_filter: i contenuti vengono omessi a causa di un avviso dei filtri dei contenuti.
  • tool_calls: Il modello ha chiamato uno strumento.

usage

object

Statistiche sull'utilizzo della richiesta.

completion_tokens

integer

Numero di token nel testo generato.

prompt_tokens

integer

Numero di token nel prompt.

total_tokens

integer

Il numero totale di token nel prompt e nel testo generato.

system_fingerprint

string

La configurazione di backend utilizzata dal modello per l'esecuzione.

Esempi

Questa sezione contiene un esempio per il corpo della richiesta e la risposta di generazione di testo che il modello deve restituire.

Esempio di richiesta

L'esempio seguente mostra i dettagli di un corpo della richiesta che invia un prompt a Gemini per generare testo. L'esempio contiene controlli per la temperatura e il numero massimo di token. Per i dettagli di implementazione, vedi Inviare un prompt di testo o Inviare un prompt multimodale.

{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful and informative assistant."
    },
    {
      "role": "user",
      "content": "What is the capital of France?"
    }
  ],
  "temperature": 0.7,
  "max_completion_tokens": 100
}

Esempio di risposta

Il seguente esempio mostra i dettagli di una risposta di generazione di testo restituita dal modello:

{
  "id": "",
  "object": "",
  "created": 0,
  "model": "",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The capital of France is Paris.\n",
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 8,
    "total_tokens": 15
  },
  "system_fingerprint": ""
}

Passaggi successivi