Generating content

L'API Gemini supporta la generazione di contenuti con immagini, audio, codice, strumenti e altro ancora. Per informazioni dettagliate su ciascuna di queste funzionalità, continua a leggere e consulta il codice campione incentrato sulle attività o leggi le guide complete.

Metodo: models.generateContent

Genera una risposta del modello dato un input GenerateContentRequest. Per informazioni dettagliate sull'utilizzo, consulta la guida alla generazione di testo. Le funzionalità di input variano a seconda dei modelli, inclusi quelli ottimizzati. Per maggiori dettagli, consulta la guida al modello e la guida all'ottimizzazione.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

Parametri del percorso

model string

Obbligatorio. Il nome del Model da utilizzare per generare il completamento.

Formato: models/{model}. Assume la forma models/{model}.

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Campi
contents[] object (Content)

Obbligatorio. I contenuti della conversazione attuale con il modello.

Per le query a un solo turno, si tratta di una singola istanza. Per le query multi-turno come chat, questo è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta.

tools[] object (Tool)

Facoltativo. Un elenco di Tools che Model può utilizzare per generare la risposta successiva.

Un Tool è un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori delle conoscenze e dell'ambito di Model. I Tool supportati sono Function e codeExecution. Per saperne di più, consulta le guide Chiamata di funzioni ed Esecuzione di codice.

toolConfig object (ToolConfig)

Facoltativo. Configurazione dello strumento per qualsiasi Tool specificato nella richiesta. Per un esempio di utilizzo, consulta la guida alla chiamata di funzioni.

safetySettings[] object (SafetySetting)

Facoltativo. Un elenco di istanze SafetySetting uniche per bloccare i contenuti non sicuri.

Verrà applicata il giorno GenerateContentRequest.contents e GenerateContentResponse.candidates. Non deve esserci più di un'impostazione per ogni tipo di SafetyCategory. L'API bloccherà tutti i contenuti e le risposte che non soddisfano le soglie impostate da queste impostazioni. Questo elenco sostituisce le impostazioni predefinite per ogni SafetyCategory specificato in safetySettings. Se nell'elenco non è presente SafetySetting per un determinato SafetyCategory, l'API utilizzerà l'impostazione di sicurezza predefinita per quella categoria. Sono supportate le categorie di contenuti dannosi HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Per informazioni dettagliate sulle impostazioni di sicurezza disponibili, consulta la guida. Consulta anche le linee guida per la sicurezza per scoprire come incorporare le considerazioni sulla sicurezza nelle tue applicazioni AI.

systemInstruction object (Content)

Facoltativo. Lo sviluppatore ha impostato istruzioni di sistema. Al momento, solo testo.

generationConfig object (GenerationConfig)

Facoltativo. Opzioni di configurazione per la generazione e gli output del modello.

cachedContent string

Facoltativo. Il nome dei contenuti memorizzati nella cache da utilizzare come contesto per erogare la previsione. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Facoltativo. Il livello di servizio della richiesta.

store boolean

Facoltativo. Configura il comportamento di logging per una determinata richiesta. Se impostata, ha la precedenza sulla configurazione della registrazione a livello di progetto.

Esempio di richiesta

Testo

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Java

Client client = new Client();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

System.out.println(response.text());

Immagine

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response = client.models.generateContent("gemini-3.7-flash", content, null);

System.out.println(response.text());

Audio

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const audio = await ai.files.upload({
  file: path.join(media, "sample.mp3"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Give me a summary of this audio file.",
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Video

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: "I have 2 dogs in my house.",
});
console.log("Chat response 1:", response1.text);

const response2 = await chat.sendMessage({
  message: "How many paws are in my house?",
});
console.log("Chat response 2:", response2.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

Conchiglia

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Java

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
        Content.builder()
                .role("model")
                .parts(
                        Collections.singletonList(
                                Part.fromText("Great to meet you. What would you like to know?")
                        )
                ).build();

Chat chat = client.chats.create(
        "gemini-3.7-flash",
        GenerateContentConfig.builder()
                .systemInstruction(userContent)
                .systemInstruction(modelContent)
                .build()
);

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

Cache

Python

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.7-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.7-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
console.log("Cache created:", cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.7-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Modello ottimizzato

Python

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Modalità JSON

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
    recipe_name: str
    ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "List a few popular cookie recipes.",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "array",
      items: {
        type: "object",
        properties: {
          recipeName: { type: "string" },
          ingredients: { type: "array", items: { type: "string" } },
        },
        required: ["recipeName", "ingredients"],
      },
    },
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

Java

Client client = new Client();

Schema recipeSchema = Schema.builder()
        .type(Array.class.getSimpleName())
        .items(Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                        Map.of("recipe_name", Schema.builder()
                                        .type(String.class.getSimpleName())
                                        .build(),
                                "ingredients", Schema.builder()
                                        .type(Array.class.getSimpleName())
                                        .items(Schema.builder()
                                                .type(String.class.getSimpleName())
                                                .build())
                                        .build())
                )
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .responseMimeType("application/json")
                .responseSchema(recipeSchema)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "List a few popular cookie recipes.",
                config);

System.out.println(response.text());

Eseguire il codice

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

Java

Client client = new Client();

String prompt = """
        Write and execute code that calculates the sum of the first 50 prime numbers.
        Ensure that only the executable code and its resulting output are generated.
        """;

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                prompt,
                null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
    System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

Chiamata di funzione

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
    """returns a + b."""
    return a + b

def subtract(a: float, b: float) -> float:
    """returns a - b."""
    return a - b

def multiply(a: float, b: float) -> float:
    """returns a * b."""
    return a * b

def divide(a: float, b: float) -> float:
    """returns a / b."""
    return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.7-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-3.7-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
	case "addNumbers":
		result = add(args.FirstParam, args.SecondParam)
	case "subtractNumbers":
		result = subtract(args.FirstParam, args.SecondParam)
	case "multiplyNumbers":
		result = multiply(args.FirstParam, args.SecondParam)
	case "divideNumbers":
		result = divide(args.FirstParam, args.SecondParam)
	default:
		return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is " + fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

  /**
   * The add function returns the sum of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function add(a, b) {
    return a + b;
  }

  /**
   * The subtract function returns the difference (a - b).
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function subtract(a, b) {
    return a - b;
  }

  /**
   * The multiply function returns the product of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function multiply(a, b) {
    return a * b;
  }

  /**
   * The divide function returns the quotient of a divided by b.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function divide(a, b) {
    return a / b;
  }

  const addDeclaration = {
    name: "addNumbers",
    parameters: {
      type: "object",
      description: "Return the result of adding two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description:
            "The first parameter which can be an integer or a floating point number.",
        },
        secondParam: {
          type: "number",
          description:
            "The second parameter which can be an integer or a floating point number.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const subtractDeclaration = {
    name: "subtractNumbers",
    parameters: {
      type: "object",
      description:
        "Return the result of subtracting the second number from the first.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const multiplyDeclaration = {
    name: "multiplyNumbers",
    parameters: {
      type: "object",
      description: "Return the product of two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const divideDeclaration = {
    name: "divideNumbers",
    parameters: {
      type: "object",
      description:
        "Return the quotient of dividing the first number by the second.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  // Step 1: Call generateContent with function calling enabled.
  const generateContentResponse = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents:
      "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
    config: {
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.ANY,
        },
      },
      tools: [
        {
          functionDeclarations: [
            addDeclaration,
            subtractDeclaration,
            multiplyDeclaration,
            divideDeclaration,
          ],
        },
      ],
    },
  });

  // Step 2: Extract the function call.(
  // Assuming the response contains a 'functionCalls' array.
  const functionCall =
    generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
  console.log(functionCall);

  // Parse the arguments.
  const args = functionCall.args;
  // Expected args format: { firstParam: number, secondParam: number }

  // Step 3: Invoke the actual function based on the function name.
  const functionMapping = {
    addNumbers: add,
    subtractNumbers: subtract,
    multiplyNumbers: multiply,
    divideNumbers: divide,
  };
  const func = functionMapping[functionCall.name];
  if (!func) {
    console.error("Unimplemented error:", functionCall.name);
    return generateContentResponse;
  }
  const resultValue = func(args.firstParam, args.secondParam);
  console.log("Function result:", resultValue);

  // Step 4: Use the chat API to send the result as the final answer.
  const chat = ai.chats.create({ model: "gemini-3.7-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

Conchiglia


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

Java

Client client = new Client();

FunctionDeclaration addFunction =
        FunctionDeclaration.builder()
                .name("addNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration subtractFunction =
        FunctionDeclaration.builder()
                .name("subtractNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration multiplyFunction =
        FunctionDeclaration.builder()
                .name("multiplyNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration divideFunction =
        FunctionDeclaration.builder()
                .name("divideNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .toolConfig(ToolConfig.builder().functionCallingConfig(
                FunctionCallingConfig.builder().mode("ANY").build()
        ).build())
        .tools(
                Collections.singletonList(
                        Tool.builder().functionDeclarations(
                                Arrays.asList(
                                        addFunction,
                                        subtractFunction,
                                        divideFunction,
                                        multiplyFunction
                                )
                        ).build()

                )
        )
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
                config);


if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
    System.err.println("No function call received");
    return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

Configurazione della generazione

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Tell me a story about a magic backpack.",
  config: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

Conchiglia

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

Java

Client client = new Client();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .candidateCount(1)
                .stopSequences(List.of("x"))
                .maxOutputTokens(20)
                .temperature(1.0F)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Tell me a story about a magic backpack.",
                config);

System.out.println(response.text());

Impostazioni di sicurezza

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! "
    "Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  const unsafePrompt =
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.";

  const response = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents: unsafePrompt,
    config: {
      safetySettings: [
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_MEDIUM_AND_ABOVE",
        },
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_ONLY_HIGH",
        },
      ],
    },
  });

  try {
    console.log("Generated text:", response.text);
  } catch (error) {
    console.log("No information generated by the model.");
  }
  console.log("Safety ratings:", response.candidates[0].safetyRatings);
  return response;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

Conchiglia

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Java

Client client = new Client();

String unsafePrompt = """
         I support Martians Soccer Club and I think Jupiterians Football Club sucks!
         Write a ironic phrase about them including expletives.
        """;

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .safetySettings(Arrays.asList(
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HATE_SPEECH")
                                .threshold("BLOCK_MEDIUM_AND_ABOVE")
                                .build(),
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HARASSMENT")
                                .threshold("BLOCK_ONLY_HIGH")
                                .build()
                )).build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                unsafePrompt,
                config);

try {
    System.out.println(response.text());
} catch (Exception e) {
    System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

Istruzione di sistema

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Good morning! How are you?",
  config: {
    systemInstruction: "You are a cat. Your name is Neko.",
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Conchiglia

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Java

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .systemInstruction(content)
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Good morning! How are you?",
                config);

System.out.println(response.text());

Corpo della risposta

In caso di esito positivo, il corpo della risposta contiene un'istanza di GenerateContentResponse.

Metodo: models.streamGenerateContent

Genera una risposta in streaming dal modello dato un input GenerateContentRequest.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

Parametri del percorso

model string

Obbligatorio. Il nome del Model da utilizzare per generare il completamento.

Formato: models/{model}. Assume la forma models/{model}.

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Campi
contents[] object (Content)

Obbligatorio. I contenuti della conversazione attuale con il modello.

Per le query a un solo turno, si tratta di una singola istanza. Per le query multi-turno come chat, questo è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta.

tools[] object (Tool)

Facoltativo. Un elenco di Tools che Model può utilizzare per generare la risposta successiva.

Un Tool è un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori delle conoscenze e dell'ambito di Model. I Tool supportati sono Function e codeExecution. Per saperne di più, consulta le guide Chiamata di funzioni ed Esecuzione di codice.

toolConfig object (ToolConfig)

Facoltativo. Configurazione dello strumento per qualsiasi Tool specificato nella richiesta. Per un esempio di utilizzo, consulta la guida alla chiamata di funzioni.

safetySettings[] object (SafetySetting)

Facoltativo. Un elenco di istanze SafetySetting uniche per bloccare i contenuti non sicuri.

Verrà applicata il giorno GenerateContentRequest.contents e GenerateContentResponse.candidates. Non deve esserci più di un'impostazione per ogni tipo di SafetyCategory. L'API bloccherà tutti i contenuti e le risposte che non soddisfano le soglie impostate da queste impostazioni. Questo elenco sostituisce le impostazioni predefinite per ogni SafetyCategory specificato in safetySettings. Se nell'elenco non è presente SafetySetting per un determinato SafetyCategory, l'API utilizzerà l'impostazione di sicurezza predefinita per quella categoria. Sono supportate le categorie di contenuti dannosi HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Per informazioni dettagliate sulle impostazioni di sicurezza disponibili, consulta la guida. Consulta anche le linee guida per la sicurezza per scoprire come incorporare le considerazioni sulla sicurezza nelle tue applicazioni AI.

systemInstruction object (Content)

Facoltativo. Lo sviluppatore ha impostato istruzioni di sistema. Al momento, solo testo.

generationConfig object (GenerationConfig)

Facoltativo. Opzioni di configurazione per la generazione e gli output del modello.

cachedContent string

Facoltativo. Il nome dei contenuti memorizzati nella cache da utilizzare come contesto per erogare la previsione. Formato: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Facoltativo. Il livello di servizio della richiesta.

store boolean

Facoltativo. Configura il comportamento di logging per una determinata richiesta. Se impostata, ha la precedenza sulla configurazione della registrazione a livello di progetto.

Esempio di richiesta

Testo

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Conchiglia

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

Java

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

Immagine

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Conchiglia

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));


ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                content,
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

Audio

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Conchiglia

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

Video

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Conchiglia

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Conchiglia

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message_stream(message="How many paws are in my house?")
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

console.log("Streaming response for first message:");
const stream1 = await chat.sendMessageStream({
  message: "I have 2 dogs in my house.",
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log("Streaming response for second message:");
const stream2 = await chat.sendMessageStream({
  message: "How many paws are in my house?",
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log(chat.getHistory());

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

Conchiglia

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Corpo della risposta

In caso di esito positivo, il corpo della risposta contiene un flusso di istanze GenerateContentResponse.

GenerateContentResponse

Risposta del modello che supporta più risposte candidate.

Le valutazioni di sicurezza e il filtro dei contenuti vengono segnalati sia per il prompt in GenerateContentResponse.prompt_feedback sia per ogni candidato in finishReason e in safetyRatings. L'API: - Restituisce tutti i candidati richiesti o nessuno - Non restituisce alcun candidato solo se si è verificato un problema con il prompt (controlla promptFeedback) - Riporta il feedback su ogni candidato in finishReason e safetyRatings.

Campi
candidates[] object (Candidate)

Risposte candidate del modello.

promptFeedback object (PromptFeedback)

Restituisce il feedback del prompt relativo ai filtri dei contenuti.

usageMetadata object (UsageMetadata)

Solo output. Metadati sull'utilizzo dei token delle richieste di generazione.

modelVersion string

Solo output. La versione del modello utilizzata per generare la risposta.

responseId string

Solo output. responseId viene utilizzato per identificare ogni risposta.

modelStatus object (ModelStatus)

Solo output. Lo stato attuale del modello.

Rappresentazione JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Un insieme di metadati del feedback specificati nel prompt in GenerateContentRequest.content.

Campi
blockReason enum (BlockReason)

Facoltativo. Se impostato, il prompt è stato bloccato e non vengono restituiti candidati. Riformula il prompt.

safetyRatings[] object (SafetyRating)

Valutazioni della sicurezza del prompt. È presente al massimo una classificazione per categoria.

Rappresentazione JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Specifica il motivo per cui la richiesta è stata bloccata.

Enum
BLOCK_REASON_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
SAFETY Il prompt è stato bloccato per motivi di sicurezza. Ispeziona safetyRatings per capire da quale categoria di sicurezza è stato bloccato.
OTHER Il prompt è stato bloccato per motivi sconosciuti.
BLOCKLIST Il prompt è stato bloccato a causa dei termini inclusi nell'elenco bloccato della terminologia.
PROHIBITED_CONTENT Il prompt è stato bloccato a causa di contenuti vietati.
IMAGE_SAFETY Candidati bloccati a causa di contenuti di generazione di immagini non sicuri.

UsageMetadata

Metadati sull'utilizzo dei token della richiesta di generazione.

Campi
promptTokenCount integer

Numero di token nel prompt. Quando cachedContent è impostato, questa è comunque la dimensione effettiva totale del prompt, il che significa che include il numero di token nei contenuti memorizzati nella cache.

cachedContentTokenCount integer

Numero di token nella parte memorizzata nella cache del prompt (i contenuti memorizzati nella cache)

candidatesTokenCount integer

Numero totale di token in tutte le risposte candidate generate.

toolUsePromptTokenCount integer

Solo output. Numero di token presenti nei prompt di utilizzo degli strumenti.

thoughtsTokenCount integer

Solo output. Numero di token di pensieri per i modelli di pensiero.

totalTokenCount integer

Il conteggio totale dei token per la richiesta di generazione (prompt + pensieri + candidati alla risposta).

promptTokensDetails[] object (ModalityTokenCount)

Solo output. Elenco delle modalità elaborate nell'input della richiesta.

cacheTokensDetails[] object (ModalityTokenCount)

Solo output. Elenco delle modalità dei contenuti memorizzati nella cache nell'input della richiesta.

candidatesTokensDetails[] object (ModalityTokenCount)

Solo output. Elenco delle modalità restituite nella risposta.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Solo output. Elenco delle modalità elaborate per gli input delle richieste di utilizzo degli strumenti.

serviceTier enum (ServiceTier)

Solo output. Livello di servizio della richiesta.

Rappresentazione JSON
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

Lo stato del modello sottostante. Viene utilizzato per indicare la fase del modello sottostante e l'ora di ritiro, se applicabile.

Campi
modelStage enum (ModelStage)

La fase del modello sottostante.

retirementTime string (Timestamp format)

L'ora in cui il modello verrà ritirato.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

message string

Un messaggio che spiega lo stato del modello.

Rappresentazione JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Definisce la fase del modello sottostante.

Enum
MODEL_STAGE_UNSPECIFIED Fase del modello non specificata.
UNSTABLE_EXPERIMENTAL

Il modello sottostante è soggetto a molte ottimizzazioni.

EXPERIMENTAL I modelli in questa fase sono solo a scopo sperimentale.
PREVIEW I modelli in questa fase sono più maturi rispetto a quelli sperimentali.
STABLE I modelli in questa fase sono considerati stabili e pronti per l'uso in produzione.
LEGACY Se il modello si trova in questa fase, significa che verrà ritirato nel prossimo futuro. Solo i clienti esistenti possono utilizzare questo modello.
DEPRECATED

I modelli in questa fase sono deprecati. Questi modelli non possono essere utilizzati.

RETIRED I modelli in questa fase vengono ritirati. Questi modelli non possono essere utilizzati.

Candidato

Una risposta candidata generata dal modello.

Campi
content object (Content)

Solo output. Contenuti generati restituiti dal modello.

finishReason enum (FinishReason)

Facoltativo. Solo output. Il motivo per cui il modello ha smesso di generare token.

Se è vuoto, il modello non ha interrotto la generazione di token.

safetyRatings[] object (SafetyRating)

Elenco delle valutazioni per la sicurezza di una risposta candidata.

È presente al massimo una classificazione per categoria.

citationMetadata object (CitationMetadata)

Solo output. Informazioni sulla citazione per il candidato generato dal modello.

Questo campo può essere compilato con informazioni sulla recitazione per qualsiasi testo incluso in content. Si tratta di passaggi "recitati" da materiale protetto da copyright nei dati di addestramento del modello LLM di base.

tokenCount integer

Solo output. Conteggio dei token per questo candidato.

groundingAttributions[] object (GroundingAttribution)

Solo output. Informazioni sull'attribuzione delle fonti che hanno contribuito a una risposta basata sui dati.

Questo campo viene compilato per le chiamate GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Solo output. Metadati di base per il candidato.

Questo campo viene compilato per le chiamate GenerateContent.

avgLogprobs number

Solo output. Punteggio di probabilità logaritmica medio del candidato.

logprobsResult object (LogprobsResult)

Solo output. Punteggi di log-verosimiglianza per i token di risposta e i token principali

urlContextMetadata object (UrlContextMetadata)

Solo output. Metadati relativi allo strumento di recupero del contesto URL.

index integer

Solo output. Indice del candidato nell'elenco dei candidati per la risposta.

finishMessage string

Facoltativo. Solo output. Specifica il motivo per cui il modello ha smesso di generare token. Questo campo viene compilato solo quando è impostato finishReason.

Rappresentazione JSON
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

Definisce il motivo per cui il modello ha smesso di generare token.

Enum
FINISH_REASON_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
STOP Punto di interruzione naturale del modello o sequenza di interruzione fornita.
MAX_TOKENS È stato raggiunto il numero massimo di token specificato nella richiesta.
SAFETY I contenuti della risposta candidata sono stati segnalati per motivi di sicurezza.
RECITATION I contenuti del candidato alla risposta sono stati segnalati per motivi di recitazione.
LANGUAGE I contenuti della risposta candidata sono stati segnalati per l'utilizzo di una lingua non supportata.
OTHER Motivo sconosciuto.
BLOCKLIST La generazione di token è stata interrotta perché i contenuti includono termini vietati.
PROHIBITED_CONTENT La generazione di token è stata interrotta perché potrebbero contenere contenuti vietati.
SPII La generazione di token è stata interrotta perché i contenuti potrebbero contenere informazioni sensibili che consentono l'identificazione personale (SPII).
MALFORMED_FUNCTION_CALL La chiamata di funzione generata dal modello non è valida.
IMAGE_SAFETY La generazione di token è stata interrotta perché le immagini generate contengono violazioni della sicurezza.
IMAGE_PROHIBITED_CONTENT La generazione di immagini è stata interrotta perché le immagini generate contengono altri contenuti vietati.
IMAGE_OTHER La generazione di immagini è stata interrotta a causa di un altro problema generico.
NO_IMAGE Il modello avrebbe dovuto generare un'immagine, ma non ne è stata generata nessuna.
IMAGE_RECITATION La generazione di immagini è stata interrotta a causa della recitazione.
UNEXPECTED_TOOL_CALL Il modello ha generato una chiamata di strumento, ma non sono stati abilitati strumenti nella richiesta.
TOO_MANY_TOOL_CALLS Il modello ha chiamato troppi strumenti consecutivamente, quindi il sistema ha interrotto l'esecuzione.
MISSING_THOUGHT_SIGNATURE Nella richiesta manca almeno una firma del pensiero.
MALFORMED_RESPONSE Terminato a causa di una risposta con formato non valido.
ESCALATION La richiesta è stata filtrata da una regola di riassegnazione.

GroundingAttribution

Attribuzione di una fonte che ha contribuito a una risposta.

Campi
sourceId object (AttributionSourceId)

Solo output. Identificatore dell'origine che contribuisce a questa attribuzione.

content object (Content)

Contenuti dell'origine di base che compongono questa attribuzione.

Rappresentazione JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Identificatore dell'origine che contribuisce a questa attribuzione.

Campi
source Union type
source può essere solo uno dei seguenti tipi:
groundingPassage object (GroundingPassageId)

Identificatore di un passaggio in linea.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Identificatore di un Chunk recuperato tramite Semantic Retriever.

Rappresentazione JSON
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

Identificatore di una parte all'interno di un GroundingPassage.

Campi
passageId string

Solo output. ID del passaggio corrispondente al GroundingPassage.id del GenerateAnswerRequest.

partIndex integer

Solo output. Indice della parte all'interno di GroundingPassage.content di GenerateAnswerRequest.

Rappresentazione JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Identificatore di un Chunk recuperato tramite Semantic Retriever specificato in GenerateAnswerRequest utilizzando SemanticRetrieverConfig.

Campi
source string

Solo output. Il nome dell'origine corrispondente al valore SemanticRetrieverConfig.source della richiesta. Esempio: corpora/123 o corpora/123/documents/abc

chunk string

Solo output. Nome di Chunk contenente il testo attribuito. Esempio: corpora/123/documents/abc/chunks/xyz

Rappresentazione JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Metadati restituiti al client quando è abilitata la base.

Campi
groundingChunks[] object (GroundingChunk)

Elenco dei riferimenti di supporto recuperati dall'origine di grounding specificata. Durante lo streaming, contiene solo i chunk di grounding che non sono stati inclusi nei metadati di grounding delle risposte precedenti.

groundingSupports[] object (GroundingSupport)

Elenco del supporto per il grounding.

webSearchQueries[] string

Query di ricerca web per la ricerca web successiva.

imageSearchQueries[] string

Query di ricerca immagini utilizzate per il grounding.

searchEntryPoint object (SearchEntryPoint)

Facoltativo. Voce della Ricerca Google per le ricerche sul web successive.

retrievalMetadata object (RetrievalMetadata)

Metadati relativi al recupero nel flusso di grounding.

googleMapsWidgetContextToken string

Facoltativo. Nome della risorsa del token di contesto del widget Google Maps che può essere utilizzato con il widget PlacesContextElement per eseguire il rendering dei dati contestuali. Viene compilato solo se è attivato il grounding con Google Maps.

Rappresentazione JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Punto di accesso alla Ricerca Google.

Campi
renderedContent string

Facoltativo. Snippet di contenuti web che può essere incorporato in una pagina web o in una webview di un'app.

sdkBlob string (bytes format)

Facoltativo. JSON codificato in base64 che rappresenta l'array di tuple <termine di ricerca, URL di ricerca>.

Una stringa con codifica in base64.

Rappresentazione JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

Un GroundingChunk rappresenta un segmento di prove a sostegno che giustificano la risposta del modello. Può trattarsi di un frammento del web, di un contesto recuperato da un file o di informazioni di Google Maps.

Campi
chunk_type Union type
Tipo di blocco. chunk_type può essere solo uno dei seguenti tipi:
web object (Web)

Chunk di grounding dal web.

image object (Image)

Facoltativo. Chunk di fondatezza della ricerca immagini.

retrievedContext object (RetrievedContext)

Facoltativo. Chunk di grounding dal contesto recuperato dallo strumento di ricerca dei file.

maps object (Maps)

Facoltativo. Chunk di grounding da Google Maps.

Rappresentazione JSON
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

Web

Brano dal web.

Campi
uri string

Solo output. Riferimento URI del blocco.

title string

Solo output. Il titolo del segmento.

Rappresentazione JSON
{
  "uri": string,
  "title": string
}

Immagine

Chunk dalla ricerca immagini.

Campi
sourceUri string

L'URI della pagina web per l'attribuzione.

imageUri string

L'URL dell'asset immagine.

title string

Il titolo della pagina web da cui proviene l'immagine.

domain string

Il dominio principale della pagina web da cui proviene l'immagine, ad esempio "example.com".

Rappresentazione JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Il blocco dal contesto recuperato dallo strumento di ricerca dei file.

Campi
customMetadata[] object (CustomMetadata)

Facoltativo. Metadati forniti dall'utente sul contesto recuperato.

uri string

Facoltativo. Riferimento URI del documento di recupero semantico.

title string

Facoltativo. Il titolo del documento.

text string

Facoltativo. Il testo del segmento.

fileSearchStore string

Facoltativo. Nome del FileSearchStore contenente il documento. Esempio: fileSearchStores/123

pageNumber integer

Facoltativo. Numero di pagina del contesto recuperato, se applicabile.

mediaId string

Facoltativo. Il nome della risorsa blob multimediale per i risultati della ricerca di file multimodali. Formato: fileSearchStores/{file_search_store_id}/media/{blobId}

Rappresentazione JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Metadati forniti dall'utente relativi a GroundingFact.

Campi
key string

La chiave dei metadati.

value Union type
Il valore dei metadati. Può essere una stringa, un elenco di stringhe o un numero. value può essere solo uno dei seguenti tipi:
stringValue string

Facoltativo. Il valore stringa dei metadati.

stringListValue object (StringList)

Facoltativo. Un elenco di valori stringa per i metadati.

numericValue number

Facoltativo. Il valore numerico dei metadati. L'intervallo previsto per questo valore dipende dal key specifico utilizzato.

Rappresentazione JSON
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

Un elenco di valori stringa.

Campi
values[] string

I valori stringa dell'elenco.

Rappresentazione JSON
{
  "values": [
    string
  ]
}

Maps

Un chunk di grounding di Google Maps. Un blocco di Maps corrisponde a un singolo luogo.

Campi
uri string

Riferimento URI del luogo.

title string

Titolo del luogo.

text string

Descrizione testuale della risposta del luogo.

placeId string

L'ID del luogo, nel formato places/{placeId}. Un utente può utilizzare questo ID per cercare il luogo.

placeAnswerSources object (PlaceAnswerSources)

Fonti che forniscono risposte sulle caratteristiche di un determinato luogo in Google Maps.

Rappresentazione JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Raccolta di fonti che forniscono risposte sulle caratteristiche di un determinato luogo in Google Maps. Ogni messaggio PlaceAnswerSources corrisponde a un luogo specifico in Google Maps. Lo strumento Google Maps ha utilizzato queste fonti per rispondere a domande sulle caratteristiche del luogo (ad es. "Il bar Foo ha il Wi-Fi?" o "Il bar Foo è accessibile alle persone con disabilità motoria?"). Al momento supportiamo solo gli snippet delle recensioni come fonti.

Campi
reviewSnippets[] object (ReviewSnippet)

Snippet di recensioni utilizzati per generare risposte sulle caratteristiche di un determinato luogo in Google Maps.

Rappresentazione JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Contiene un estratto di una recensione utente che risponde a una domanda sulle caratteristiche di un luogo specifico in Google Maps.

Campi
reviewId string

L'ID dello snippet recensione.

googleMapsUri string

Un link che corrisponde alla recensione dell'utente su Google Maps.

title string

Titolo della recensione.

Rappresentazione JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Supporto per il grounding.

Campi
groundingChunkIndices[] integer

Facoltativo. Un elenco di indici (in "grounding_chunk" in response.candidate.grounding_metadata) che specificano le citazioni associate alla rivendicazione. Ad esempio, [1,3,4] significa che grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] sono i contenuti recuperati attribuiti all'affermazione. Se la risposta è in streaming, groundingChunkIndices si riferisce agli indici di tutte le risposte. È responsabilità del client accumulare i chunk di grounding di tutte le risposte (mantenendo lo stesso ordine).

confidenceScores[] number

Facoltativo. Punteggio di confidenza dei riferimenti di supporto. Intervallo da 0 a 1. 1 indica la massima confidenza. Questo elenco deve avere le stesse dimensioni di groundingChunkIndices.

renderedParts[] integer

Solo output. Indici nel campo parts dei contenuti del candidato. Questi indici specificano quali parti sottoposte a rendering sono associate a questa fonte di supporto.

segment object (Segment)

Segmento dei contenuti a cui appartiene questo supporto.

Rappresentazione JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Segmento

Segmento dei contenuti.

Campi
partIndex integer

L'indice di un oggetto Part all'interno dell'oggetto Content principale.

startIndex integer

Indice iniziale nella parte specificata, misurato in byte. Offset dall'inizio della parte, incluso, a partire da zero.

endIndex integer

Indice finale nella parte specificata, misurato in byte. Offset dall'inizio della parte, esclusivo, a partire da zero.

text string

Il testo corrispondente al segmento della risposta.

Rappresentazione JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Metadati relativi al recupero nel flusso di grounding.

Campi
googleSearchDynamicRetrievalScore number

Facoltativo. Punteggio che indica la probabilità che le informazioni della Ricerca Google possano contribuire a rispondere al prompt. Il punteggio è compreso nell'intervallo [0, 1], dove 0 è il meno probabile e 1 è il più probabile. Questo punteggio viene compilato solo quando sono abilitati il grounding della Ricerca Google e il recupero dinamico. Verrà confrontato con la soglia per determinare se attivare la Ricerca Google.

Rappresentazione JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Risultato Logprobs

Campi
topCandidates[] object (TopCandidates)

Lunghezza = numero totale di passaggi di decodifica.

chosenCandidates[] object (Candidate)

Lunghezza = numero totale di passaggi di decodifica. I candidati scelti potrebbero essere presenti o meno in topCandidates.

logProbabilitySum number

Somma delle probabilità logaritmiche per tutti i token.

Rappresentazione JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

I candidati con le probabilità logaritmiche più alte a ogni passaggio di decodifica.

Campi
candidates[] object (Candidate)

Ordinate in base alla probabilità logaritmica in ordine decrescente.

Rappresentazione JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Candidato

Candidato per il token e il punteggio logprobs.

Campi
token string

Il valore stringa del token del candidato.

tokenId integer

Il valore dell'ID token del candidato.

logProbability number

La probabilità logaritmica del candidato.

Rappresentazione JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Metadati relativi allo strumento di recupero del contesto URL.

Campi
urlMetadata[] object (UrlMetadata)

Elenco del contesto URL.

Rappresentazione JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Contesto del recupero di un singolo URL.

Campi
retrievedUrl string

URL recuperato dallo strumento.

urlRetrievalStatus enum (UrlRetrievalStatus)

Stato del recupero dell'URL.

Rappresentazione JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Stato del recupero dell'URL.

Enum
URL_RETRIEVAL_STATUS_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
URL_RETRIEVAL_STATUS_SUCCESS Il recupero dell'URL è riuscito.
URL_RETRIEVAL_STATUS_ERROR Il recupero dell'URL non è riuscito a causa di un errore.
URL_RETRIEVAL_STATUS_PAYWALL Il recupero dell'URL non è riuscito perché i contenuti sono protetti da un paywall.
URL_RETRIEVAL_STATUS_UNSAFE Il recupero dell'URL non è riuscito perché i contenuti non sono sicuri.

CitationMetadata

Una raccolta di attribuzioni delle fonti per un contenuto.

Campi
citationSources[] object (CitationSource)

Citazioni delle fonti per una risposta specifica.

Rappresentazione JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Una citazione di una fonte per una parte di una risposta specifica.

Campi
startIndex integer

Facoltativo. Inizio del segmento della risposta attribuito a questa fonte.

L'indice indica l'inizio del segmento, misurato in byte.

endIndex integer

Facoltativo. Fine del segmento attribuito, escluso.

uri string

Facoltativo. URI attribuito come fonte per una parte del testo.

license string

Facoltativo. Licenza per il progetto GitHub attribuito come origine del segmento.

Le informazioni sulla licenza sono obbligatorie per le citazioni di codice.

Rappresentazione JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

La categoria di una classificazione.

Queste categorie coprono vari tipi di danni che gli sviluppatori potrebbero voler modificare.

Enum
HARM_CATEGORY_UNSPECIFIED La categoria non è specificata.
HARM_CATEGORY_DEROGATORY PaLM: commenti negativi o dannosi rivolti all'identità e/o agli attributi protetti.
HARM_CATEGORY_TOXICITY PaLM: contenuti maleducati, irrispettosi o profani.
HARM_CATEGORY_VIOLENCE PaLM: descrive scenari che rappresentano violenza contro un individuo o un gruppo oppure descrizioni generali di scene cruente.
HARM_CATEGORY_SEXUAL PaLM: contiene riferimenti ad atti sessuali o ad altri contenuti osceni.
HARM_CATEGORY_MEDICAL PaLM: promuove consigli medici non verificati.
HARM_CATEGORY_DANGEROUS PaLM: contenuti pericolosi che promuovono, favoriscono o incoraggiano azioni dannose.
HARM_CATEGORY_HARASSMENT Gemini - Contenuti molesti.
HARM_CATEGORY_HATE_SPEECH Gemini: incitamento all'odio e contenuti.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - Contenuti sessualmente espliciti.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - Contenuti pericolosi.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini: contenuti che possono essere utilizzati per danneggiare l'integrità civica. DEPRECATO: utilizza enableEnhancedCivicAnswers.

HARM_CATEGORY_JAILBREAK Gemini: prompt che tentano di bypassare o sovvertire le linee guida sulla sicurezza del modello (tentativi di jailbreak).

ModalityTokenCount

Rappresenta le informazioni sul conteggio dei token per una singola modalità.

Campi
modality enum (Modality)

La modalità associata a questo conteggio dei token.

tokenCount integer

Numero di token.

Rappresentazione JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Modalità

Modalità Parte del contenuto

Enum
MODALITY_UNSPECIFIED Modalità non specificata.
TEXT Testo normale.
IMAGE Immagine.
VIDEO Video.
AUDIO Audio.
DOCUMENT Documento, ad esempio PDF.

SafetyRating

Valutazione di sicurezza per un contenuto.

La valutazione di sicurezza contiene la categoria di danno e il livello di probabilità di danno in quella categoria per un contenuto. I contenuti vengono classificati in base alla sicurezza in diverse categorie di danni e qui è inclusa la probabilità della classificazione del danno.

Campi
category enum (HarmCategory)

Obbligatorio. La categoria per questa classificazione.

probability enum (HarmProbability)

Obbligatorio. La probabilità di danni per questi contenuti.

blocked boolean

Questi contenuti sono stati bloccati a causa di questa classificazione?

Rappresentazione JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

La probabilità che un contenuto sia dannoso.

Il sistema di classificazione indica la probabilità che i contenuti non siano sicuri. Ciò non indica la gravità del danno per un determinato contenuto.

Enum
HARM_PROBABILITY_UNSPECIFIED La probabilità non è specificata.
NEGLIGIBLE I contenuti hanno una probabilità trascurabile di essere non sicuri.
LOW I contenuti hanno una bassa probabilità di essere non sicuri.
MEDIUM I contenuti hanno una probabilità media di essere non sicuri.
HIGH I contenuti hanno un'alta probabilità di non essere sicuri.

SafetySetting

Impostazione di sicurezza che influisce sul comportamento di blocco della sicurezza.

Se superi un'impostazione di sicurezza per una categoria, la probabilità consentita che i contenuti vengano bloccati cambia.

Campi
category enum (HarmCategory)

Obbligatorio. La categoria per questa impostazione.

threshold enum (HarmBlockThreshold)

Obbligatorio. Controlla la soglia di probabilità in corrispondenza della quale vengono bloccati i danni.

Rappresentazione JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Blocca i contenuti in corrispondenza e al di sopra di una probabilità di danno specificata.

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED La soglia non è specificata.
BLOCK_LOW_AND_ABOVE I contenuti con classificazione NEGLIGIBILE saranno consentiti.
BLOCK_MEDIUM_AND_ABOVE I contenuti con classificazione NEGLIGIBILE e BASSA saranno consentiti.
BLOCK_ONLY_HIGH I contenuti con classificazione NEGLIGIBILE, BASSO e MEDIO saranno consentiti.
BLOCK_NONE Tutti i contenuti saranno consentiti.
OFF Disattiva il filtro di sicurezza.

ServiceTier

Livello di servizio della richiesta.

Enum
unspecified Livello di servizio predefinito, ovvero Standard.
standard Livello di servizio Standard.
flex Livello di servizio Flex.
priority Livello di servizio prioritario.

Contenuti

Il tipo di dati strutturati di base contenente i contenuti in più parti di un messaggio.

Un Content include un campo role che indica il producer del Content e un campo parts contenente dati in più parti che includono il contenuto del turno del messaggio.

Campi
parts[] object (Part)

Parts ordinati che costituiscono un unico messaggio. Le parti possono avere tipi MIME diversi.

role string

Facoltativo. Il produttore dei contenuti. Deve essere "user" o "model".

Utile per le conversazioni a più turni, altrimenti può essere lasciato vuoto o non impostato.

Rappresentazione JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Parte

Un tipo di dati contenente contenuti multimediali che fanno parte di un messaggio Content in più parti.

Un Part è costituito da dati a cui è associato un tipo di dati. Un Part può contenere solo uno dei tipi accettati in Part.data.

Un Part deve avere un tipo MIME IANA fisso che identifichi il tipo e il sottotipo del media se il campo inlineData è compilato con byte non elaborati.

Campi
thought boolean

Facoltativo. Indica se la parte è stata pensata dal modello.

thoughtSignature string (bytes format)

Facoltativo. Una firma opaca per il pensiero, in modo che possa essere riutilizzato nelle richieste successive.

Una stringa con codifica in base64.

partMetadata object (Struct format)

Metadati personalizzati associati alla parte. Gli agenti che utilizzano genai.Part come rappresentazione dei contenuti potrebbero dover tenere traccia delle informazioni aggiuntive. Ad esempio, può essere il nome di un file/origine da cui ha origine la parte o un modo per multiplexare più flussi di parti.

mediaResolution object (MediaResolution)

Facoltativo. Risoluzione dei contenuti multimediali per i contenuti multimediali di input.

mediaProcessing enum (MediaProcessing)

Facoltativo. Come il modello elabora i contenuti multimediali di questa parte per la comprensione. Significativo solo per le parti video (inlineData o fileData con MIME video). Le parti non video ignorano questo campo.

data Union type
data può essere solo uno dei seguenti tipi:
text string

Testo in linea.

inlineData object (Blob)

Byte multimediali in linea.

functionCall object (FunctionCall)

Un FunctionCall previsto restituito dal modello che contiene una stringa che rappresenta FunctionDeclaration.name con gli argomenti e i relativi valori.

functionResponse object (FunctionResponse)

L'output del risultato di un FunctionCall che contiene una stringa che rappresenta FunctionDeclaration.name e un oggetto JSON strutturato contenente qualsiasi output della funzione viene utilizzato come contesto per il modello.

fileData object (FileData)

Dati basati sull'URI.

executableCode object (ExecutableCode)

Codice generato dal modello che deve essere eseguito.

codeExecutionResult object (CodeExecutionResult)

Risultato dell'esecuzione di ExecutableCode.

toolCall object (ToolCall)

Chiamata allo strumento lato server. Questo campo viene compilato quando il modello prevede una chiamata allo strumento che deve essere eseguita sul server. Il client deve restituire questo messaggio all'API.

toolResponse object (ToolResponse)

L'output di un'esecuzione ToolCall lato server. Questo campo viene compilato dal client con i risultati dell'esecuzione del ToolCall corrispondente.

metadata Union type
Controlla l'elaborazione preliminare aggiuntiva dei dati. metadata può essere solo uno dei seguenti tipi:
videoMetadata object (VideoMetadata)

Facoltativo. Metadati del video. I metadati devono essere specificati solo mentre i dati video vengono presentati in inlineData o fileData.

Rappresentazione JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  },
  "toolCall": {
    object (ToolCall)
  },
  "toolResponse": {
    object (ToolResponse)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

Blob

Byte multimediali non elaborati.

Il testo non deve essere inviato come byte non elaborati, utilizza il campo "text".

Campi
mimeType string

Il tipo MIME standard IANA dei dati di origine. Esempi di tipi supportati: - Immagini: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Audio: audio/*, video/audio/s16le, video/audio/wav - Video: video/* - Testo: text/plain, text/html, text/css, text/javascript, text/x-typescript, text/csv, text/markdown, text/x-python, text/xml, text/rtf, video/text/timestamp - Applicazioni: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Per ulteriori informazioni, consulta Formati di file supportati. //

data string (bytes format)

Byte non elaborati per i formati multimediali.

Una stringa con codifica in base64.

Rappresentazione JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

Un FunctionCall previsto restituito dal modello che contiene una stringa che rappresenta FunctionDeclaration.name con gli argomenti e i relativi valori.

Campi
id string

Facoltativo. Identificatore univoco della chiamata di funzione. Se compilato, il client deve eseguire functionCall e restituire la risposta con id corrispondente.

name string

Obbligatorio. Il nome della funzione da chiamare. Deve essere a-z, A-Z, 0-9 o contenere trattini bassi e trattini, con una lunghezza massima di 128 caratteri.

args object (Struct format)

Facoltativo. I parametri e i valori della funzione in formato oggetto JSON.

Rappresentazione JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

L'output del risultato di un FunctionCall che contiene una stringa che rappresenta FunctionDeclaration.name e un oggetto JSON strutturato contenente qualsiasi output della funzione viene utilizzato come contesto per il modello. Deve contenere il risultato di un FunctionCall creato in base alla previsione del modello.

Campi
id string

Facoltativo. L'identificatore della chiamata di funzione a cui si riferisce questa risposta. Compilato dal client in modo che corrisponda alla chiamata di funzione id.

name string

Obbligatorio. Il nome della funzione da chiamare. Deve essere a-z, A-Z, 0-9 o contenere trattini bassi e trattini, con una lunghezza massima di 128 caratteri.

response object (Struct format)

Obbligatorio. La risposta della funzione in formato oggetto JSON. I chiamanti possono utilizzare qualsiasi chiave a loro scelta che si adatti alla sintassi della funzione per restituire l'output della funzione, ad es. "output", "result" e così via. In particolare, se la chiamata di funzione non è stata eseguita, la risposta può avere una chiave "error" per restituire i dettagli dell'errore al modello.

I contenuti multimediali possono essere inclusi utilizzando un sotto-oggetto contenente una singola chiave "$ref" il cui valore è l'inlineData.display_name di un FunctionResponsePart contenente i contenuti multimediali. Consulta https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Facoltativo. Parts ordinati che costituiscono una risposta di funzione. Le parti possono avere tipi MIME IANA diversi.

willContinue boolean

Facoltativo. Indicatori che la chiamata di funzione continua e che verranno restituite altre risposte, trasformando la chiamata di funzione in un generatore. Si applica solo alle chiamate di funzione NON_BLOCKING, altrimenti viene ignorato. Se viene impostato su false, le risposte future non verranno prese in considerazione. È consentito restituire response vuoto con willContinue=False per segnalare che la chiamata di funzione è terminata. Ciò potrebbe comunque attivare la generazione del modello. Per evitare di attivare la generazione e completare la chiamata di funzione, imposta anche scheduling su SILENT.

scheduling enum (Scheduling)

Facoltativo. Specifica come deve essere pianificata la risposta nella conversazione. Applicabile solo alle chiamate di funzioni NON_BLOCKING, altrimenti viene ignorato. Il valore predefinito è WHEN_IDLE.

Rappresentazione JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

Un tipo di dati contenente contenuti multimediali che fanno parte di un messaggio FunctionResponse.

Un FunctionResponsePart è costituito da dati a cui è associato un tipo di dati. Un FunctionResponsePart può contenere solo uno dei tipi accettati in FunctionResponsePart.data.

Un FunctionResponsePart deve avere un tipo MIME IANA fisso che identifichi il tipo e il sottotipo del media se il campo inlineData è compilato con byte non elaborati.

Campi
data Union type
I dati della parte di risposta della funzione. data può essere solo uno dei seguenti tipi:
inlineData object (FunctionResponseBlob)

Byte multimediali in linea.

Rappresentazione JSON
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

Byte multimediali non elaborati per la risposta di funzione.

Il testo non deve essere inviato come byte non elaborati, utilizza il campo "FunctionResponse.response".

Campi
mimeType string

Il tipo MIME standard IANA dei dati di origine. Esempi: - image/png - image/jpeg Se viene fornito un tipo MIME non supportato, verrà restituito un errore. Per un elenco completo dei tipi supportati, consulta Formati di file supportati.

data string (bytes format)

Byte non elaborati per i formati multimediali.

Una stringa con codifica in base64.

Rappresentazione JSON
{
  "mimeType": string,
  "data": string
}

Programmazione

Specifica come deve essere pianificata la risposta nella conversazione.

Enum
SCHEDULING_UNSPECIFIED Questo valore non viene utilizzato.
SILENT Aggiungi il risultato solo al contesto della conversazione, non interrompere o attivare la generazione.
WHEN_IDLE Aggiungi il risultato al contesto della conversazione e chiedi di generare l'output senza interrompere la generazione in corso.
INTERRUPT Aggiungi il risultato al contesto della conversazione, interrompi la generazione in corso e chiedi di generare l'output.

FileData

Dati basati sull'URI.

Campi
mimeType string

Facoltativo. Il tipo MIME standard IANA dei dati di origine.

fileUri string

Obbligatorio. URI.

Rappresentazione JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Codice generato dal modello che deve essere eseguito e il risultato restituito al modello.

Generato solo quando si utilizza lo strumento CodeExecution, in cui il codice verrà eseguito automaticamente e verrà generato anche un CodeExecutionResult corrispondente.

Campi
id string

Facoltativo. Identificatore univoco della parte ExecutableCode. Il server restituisce CodeExecutionResult con id corrispondente.

language enum (Language)

Obbligatorio. Linguaggio di programmazione di code.

code string

Obbligatorio. Il codice da eseguire.

Rappresentazione JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

Lingua

Linguaggi di programmazione supportati per il codice generato.

Enum
LANGUAGE_UNSPECIFIED Lingua non specificata. Questo valore non deve essere utilizzato.
PYTHON Python >= 3.10, con numpy e simpy disponibili. Python è la lingua predefinita.

CodeExecutionResult

Risultato dell'esecuzione di ExecutableCode.

Generato solo quando viene utilizzato lo strumento CodeExecution.

Campi
id string

Facoltativo. L'identificatore della parte ExecutableCode a cui si riferisce questo risultato. Viene compilato solo se il ExecutableCode corrispondente ha un ID.

outcome enum (Outcome)

Obbligatorio. Risultato dell'esecuzione del codice.

output string

Facoltativo. Contiene stdout quando l'esecuzione del codice va a buon fine, stderr o un'altra descrizione in caso contrario.

Rappresentazione JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

Risultato

Enumerazione dei possibili risultati dell'esecuzione del codice.

Enum
OUTCOME_UNSPECIFIED Stato non specificato. Questo valore non deve essere utilizzato.
OUTCOME_OK Esecuzione del codice completata correttamente. output contiene stdout, se presente.
OUTCOME_FAILED Esecuzione del codice non riuscita. output contiene stderr e stdout, se presenti.
OUTCOME_DEADLINE_EXCEEDED L'esecuzione del codice è durata troppo a lungo ed è stata annullata. Potrebbe essere presente o meno una output parziale.

ToolCall

Un ToolCall lato server previsto restituito dal modello. Questo messaggio contiene informazioni su uno strumento che il modello vuole richiamare. Il client NON deve eseguire questo ToolCall. Il client deve invece passare questo ToolCall all'API in un turno successivo all'interno di un messaggio Content, insieme al ToolResponse corrispondente.

Campi
id string

Facoltativo. Identificatore univoco della chiamata allo strumento. Il server restituisce la risposta dello strumento con il id corrispondente.

toolName string

Facoltativo. Il nome dello strumento chiamato.

toolType enum (ToolType)

Obbligatorio. Il tipo di strumento chiamato.

args object (Struct format)

Facoltativo. Gli argomenti della chiamata allo strumento. Esempio: {"arg1" : "value1", "arg2" : "value2" , ...}

Rappresentazione JSON
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

Il tipo di strumento nella chiamata di funzione.

Enum
TOOL_TYPE_UNSPECIFIED Tipo di strumento non specificato.
GOOGLE_SEARCH_WEB Strumento di ricerca Google, mappato a Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Strumento di ricerca immagini, mappato a Tool.google_search.search_types.image_search.
URL_CONTEXT Strumento Contesto URL, mappato a Tool.url_context.
GOOGLE_MAPS Strumento Google Maps, mappato a Tool.google_maps.

ToolResponse

L'output di un'esecuzione ToolCall lato server. Questo messaggio contiene i risultati di una chiamata allo strumento avviata da un ToolCall del modello. Il client deve passare questo ToolResponse all'API in un turno successivo all'interno di un messaggio Content, insieme al ToolCall corrispondente.

Campi
id string

Facoltativo. L'identificatore della chiamata allo strumento a cui si riferisce questa risposta.

toolType enum (ToolType)

Obbligatorio. Il tipo di strumento chiamato, corrispondente a toolType nel ToolCall corrispondente.

response object (Struct format)

Facoltativo. La risposta dello strumento.

Rappresentazione JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

Deprecato: utilizza GenerateContentRequest.processing_options. I metadati descrivono i contenuti video di input.

Campi
startOffset string (Duration format)

Facoltativo. L'offset iniziale del video.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

endOffset string (Duration format)

Facoltativo. L'offset finale del video.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

fps number

Facoltativo. La frequenza fotogrammi del video inviato al modello. Se non è specificato, il valore predefinito è 1.0. L'intervallo di fps è (0.0, 24.0].

Rappresentazione JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Risoluzione dei contenuti multimediali per la tokenizzazione.

Campi
value Union type
Il livello di risoluzione dei contenuti multimediali. value può essere solo uno dei seguenti tipi:
level enum (Level)

La qualità della tokenizzazione utilizzata per i contenuti multimediali specifici. per il supporto dell'API Gemini .

Rappresentazione JSON
{

  // value
  "level": enum (Level)
  // Union type
}

Livello

Il livello di risoluzione dei contenuti multimediali.

Enum
MEDIA_RESOLUTION_UNSPECIFIED La risoluzione dei contenuti multimediali non è stata impostata.
MEDIA_RESOLUTION_LOW La risoluzione dei contenuti multimediali è impostata su bassa.
MEDIA_RESOLUTION_MEDIUM La risoluzione dei contenuti multimediali è impostata su media.
MEDIA_RESOLUTION_HIGH Risoluzione dei contenuti multimediali impostata su Alta.
MEDIA_RESOLUTION_ULTRA_HIGH La risoluzione dei contenuti multimediali è impostata su Ultra HD.

MediaProcessing

Come il modello elabora i contenuti multimediali di input per la comprensione.

Enum
MEDIA_PROCESSING_UNSPECIFIED Predefinita. Utilizza l'elaborazione specifica del modello (3.5 Pro+ -> AGENTIC, modelli precedenti -> STATIC).
STATIC Estrazione di frame a tariffa fissa. Tutti i frame inseriti nel contesto.
AGENTIC Navigazione dinamica basata su modelli. Consigliato per la maggior parte dei casi d'uso.

Ambiente

Un ambiente di esecuzione per un agente.

Campi
id string

Obbligatorio. Solo output. L'ID dell'ambiente.

sources[] object (Source)

Le origini da montare nell'ambiente.

created string

Solo output. L'ora in cui è stato creato l'ambiente nel formato ISO 8601 (AAAA-MM-GGThh:mm:ssZ).

updated string

Solo output. L'ora in cui l'ambiente è stato aggiornato l'ultima volta nel formato ISO 8601 (AAAA-MM-GGThh:mm:ssZ).

lastAccessed string

Solo output. L'ora in cui è stato eseguito l'ultimo accesso all'ambiente nel formato ISO 8601 (AAAA-MM-GGThh:mm:ssZ).

status enum (Status)

Solo output. Lo stato del container dell'ambiente.

fileCount string (int64 format)

Solo output. Il numero di file nell'ambiente, solo output.

sizeBytes string (int64 format)

Solo output. Le dimensioni totali dei file dell'ambiente in byte, solo output.

network Union type
Configurazione di rete per l'ambiente. network può essere solo uno dei seguenti tipi:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Consenti solo domini specifici.

networkMode enum (NetworkMode)

Modalità di traffico in uscita dalla rete.

Rappresentazione JSON
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

Stato

Stato dell'ambiente.

Enum
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Modalità di uscita dalla rete per le configurazioni non incluse nella lista consentita.

Enum
NETWORK_MODE_UNSPECIFIED Valore predefinito. Non utilizzata.
DISABLED Tutto il traffico di rete in uscita è bloccato.

Schema

L'oggetto Schema consente di definire i tipi di dati di input e output. Questi tipi possono essere oggetti, ma anche primitive e array. Rappresenta un sottoinsieme selezionato di un oggetto schema OpenAPI 3.0.

Campi
type enum (Type)

Obbligatorio. Tipo di dati.

format string

Facoltativo. Il formato dei dati. È consentito qualsiasi valore, ma la maggior parte non attiva funzionalità speciali.

title string

Facoltativo. Il titolo dello schema.

description string

Facoltativo. Una breve descrizione del parametro. Potrebbe contenere esempi di utilizzo. La descrizione del parametro può essere formattata come Markdown.

nullable boolean

Facoltativo. Indica se il valore può essere null.

enum[] string

Facoltativo. Valori possibili dell'elemento di Type.STRING con formato enum. Ad esempio, possiamo definire un'enumerazione Direction come : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Facoltativo. Numero massimo di elementi per Type.ARRAY.

minItems string (int64 format)

Facoltativo. Numero minimo di elementi per Type.ARRAY.

properties map (key: string, value: object (Schema))

Facoltativo. Proprietà di Type.OBJECT.

Un oggetto contenente un elenco di coppie "key": value. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Facoltativo. Proprietà obbligatorie di Type.OBJECT.

minProperties string (int64 format)

Facoltativo. Numero minimo di proprietà per Type.OBJECT.

maxProperties string (int64 format)

Facoltativo. Numero massimo di proprietà per Type.OBJECT.

minLength string (int64 format)

Facoltativo. CAMPI SCHEMA PER TIPO STRINGA Lunghezza minima di Type.STRING

maxLength string (int64 format)

Facoltativo. Lunghezza massima di Type.STRING

pattern string

Facoltativo. Pattern di Type.STRING per limitare una stringa a un'espressione regolare.

example value (Value format)

Facoltativo. Esempio dell'oggetto. Verrà compilato solo quando l'oggetto è la radice.

anyOf[] object (Schema)

Facoltativo. Il valore deve essere convalidato rispetto a uno o più sottoschema nell'elenco.

propertyOrdering[] string

Facoltativo. L'ordine delle proprietà. Non è un campo standard nella specifica OpenAPI. Viene utilizzato per determinare l'ordine delle proprietà nella risposta.

default value (Value format)

Facoltativo. Valore predefinito del campo. In base allo schema JSON, questo campo è destinato ai generatori di documentazione e non influisce sulla convalida. Pertanto, è incluso qui e ignorato in modo che gli sviluppatori che inviano schemi con un campo default non ricevano errori di campo sconosciuto.

items object (Schema)

Facoltativo. Schema degli elementi di Type.ARRAY.

minimum number

Facoltativo. CAMPI SCHEMA PER TIPO INTEGER e NUMBER Valore minimo di Type.INTEGER e Type.NUMBER

maximum number

Facoltativo. Valore massimo di Type.INTEGER e Type.NUMBER

Rappresentazione JSON
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

Tipo

Type contiene l'elenco dei tipi di dati OpenAPI definiti da https://spec.openapis.org/oas/v3.0.3#data-types

Enum
TYPE_UNSPECIFIED Non specificato, non deve essere utilizzato.
STRING Tipo di stringa.
NUMBER Tipo di numero.
INTEGER Tipo di numero intero.
BOOLEAN Tipo booleano.
ARRAY Tipo di array.
OBJECT Tipo di oggetto.
NULL Tipo null.

Strumento

Dettagli dello strumento che il modello può utilizzare per generare la risposta.

Un Tool è un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori delle conoscenze e dell'ambito del modello.

ID successivo: 17

Campi
functionDeclarations[] object (FunctionDeclaration)

Facoltativo. Un elenco di FunctionDeclarations disponibili per il modello che possono essere utilizzati per la chiamata di funzione.

Il modello o il sistema non esegue la funzione. La funzione definita può invece essere restituita come FunctionCall con argomenti al lato client per l'esecuzione. Il modello può decidere di chiamare un sottoinsieme di queste funzioni compilando FunctionCall nella risposta. Il turno di conversazione successivo potrebbe contenere un FunctionResponse con il contesto di generazione della "funzione" Content.role per il turno successivo del modello.

googleSearchRetrieval object (GoogleSearchRetrieval)

Facoltativo. Strumento di recupero basato sulla Ricerca Google.

codeExecution object (CodeExecution)

Facoltativo. Consente al modello di eseguire il codice durante la generazione.

computerUse object (ComputerUse)

Facoltativo. Strumento per supportare l'interazione del modello direttamente con il computer. Se attivata, compila automaticamente le dichiarazioni di funzione specifiche per l'utilizzo del computer.

urlContext object (UrlContext)

Facoltativo. Strumento per supportare il recupero del contesto URL.

mcpServers[] object (McpServer)

Facoltativo. Server MCP a cui connettersi.

googleMaps object (GoogleMaps)

Facoltativo. Strumento che consente di basare la risposta del modello su un contesto geospaziale correlato alla query dell'utente.

Rappresentazione JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

Rappresentazione strutturata di una dichiarazione di funzione come definita dalla specifica OpenAPI 3.03. In questa dichiarazione sono inclusi il nome e i parametri della funzione. Questa FunctionDeclaration è una rappresentazione di un blocco di codice che può essere utilizzato come Tool dal modello ed eseguito dal client.

Campi
name string

Obbligatorio. Il nome della funzione. Deve essere a-z, A-Z, 0-9 o contenere trattini bassi, due punti, punti e trattini, con una lunghezza massima di 128 caratteri.

description string

Obbligatorio. Una breve descrizione della funzione.

behavior enum (Behavior)

Facoltativo. Specifica il comportamento della funzione. Al momento è supportato solo dal metodo BidiGenerateContent.

parameters object (Schema)

Facoltativo. Descrive i parametri di questa funzione. Riflette la chiave stringa dell'oggetto parametro Open API 3.03: il nome del parametro. I nomi dei parametri sono sensibili alle maiuscole. Valore schema: lo schema che definisce il tipo utilizzato per il parametro.

parametersJsonSchema value (Value format)

Facoltativo. Descrive i parametri della funzione nel formato dello schema JSON. Lo schema deve descrivere un oggetto in cui le proprietà sono i parametri della funzione. Ad esempio:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

Questo campo si esclude a vicenda con parameters.

response object (Schema)

Facoltativo. Descrive l'output di questa funzione in formato JSON Schema. Riflette l'oggetto risposta Open API 3.03. Lo schema definisce il tipo utilizzato per il valore di risposta della funzione.

responseJsonSchema value (Value format)

Facoltativo. Descrive l'output di questa funzione in formato JSON Schema. Il valore specificato dallo schema è il valore di risposta della funzione.

Questo campo si esclude a vicenda con response.

Rappresentazione JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Comportamento

Definisce il comportamento della funzione. Il valore predefinito è BLOCKING.

Enum
UNSPECIFIED Questo valore non viene utilizzato.
BLOCKING Se impostato, il sistema attenderà di ricevere la risposta della funzione prima di continuare la conversazione.
NON_BLOCKING Se impostato, il sistema non attenderà la ricezione della risposta della funzione. Tenterà invece di gestire le risposte delle funzioni non appena saranno disponibili, mantenendo la conversazione tra l'utente e il modello.

GoogleSearchRetrieval

Strumento per recuperare dati web pubblici per il grounding, basato su Google.

Campi
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Specifica la configurazione del recupero dinamico per l'origine specificata.

Rappresentazione JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Descrive le opzioni per personalizzare il recupero dinamico.

Campi
mode enum (Mode)

La modalità del predittore da utilizzare nel recupero dinamico.

dynamicThreshold number

La soglia da utilizzare nel recupero dinamico. Se non viene impostato, viene utilizzato un valore predefinito del sistema.

Rappresentazione JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Modalità

La modalità del predittore da utilizzare nel recupero dinamico.

Enum
MODE_UNSPECIFIED Attiva sempre il recupero.
MODE_DYNAMIC Esegui il recupero solo quando il sistema lo ritiene necessario.

CodeExecution

Questo tipo non contiene campi.

Strumento che esegue il codice generato dal modello e restituisce automaticamente il risultato al modello.

Vedi anche ExecutableCode e CodeExecutionResult, che vengono generati solo quando utilizzi questo strumento.

GoogleSearch

Tipo di strumento GoogleSearch. Strumento per supportare la Ricerca Google in Model. Con tecnologia Google.

Campi
timeRangeFilter object (Interval)

Facoltativo. Filtrare i risultati di ricerca in base a un intervallo di tempo specifico. Se i clienti impostano un'ora di inizio, devono impostare anche un'ora di fine (e viceversa).

searchTypes object (SearchTypes)

Facoltativo. L'insieme di tipi di ricerca da attivare. Se non viene impostata, la ricerca nel web è attivata per impostazione predefinita.

Rappresentazione JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Intervallo

Rappresenta un intervallo di tempo, codificato come timestamp di inizio (incluso) e timestamp di fine (escluso).

L'inizio deve essere inferiore o uguale alla fine. Se l'inizio è uguale alla fine, l'intervallo è vuoto (non corrisponde a nessun orario). Se non vengono specificati né l'inizio né la fine, l'intervallo corrisponde a qualsiasi orario.

Campi
startTime string (Timestamp format)

Facoltativo. Inizio inclusivo dell'intervallo.

Se specificato, un timestamp corrispondente a questo intervallo dovrà essere uguale o successivo all'inizio.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Facoltativo. Fine esclusiva dell'intervallo.

Se specificato, un timestamp corrispondente a questo intervallo dovrà essere precedente alla fine.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

Rappresentazione JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Diversi tipi di ricerca che possono essere attivati nello strumento GoogleSearch.

Campi
Rappresentazione JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Questo tipo non contiene campi.

Ricerca web standard per il grounding e le configurazioni correlate.

ImageSearch

Questo tipo non contiene campi.

Ricerca immagini per il grounding e configurazioni correlate.

ComputerUse

Tipo di strumento di utilizzo del computer.

Campi
environment enum (Environment)

Obbligatorio. L'ambiente in cui viene eseguita l'operazione.

excludedPredefinedFunctions[] string

Facoltativo. Per impostazione predefinita, le funzioni predefinite sono incluse nella chiamata del modello finale. Alcuni possono essere esclusi esplicitamente dall'inclusione automatica. Questo può servire a due scopi: 1. Utilizzo di uno spazio di azioni più limitato / diverso. 2. Miglioramento delle definizioni / istruzioni delle funzioni predefinite.

enablePromptInjectionDetection boolean

Facoltativo. Se attivare il controllo del rilevamento di prompt injection nella richiesta di utilizzo del computer.

disabledSafetyPolicies[] enum (SafetyPolicy)

Facoltativo. Policy di sicurezza disattivate per l'utilizzo del computer.

Rappresentazione JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Ambiente

Rappresenta l'ambiente in cui viene eseguita l'operazione, ad esempio un browser web.

Enum
ENVIRONMENT_UNSPECIFIED Il valore predefinito è browser.
ENVIRONMENT_BROWSER Funziona in un browser web.
ENVIRONMENT_MOBILE Funziona in un ambiente mobile.
ENVIRONMENT_DESKTOP Funziona in un ambiente desktop.

SafetyPolicy

Norme di sicurezza predefinite per l'utilizzo del computer.

Enum
SAFETY_POLICY_UNSPECIFIED Norme di sicurezza non specificate.
FINANCIAL_TRANSACTIONS Norme di sicurezza per le transazioni finanziarie.
SENSITIVE_DATA_MODIFICATION Norme di sicurezza per la modifica dei dati sensibili.
COMMUNICATION_TOOL Norme di sicurezza per gli strumenti di comunicazione (ad es. Gmail, Chat, Meet).
ACCOUNT_CREATION Norme di sicurezza per la creazione di account.
DATA_MODIFICATION Norme di sicurezza per la modifica dei dati.
LEGAL_TERMS_AND_AGREEMENTS Norme di sicurezza per termini e accordi legali.

UrlContext

Questo tipo non contiene campi.

Strumento per supportare il recupero del contesto URL.

FileSearch

Lo strumento FileSearch che recupera le conoscenze dai corpus di Semantic Retrieval. I file vengono importati nei corpus di Semantic Retrieval utilizzando l'API ImportFile.

Campi
fileSearchStoreNames[] string

Obbligatorio. I nomi degli archivi fileSearchStores da recuperare. Esempio: fileSearchStores/my-file-search-store-123

metadataFilter string

Facoltativo. Filtro dei metadati da applicare ai documenti e ai chunk di recupero semantico.

topK integer

Facoltativo. Il numero di blocchi di recupero semantico da recuperare.

Rappresentazione JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

Un server MCP è un server che può essere chiamato dal modello per eseguire azioni. È un server che implementa il protocollo MCP. ID successivo: 6

Campi
name string

Il nome di MCPServer.

transport Union type
Il trasporto da utilizzare per connettersi a MCPServer. transport può essere solo uno dei seguenti tipi:
streamableHttpTransport object (StreamableHttpTransport)

Un trasporto in grado di trasmettere in streaming richieste e risposte HTTP.

Rappresentazione JSON
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

Un trasporto in grado di trasmettere in streaming richieste e risposte HTTP. ID successivo: 6

Campi
url string

L'URL completo dell'endpoint MCPServer. Esempio: "https://api.example.com/mcp"

headers map (key: string, value: string)

(Facoltativo) Campi per intestazioni di autenticazione, timeout e così via, se necessario.

Un oggetto contenente un elenco di coppie "key": value. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Timeout HTTP per le operazioni regolari.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

sseReadTimeout string (Duration format)

Timeout per le operazioni di lettura SSE.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

terminateOnClose boolean

Indica se chiudere la sessione client quando viene chiuso il trasporto.

Rappresentazione JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Lo strumento Google Maps che fornisce il contesto geospaziale per la query dell'utente.

Campi
enableWidget boolean

Facoltativo. Indica se restituire un token di contesto del widget in GroundingMetadata della risposta. Gli sviluppatori possono utilizzare il token di contesto del widget per eseguire il rendering di un widget di Google Maps con contesto geospaziale correlato ai luoghi a cui fa riferimento il modello nella risposta.

Rappresentazione JSON
{
  "enableWidget": boolean
}

Risorsa REST: auth_tokens

Risorsa: AuthToken

Una richiesta per creare un token di autenticazione effimero.

Campi
name string

Solo output. Identificatore. Il token stesso.

expireTime string (Timestamp format)

Facoltativo. Solo input. Immutabile. Un orario facoltativo dopo il quale, quando si utilizza il token risultante, i messaggi nelle sessioni BidiGenerateContent verranno rifiutati. Gemini potrebbe chiudere la sessione in anticipo dopo questo periodo di tempo.

Se non viene impostato, il valore predefinito è 30 minuti nel futuro. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Facoltativo. Solo input. Immutabile. Il periodo di tempo dopo il quale le nuove sessioni dell'API Live che utilizzano il token risultante da questa richiesta verranno rifiutate.

Se non viene impostato, il valore predefinito è 60 secondi. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Facoltativo. Solo input. Immutabile. Se fieldMask è vuoto e bidiGenerateContentSetup non è presente, il messaggio BidiGenerateContentSetup effettivo viene recuperato dalla connessione API Live.

Se fieldMask è vuoto e bidiGenerateContentSetup è presente, il messaggio BidiGenerateContentSetup effettivo viene preso interamente da bidiGenerateContentSetup in questa richiesta. Il messaggio di configurazione della connessione API Live viene ignorato.

Se fieldMask non è vuoto, i campi corrispondenti di bidiGenerateContentSetup sovrascriveranno i campi del messaggio di configurazione nella connessione API live.

Si tratta di un elenco separato da virgole di nomi completi dei campi. Esempio: "user.displayName,photo".

config Union type
La configurazione specifica del metodo per il token risultante. config può essere solo uno dei seguenti tipi:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Facoltativo. Solo input. Immutabile. Configurazione specifica per BidiGenerateContent.

uses integer

Facoltativo. Solo input. Immutabile. Il numero di volte in cui è possibile utilizzare il token. Se questo valore è zero, non viene applicato alcun limite. La ripresa di una sessione dell'API Live non viene conteggiata come utilizzo. Se non specificato, il valore predefinito è 1.

Rappresentazione JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

Messaggio da inviare nel primo (e solo nel primo) BidiGenerateContentClientMessage. Contiene la configurazione che verrà applicata per la durata della RPC di streaming.

I client devono attendere un messaggio BidiGenerateContentSetupComplete prima di inviare altri messaggi.

Campi
model string

Obbligatorio. Il nome della risorsa del modello. che funge da ID da utilizzare per il modello.

Formato: models/{model}

generationConfig object (GenerationConfig)

Facoltativo. Configurazione della generazione.

I seguenti campi non sono supportati:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

Facoltativo. L'utente ha fornito istruzioni di sistema per il modello.

Nota: nelle parti deve essere utilizzato solo testo e i contenuti di ogni parte saranno in un paragrafo separato.

tools[] object (Tool)

Facoltativo. Un elenco di Tools che il modello può utilizzare per generare la risposta successiva.

Un Tool è un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori delle conoscenze e dell'ambito del modello.

realtimeInputConfig object (RealtimeInputConfig)

Facoltativo. Configura la gestione dell'input in tempo reale.

sessionResumption object (SessionResumptionConfig)

Facoltativo. Configura il meccanismo di ripresa della sessione.

Se incluso, il server invierà SessionResumptionUpdate messaggi.

contextWindowCompression object (ContextWindowCompressionConfig)

Facoltativo. Configura un meccanismo di compressione della finestra contestuale.

Se incluso, il server ridurrà automaticamente le dimensioni del contesto quando superano la lunghezza configurata.

inputAudioTranscription object (AudioTranscriptionConfig)

Facoltativo. Se impostata, attiva la trascrizione dell'input vocale. La trascrizione è allineata alla lingua dell'audio di input, se configurata.

outputAudioTranscription object (AudioTranscriptionConfig)

Facoltativo. Se impostata, attiva la trascrizione dell'output audio del modello. La trascrizione è allineata al codice della lingua specificato per l'audio di output, se configurato.

historyConfig object (HistoryConfig)

Facoltativo. Configura lo scambio della cronologia tra il client e il server.

Rappresentazione JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  }
}

GenerationConfig

Opzioni di configurazione per la generazione e gli output del modello. Non tutti i parametri sono configurabili per ogni modello.

Campi
stopSequences[] string

Facoltativo. Il set di sequenze di caratteri (fino a 5) che interromperanno la generazione dell'output. Se specificato, l'API si interromperà alla prima occorrenza di un stop_sequence. La sequenza di interruzione non verrà inclusa nella risposta.

responseMimeType string

Facoltativo. Tipo MIME del testo candidato generato. I tipi MIME supportati sono: text/plain: (impostazione predefinita) output di testo. application/json: risposta JSON nei candidati alla risposta. text/x.enum: ENUM come risposta stringa nei candidati alla risposta. Consulta la documentazione per un elenco di tutti i tipi MIME di testo supportati.

responseSchema
(deprecated)
object (Schema)

Facoltativo. Schema di output del testo candidato generato. Gli schemi devono essere un sottoinsieme dello schema OpenAPI e possono essere oggetti, primitive o array.

Se impostato, deve essere impostato anche un responseMimeType compatibile. Tipi MIME compatibili: application/json: schema per la risposta JSON. Per ulteriori dettagli, consulta la guida alla generazione di testo JSON.

_responseJsonSchema
(deprecated)
value (Value format)

Facoltativo. Schema di output della risposta generata. Si tratta di un'alternativa a responseSchema che accetta lo schema JSON.

Se impostato, responseSchema deve essere omesso, ma responseMimeType è obbligatorio.

Sebbene possa essere inviato lo schema JSON completo, non tutte le funzionalità sono supportate. Nello specifico, sono supportate solo le seguenti proprietà:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (per stringhe e numeri)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (interpretato come anyOf)
  • properties
  • additionalProperties
  • required

Può essere impostata anche la proprietà non standard propertyOrdering.

I riferimenti ciclici vengono srotolati in misura limitata e, pertanto, possono essere utilizzati solo all'interno di proprietà non obbligatorie. (Le proprietà Nullable non sono sufficienti.) Se $ref è impostato su un sottoschema, non è possibile impostare altre proprietà, ad eccezione di quelle che iniziano con $.

responseJsonSchema value (Value format)

Facoltativo. Un dettaglio interno. Utilizza responseJsonSchema anziché questo campo.

responseModalities[] enum (Modality)

Facoltativo. Le modalità di risposta richieste. Rappresenta l'insieme di modalità che il modello può restituire e che devono essere previste nella risposta. Questa è una corrispondenza esatta con le modalità della risposta.

Un modello può avere più combinazioni di modalità supportate. Se le modalità richieste non corrispondono a nessuna delle combinazioni supportate, verrà restituito un errore.

Un elenco vuoto equivale a richiedere solo il testo.

candidateCount integer

Facoltativo. Numero di risposte generate da restituire. Se non viene impostato, il valore predefinito è 1. Tieni presente che questa operazione non funziona per i modelli di generazione precedente (famiglia Gemini 1.0).

maxOutputTokens integer

Facoltativo. Il numero massimo di token da includere in una risposta candidata.

Nota: il valore predefinito varia in base al modello. Consulta l'attributo Model.output_token_limit di Model restituito dalla funzione getModel.

temperature number

Facoltativo. Controlla la casualità dell'output.

Nota: il valore predefinito varia in base al modello. Consulta l'attributo Model.temperature di Model restituito dalla funzione getModel.

I valori possono variare da [0.0, 2.0].

topP number

Facoltativo. La probabilità cumulativa massima dei token da considerare durante il campionamento.

Il modello utilizza il campionamento combinato Top-k e Top-p (nucleo).

I token vengono ordinati in base alle probabilità assegnate, in modo che vengano presi in considerazione solo i token più probabili. Il campionamento top-k limita direttamente il numero massimo di token da considerare, mentre il campionamento Nucleus limita il numero di token in base alla probabilità cumulativa.

Nota: il valore predefinito varia in base a Model ed è specificato dall'attributo Model.top_p restituito dalla funzione getModel. Un attributo topK vuoto indica che il modello non applica il campionamento top-k e non consente di impostare topK nelle richieste.

topK integer

Facoltativo. Il numero massimo di token da considerare durante il campionamento.

I modelli Gemini utilizzano il campionamento Top-p (nucleo) o una combinazione di campionamento Top-k e del nucleo. Il campionamento Top-K considera l'insieme dei topK token più probabili. I modelli in esecuzione con il campionamento del nucleo non consentono l'impostazione di topK.

Nota: il valore predefinito varia in base a Model ed è specificato dall'attributo Model.top_p restituito dalla funzione getModel. Un attributo topK vuoto indica che il modello non applica il campionamento top-k e non consente di impostare topK nelle richieste.

seed integer

Facoltativo. Seed utilizzato nella decodifica. Se non viene impostato, la richiesta utilizza un seme generato in modo casuale.

presencePenalty number

Facoltativo. Penalità di presenza applicata alle probabilità logaritmiche del token successivo se il token è già stato visualizzato nella risposta.

Questa sanzione è binaria (on/off) e non dipende dal numero di volte in cui viene utilizzato il token (dopo la prima). Utilizza frequencyPenalty per una penalità che aumenta a ogni utilizzo.

Una penalità positiva scoraggerà l'uso di token già utilizzati nella risposta, aumentando il vocabolario.

Una penalità negativa incoraggerà l'uso di token già utilizzati nella risposta, riducendo il vocabolario.

frequencyPenalty number

Facoltativo. Penalità di frequenza applicata ai logprob del token successivo, moltiplicata per il numero di volte in cui ogni token è stato visualizzato finora nella risposta.

Una penalità positiva scoraggia l'uso di token già utilizzati, in proporzione al numero di volte in cui il token è stato utilizzato: più un token viene utilizzato, più è difficile per il modello riutilizzarlo, aumentando il vocabolario delle risposte.

Attenzione: una penalità negativa incoraggerà il modello a riutilizzare i token in proporzione al numero di volte in cui sono stati utilizzati. Valori negativi piccoli riducono il vocabolario di una risposta. Valori negativi più grandi faranno sì che il modello inizi a ripetere un token comune fino a raggiungere il limite di maxOutputTokens.

responseLogprobs boolean

Facoltativo. Se è true, esporta i risultati di logprobs nella risposta.

logprobs integer

Facoltativo. Valido solo se responseLogprobs=True. Imposta il numero di logprob principali, incluso il candidato scelto, da restituire a ogni passaggio di decodifica in Candidate.logprobs_result. Il numero deve essere compreso nell'intervallo [0, 20].

enableEnhancedCivicAnswers boolean

Facoltativo. Attiva le risposte civiche avanzate. Potrebbe non essere disponibile per tutti i modelli.

speechConfig object (SpeechConfig)

Facoltativo. La configurazione della generazione vocale.

thinkingConfig object (ThinkingConfig)

Facoltativo. Configurazione delle funzionalità di pensiero. Verrà restituito un errore se questo campo è impostato per i modelli che non supportano il pensiero.

imageConfig object (ImageConfig)

Facoltativo. Configurazione per la generazione di immagini. Verrà restituito un errore se questo campo è impostato per i modelli che non supportano queste opzioni di configurazione.

mediaResolution enum (MediaResolution)

Facoltativo. Se specificata, verrà utilizzata la risoluzione dei contenuti multimediali specificata.

enableAffectiveDialog boolean

Facoltativo. Se abilitata, il modello rileverà le emozioni e adatterà le sue risposte di conseguenza.

responseFormat object (ResponseFormatConfig)

Facoltativo. Configurazione per il formato di output della risposta. Consente di specificare la configurazione di output per modalità (testo, audio, immagine) in una struttura piatta.

translationConfig object (TranslationConfig)

Facoltativo. Configurazione per la traduzione.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Facoltativo. Configurazione per la trascrizione audio (riconoscimento vocale).

Rappresentazione JSON
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

Modalità

Modalità supportate della risposta.

Enum
MODALITY_UNSPECIFIED Valore predefinito.
TEXT Indica che il modello deve restituire testo.
IMAGE Indica che il modello deve restituire immagini.
AUDIO Indica che il modello deve restituire l'audio.

SpeechConfig

Configurazione per la generazione e la trascrizione della sintesi vocale.

Campi
voiceConfig object (VoiceConfig)

La configurazione in caso di output a una sola voce.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Facoltativo. La configurazione per la configurazione multi-speaker. Si esclude a vicenda con il campo voiceConfig.

languageCode string

Facoltativo. Il codice lingua BCP-47 IETF che l'utente ha configurato per l'utilizzo dell'app. Utilizzato per il riconoscimento vocale e la sintesi vocale.

I valori validi sono: de-DE, en-AU, en-GB, en-IN, en-US, es-US, fr-FR, hi-IN, pt-BR, ar-XA, es-ES, fr-CA, id-ID, it-IT, ja-JP, tr-TR, vi-VN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN, nl-NL, ko-KR, cmn-CN, pl-PL, ru-RU e th-TH.

Rappresentazione JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

La configurazione della voce da utilizzare.

Campi
voice_config Union type
La configurazione da utilizzare per lo speaker. voice_config può essere solo uno dei seguenti tipi:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

La configurazione della voce predefinita da utilizzare.

Rappresentazione JSON
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  }
  // Union type
}

PrebuiltVoiceConfig

La configurazione da utilizzare per lo speaker predefinito.

Campi
voiceName string

Il nome della voce preimpostata da utilizzare.

Rappresentazione JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

La configurazione per la configurazione multi-speaker.

Campi
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Obbligatorio. Tutte le voci del relatore attivate.

Rappresentazione JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

La configurazione per un singolo speaker in una configurazione multi-speaker.

Campi
speaker string

Obbligatorio. Il nome dell'oratore da utilizzare. Deve essere uguale a quello del prompt.

voiceConfig object (VoiceConfig)

Obbligatorio. La configurazione della voce da utilizzare.

Rappresentazione JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Configurazione delle funzionalità di pensiero.

Campi
includeThoughts boolean

Indica se includere i pensieri nella risposta. Se true, i pensieri vengono restituiti solo quando sono disponibili.

thinkingBudget integer

Il numero di token di pensiero che il modello deve generare.

thinkingLevel enum (ThinkingLevel)

Facoltativo. Controlla la profondità massima del processo di ragionamento interno del modello prima che produca una risposta. Il valore predefinito dipende dal modello. Per maggiori dettagli, consulta la guida ai livelli di pensiero. Consigliato per Gemini 3 o modelli successivi. L'utilizzo con modelli precedenti genera un errore.

Rappresentazione JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Consenti all'utente di specificare quanto pensare utilizzando l'enumerazione anziché il budget intero.

Enum
THINKING_LEVEL_UNSPECIFIED Valore predefinito.
MINIMAL Poco o nessun pensiero.
LOW Livello di ragionamento basso.
MEDIUM Livello di ragionamento medio.
HIGH Livello di ragionamento elevato.

ImageConfig

Configurazione per le funzionalità di generazione di immagini.

Campi
aspectRatio string

Facoltativo. Le proporzioni dell'immagine da generare. Formati supportati: 1:1, 1:4, 4:1, 1:8, 8:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 o 21:9.

Se non specificato, il modello sceglierà un formato predefinito in base alle immagini di riferimento fornite.

imageSize string

Facoltativo. Specifica le dimensioni delle immagini generate. I valori supportati sono 512, 1K, 2K e 4K. Se non specificato, il modello utilizzerà il valore predefinito 1K.

Rappresentazione JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Risoluzione dei contenuti multimediali per i contenuti multimediali di input.

Enum
MEDIA_RESOLUTION_UNSPECIFIED La risoluzione dei contenuti multimediali non è stata impostata.
MEDIA_RESOLUTION_LOW Risoluzione dei contenuti multimediali impostata su bassa (64 token).
MEDIA_RESOLUTION_MEDIUM La risoluzione dei contenuti multimediali è impostata su media (256 token).
MEDIA_RESOLUTION_HIGH Risoluzione dei contenuti multimediali impostata su Alta (ricomposizione con zoom con 256 token).

ResponseFormatConfig

Configurazione per il formato di output della risposta. Si tratta di un oggetto semplice in cui ogni sottocampo facoltativo configura una modalità di output specifica.

Campi
text object (TextResponseFormat)

Facoltativo. Configurazione del formato di output del testo.

audio object (AudioResponseFormat)

Facoltativo. Configurazione del formato di uscita audio.

image object (ImageResponseFormat)

Facoltativo. Configurazione del formato di output dell'immagine.

Rappresentazione JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Configurazione del formato di output del testo.

Campi
mimeType enum (MimeType)

Facoltativo. Il tipo MIME dell'output di testo.

schema value (Value format)

Facoltativo. Lo schema JSON a cui deve essere conforme l'output. Applicabile solo quando mimeType è APPLICATION_JSON.

Rappresentazione JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Tipi MIME supportati per l'output di testo.

Enum
MIME_TYPE_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
APPLICATION_JSON Formato di output JSON.
TEXT_PLAIN Formato di output di testo non crittografato.

AudioResponseFormat

Configurazione per il formato di uscita audio.

Campi
mimeType enum (MimeType)

Facoltativo. Il tipo MIME dell'uscita audio.

delivery enum (Delivery)

Facoltativo. La modalità di invio per l'uscita audio.

sampleRate integer

Facoltativo. Frequenza di campionamento in Hz.

bitRate integer

Facoltativo. Velocità in bit in bit al secondo (bps). Applicabile solo per i formati compressi (MP3, Opus).

Rappresentazione JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

Tipi MIME supportati per l'uscita audio.

Enum
MIME_TYPE_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
AUDIO_MP3 Formato audio MP3.
AUDIO_OGG_OPUS Formato audio OGG Opus.
AUDIO_L16 Formato audio PCM non elaborato (L16).
AUDIO_WAV Formato audio WAV.
AUDIO_ALAW Formato audio A-law.
AUDIO_MULAW Formato audio Mu-law.

Invio

Modalità di invio per l'uscita audio.

Enum
DELIVERY_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
INLINE I dati audio vengono restituiti in linea nella risposta.
URI I dati audio vengono restituiti come URI.

ImageResponseFormat

Configurazione per il formato di output dell'immagine.

Campi
mimeType enum (MimeType)

Facoltativo. Il tipo MIME dell'output dell'immagine.

delivery enum (Delivery)

Facoltativo. La modalità di invio dell'output dell'immagine.

aspectRatio enum (AspectRatio)

Facoltativo. Le proporzioni dell'output dell'immagine.

imageSize enum (ImageSize)

Facoltativo. Le dimensioni dell'output dell'immagine.

Rappresentazione JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

Tipi MIME supportati per l'output delle immagini.

Enum
MIME_TYPE_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
IMAGE_JPEG Formato immagine JPEG.

Invio

Modalità di invio per l'output dell'immagine.

Enum
DELIVERY_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
INLINE I dati dell'immagine vengono restituiti in linea nella risposta.
URI I dati dell'immagine vengono restituiti come URI.

AspectRatio

Proporzioni supportate per l'output immagine.

Enum
ASPECT_RATIO_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
ASPECT_RATIO_ONE_BY_ONE Proporzioni 1:1.
ASPECT_RATIO_TWO_BY_THREE Proporzioni 2:3.
ASPECT_RATIO_THREE_BY_TWO Proporzioni 3:2.
ASPECT_RATIO_THREE_BY_FOUR Proporzioni 3:4.
ASPECT_RATIO_FOUR_BY_THREE Proporzioni 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Proporzioni 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Proporzioni 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Proporzioni 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Proporzioni 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Proporzioni 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Proporzioni 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Proporzioni 8:1.
ASPECT_RATIO_ONE_BY_FOUR Proporzioni 1:4.
ASPECT_RATIO_FOUR_BY_ONE Proporzioni 4:1.

ImageSize

Dimensioni delle immagini supportate per l'output delle immagini.

Enum
IMAGE_SIZE_UNSPECIFIED Valore predefinito. Questo valore non viene utilizzato.
IMAGE_SIZE_FIVE_TWELVE Dimensioni dell'immagine: 512 px.
IMAGE_SIZE_ONE_K Dimensioni dell'immagine 1K.
IMAGE_SIZE_TWO_K Dimensioni delle immagini 2K.
IMAGE_SIZE_FOUR_K Dimensioni delle immagini in 4K.

TranslationConfig

Configurazione delle funzionalità di traduzione.

Campi
targetLanguageCode string

Obbligatorio. La lingua di destinazione della traduzione. I valori supportati sono i codici lingua BCP-47 (ad es. "en", "es", "fr").

echoTargetLanguage boolean

Facoltativo. Se è true, il modello genererà l'audio quando viene pronunciata la lingua di destinazione, essenzialmente ripeterà l'input. Se il valore è false, non verrà prodotto audio per la lingua di destinazione.

Rappresentazione JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

La configurazione della trascrizione audio.

Campi
languageCodes[] string

Facoltativo. Codici lingua BCP-47 che forniscono suggerimenti sulle lingue presenti nell'audio. Se omesso o vuoto, il valore predefinito è il rilevamento automatico della lingua.

adaptationPhrases[]
(deprecated)
string

Facoltativo. Un elenco di frasi utilizzate per l'adattamento vocale, che influenza il modello ASR per migliorare il riconoscimento di questi termini specifici.

customVocabulary[] string

Facoltativo. Un elenco di frasi del vocabolario personalizzato per orientare il modello di riconoscimento vocale verso il riconoscimento di termini specifici (nomi di prodotti, nomi propri, tecnicismi).

wordTimestamp boolean

Facoltativo. Configura la generazione di timestamp a livello di parola.

diarization boolean

Facoltativo. Configura la diarizzazione degli interlocutori.

language_config Union type
Deprecato: utilizza invece language_codes di primo livello. language_config può essere solo uno dei seguenti tipi:
languageAuto
(deprecated)
object (LanguageAuto)

Facoltativo. Il modello rileverà automaticamente la lingua.

languageHints
(deprecated)
object (LanguageHints)

Facoltativo. Specifica una o più lingue nell'audio.

Rappresentazione JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

Questo tipo non contiene campi.

Indica che la lingua dell'audio deve essere rilevata automaticamente.

LanguageHints

Fornisce suggerimenti al modello sulle possibili lingue presenti nell'audio.

Campi
languageCodes[]
(deprecated)
string

Obbligatorio. Codici lingua BCP-47.

Rappresentazione JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

Configura il comportamento di input in tempo reale in BidiGenerateContent.

Campi
automaticActivityDetection object (AutomaticActivityDetection)

Facoltativo. Se non viene impostato, il rilevamento automatico dell'attività è abilitato per impostazione predefinita. Se il rilevamento vocale automatico è disattivato, il client deve inviare segnali di attività.

activityHandling enum (ActivityHandling)

Facoltativo. Definisce l'effetto dell'attività.

turnCoverage enum (TurnCoverage)

Facoltativo. Definisce quale input è incluso nel turno dell'utente.

Rappresentazione JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

Configura il rilevamento automatico dell'attività.

Campi
disabled boolean

Facoltativo. Se l'opzione è attiva (impostazione predefinita), l'input vocale e di testo rilevato viene conteggiato come attività. Se disattivato, il client deve inviare indicatori di attività.

startOfSpeechSensitivity enum (StartSensitivity)

Facoltativo. Determina la probabilità che il parlato venga rilevato.

prefixPaddingMs integer

Facoltativo. La durata richiesta del discorso rilevato prima dell'inizio del discorso. Più basso è questo valore, più sensibile è il rilevamento dell'inizio del discorso e più breve può essere il discorso riconosciuto. Tuttavia, questo aumenta anche la probabilità di falsi positivi.

endOfSpeechSensitivity enum (EndSensitivity)

Facoltativo. Determina la probabilità che il discorso rilevato sia terminato.

silenceDurationMs integer

Facoltativo. La durata richiesta del non parlato rilevato (ad es. silenzio) prima che venga eseguito il commit della fine del parlato. Maggiore è questo valore, più lunghi possono essere i silenzi nel discorso senza interrompere l'attività dell'utente, ma ciò aumenterà la latenza del modello.

Rappresentazione JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Determina come viene rilevato l'inizio del discorso.

Enum
START_SENSITIVITY_UNSPECIFIED Il valore predefinito è START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Il rilevamento automatico rileverà più spesso l'inizio del discorso.
START_SENSITIVITY_LOW Il rilevamento automatico rileverà l'inizio della conversazione meno spesso.

EndSensitivity

Determina come viene rilevata la fine della conversazione.

Enum
END_SENSITIVITY_UNSPECIFIED Il valore predefinito è END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Il rilevamento automatico termina più spesso il discorso.
END_SENSITIVITY_LOW Il rilevamento automatico termina il discorso meno spesso.

ActivityHandling

I diversi modi di gestire l'attività utente.

Enum
ACTIVITY_HANDLING_UNSPECIFIED Se non specificato, il comportamento predefinito è START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Se il valore è true, l'inizio dell'attività interromperà la risposta del modello (anche chiamata "interruzione"). La risposta attuale del modello verrà interrotta nel momento dell'interruzione. Questo è il comportamento predefinito.
NO_INTERRUPTION La risposta del modello non verrà interrotta.

TurnCoverage

Opzioni relative all'input incluso nel turno dell'utente.

Enum
TURN_COVERAGE_UNSPECIFIED Se non specificato, viene selezionato un comportamento predefinito in base al modello. Ad esempio, per Gemini 2.5, il valore predefinito è TURN_INCLUDES_ONLY_ACTIVITY, mentre per Gemini 3.1 e versioni successive è TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Include l'attività dall'ultimo turno, escludendo l'inattività (ad es. il silenzio nello stream audio).
TURN_INCLUDES_ALL_INPUT Include tutti gli input in tempo reale dall'ultimo turno, inclusa l'inattività (ad es. silenzio nello stream audio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Include l'attività audio e tutti i video dall'ultimo turno. Con il rilevamento automatico dell'attività, l'attività audio si riferisce alla voce ed esclude il silenzio.

SessionResumptionConfig

Configurazione della ripresa delle sessioni.

Questo messaggio è incluso nella configurazione della sessione come BidiGenerateContentSetup.session_resumption. Se configurato, il server invierà SessionResumptionUpdate messaggi.

Campi
handle string

L'handle di una sessione precedente. Se non è presente, viene creata una nuova sessione.

Gli handle di sessione provengono dai valori SessionResumptionUpdate.token delle connessioni precedenti.

Rappresentazione JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Attiva la compressione della finestra contestuale, un meccanismo per gestire la finestra contestuale del modello in modo che non superi una determinata lunghezza.

Campi
compression_mechanism Union type
Il meccanismo di compressione della finestra contestuale utilizzato. compression_mechanism può essere solo uno dei seguenti tipi:
slidingWindow object (SlidingWindow)

Un meccanismo di finestra scorrevole.

triggerTokens string (int64 format)

Il numero di token (prima di eseguire un turno) necessario per attivare una compressione della finestra contestuale.

Può essere utilizzato per bilanciare la qualità rispetto alla latenza, poiché finestre contestuali più brevi possono comportare risposte del modello più rapide. Tuttavia, qualsiasi operazione di compressione causerà un aumento temporaneo della latenza, pertanto non devono essere attivate di frequente.

Se non viene impostato, il valore predefinito è l'80% del limite della finestra contestuale del modello. Il 20% rimane disponibile per la successiva richiesta dell'utente/risposta del modello.

Rappresentazione JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

Il metodo SlidingWindow funziona eliminando i contenuti all'inizio della finestra contestuale. Il contesto risultante inizierà sempre all'inizio del turno del ruolo UTENTE. Le istruzioni di sistema e qualsiasi BidiGenerateContentSetup.prefix_turns rimarranno sempre all'inizio del risultato.

Campi
targetTokens string (int64 format)

Il numero di token di destinazione da conservare. Il valore predefinito è triggerTokens/2.

L'eliminazione di parti della finestra contestuale causa un aumento temporaneo della latenza, pertanto questo valore deve essere calibrato per evitare operazioni di compressione frequenti.

Rappresentazione JSON
{
  "targetTokens": string
}

HistoryConfig

Configurazione della cronologia.

Questo messaggio è incluso nella configurazione della sessione come BidiGenerateContentSetup.history_config. Configura lo scambio di messaggi della cronologia.

Campi
initialHistoryInClientContent boolean

Facoltativo. Se true, dopo l'invio di setupComplete, il server attenderà e inizialmente elaborerà clientContent messaggi finché turnComplete non sarà true. Questa cronologia iniziale non attiverà una chiamata del modello e potrebbe terminare con il ruolo MODEL. Dopo che turnComplete è true, il client può avviare la conversazione in tempo reale tramite realtimeInput.

Rappresentazione JSON
{
  "initialHistoryInClientContent": boolean
}

Metodo: auth_tokens.create

Crea un token che può essere utilizzato per limitare il comportamento di una sessione BidiGenerateContent.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

Corpo della richiesta

Il corpo della richiesta contiene un'istanza di AuthToken.

Campi
expireTime string (Timestamp format)

Facoltativo. Solo input. Immutabile. Un orario facoltativo dopo il quale, quando si utilizza il token risultante, i messaggi nelle sessioni BidiGenerateContent verranno rifiutati. Gemini potrebbe chiudere la sessione in anticipo dopo questo periodo di tempo.

Se non viene impostato, il valore predefinito è 30 minuti nel futuro. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Facoltativo. Solo input. Immutabile. Il periodo di tempo dopo il quale le nuove sessioni dell'API Live che utilizzano il token risultante da questa richiesta verranno rifiutate.

Se non viene impostato, il valore predefinito è 60 secondi. Se impostato, questo valore deve essere inferiore a 20 ore nel futuro.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Facoltativo. Solo input. Immutabile. Se fieldMask è vuoto e bidiGenerateContentSetup non è presente, il messaggio BidiGenerateContentSetup effettivo viene recuperato dalla connessione API Live.

Se fieldMask è vuoto e bidiGenerateContentSetup è presente, il messaggio BidiGenerateContentSetup effettivo viene preso interamente da bidiGenerateContentSetup in questa richiesta. Il messaggio di configurazione della connessione API Live viene ignorato.

Se fieldMask non è vuoto, i campi corrispondenti di bidiGenerateContentSetup sovrascriveranno i campi del messaggio di configurazione nella connessione API live.

Si tratta di un elenco separato da virgole di nomi completi dei campi. Esempio: "user.displayName,photo".

config Union type
La configurazione specifica del metodo per il token risultante. config può essere solo uno dei seguenti tipi:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Facoltativo. Solo input. Immutabile. Configurazione specifica per BidiGenerateContent.

uses integer

Facoltativo. Solo input. Immutabile. Il numero di volte in cui è possibile utilizzare il token. Se questo valore è zero, non viene applicato alcun limite. La ripresa di una sessione dell'API Live non viene conteggiata come utilizzo. Se non specificato, il valore predefinito è 1.

Corpo della risposta

In caso di esito positivo, il corpo della risposta contiene un'istanza di AuthToken appena creata.