Generating content

L'API Gemini permet de générer du contenu avec des images, de l'audio, du code, des outils et plus encore. Pour en savoir plus sur chacune de ces fonctionnalités, lisez la suite et consultez l'exemple de code axé sur les tâches ou les guides complets.

Méthode : models.generateContent

Génère une réponse du modèle à partir d'une entrée GenerateContentRequest. Pour en savoir plus sur l'utilisation, consultez le guide de génération de texte. Les capacités d'entrée diffèrent entre les modèles, y compris les modèles réglés. Pour en savoir plus, consultez le guide du modèle et le guide de réglage.

Point de terminaison

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

Paramètres de chemin d'accès

model string

Obligatoire. Nom du Model à utiliser pour générer la complétion.

Format : models/{model}. Il se présente sous la forme models/{model}.

Corps de la requête

Le corps de la requête contient des données présentant la structure suivante :

Champs
contents[] object (Content)

Obligatoire. Contenu de la conversation en cours avec le modèle.

Pour les requêtes à un seul tour, il s'agit d'une instance unique. Pour les requêtes multitours telles que chat, il s'agit d'un champ répété contenant l'historique de la conversation et la dernière requête.

tools[] object (Tool)

Facultatif. Liste de Tools que le Model peut utiliser pour générer la réponse suivante.

Un Tool est un morceau de code qui permet au système d'interagir avec des systèmes externes pour effectuer une action ou un ensemble d'actions en dehors du champ d'application et des connaissances du Model. Les Tool acceptés sont Function et codeExecution. Pour en savoir plus, consultez les guides Appel de fonction et Exécution de code.

toolConfig object (ToolConfig)

Facultatif. Configuration de l'outil pour tout Tool spécifié dans la requête. Pour obtenir un exemple d'utilisation, consultez le guide sur l'appel de fonction.

safetySettings[] object (SafetySetting)

Facultatif. Liste d'instances SafetySetting uniques permettant de bloquer le contenu non sécurisé.

Cette règle sera appliquée sur GenerateContentRequest.contents et GenerateContentResponse.candidates. Il ne doit pas y avoir plus d'un paramètre pour chaque type SafetyCategory. L'API bloquera tout contenu et toute réponse qui ne respectent pas les seuils définis par ces paramètres. Cette liste remplace les paramètres par défaut de chaque SafetyCategory spécifié dans safetySettings. Si aucun SafetySetting n'est fourni pour un SafetyCategory donné dans la liste, l'API utilise le paramètre de sécurité par défaut pour cette catégorie. Les catégories de préjudice HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY et HARM_CATEGORY_JAILBREAK sont acceptées. Pour en savoir plus sur les paramètres de sécurité disponibles, consultez le guide. Consultez également les Consignes de sécurité pour savoir comment intégrer des considérations de sécurité dans vos applications d'IA.

systemInstruction object (Content)

Facultatif. Instructions système définies par le développeur. Texte uniquement pour le moment.

generationConfig object (GenerationConfig)

Facultatif. Options de configuration pour la génération et les sorties de modèles.

cachedContent string

Facultatif. Nom du contenu mis en cache à utiliser comme contexte pour diffuser la prédiction. Format : cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Facultatif. Niveau de service de la requête.

store boolean

Facultatif. Configure le comportement de journalisation pour une requête donnée. S'il est défini, il prévaut sur la configuration de journalisation au niveau du projet.

Exemple de requête

Texte

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)

Shell

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());

Image

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)

Shell

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

Shell

# 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

Vidéo

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)

Shell

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

Shell

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

Shell

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)

Modèle réglé

Python

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

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

Shell

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());

Exécution de code

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());

Appel de fonction

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;
}

Shell


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

Configuration de la génération

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)

Shell

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());

Paramètres de sécurité

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.")
}

Shell

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());

Instruction système

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)

Shell

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());

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient une instance de GenerateContentResponse.

Méthode : models.streamGenerateContent

Génère une réponse en streaming du modèle à partir d'une entrée GenerateContentRequest.

Point de terminaison

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

Paramètres de chemin d'accès

model string

Obligatoire. Nom du Model à utiliser pour générer la complétion.

Format : models/{model}. Il se présente sous la forme models/{model}.

Corps de la requête

Le corps de la requête contient des données présentant la structure suivante :

Champs
contents[] object (Content)

Obligatoire. Contenu de la conversation en cours avec le modèle.

Pour les requêtes à un seul tour, il s'agit d'une instance unique. Pour les requêtes multitours telles que chat, il s'agit d'un champ répété contenant l'historique de la conversation et la dernière requête.

tools[] object (Tool)

Facultatif. Liste de Tools que le Model peut utiliser pour générer la réponse suivante.

Un Tool est un morceau de code qui permet au système d'interagir avec des systèmes externes pour effectuer une action ou un ensemble d'actions en dehors du champ d'application et des connaissances du Model. Les Tool acceptés sont Function et codeExecution. Pour en savoir plus, consultez les guides Appel de fonction et Exécution de code.

toolConfig object (ToolConfig)

Facultatif. Configuration de l'outil pour tout Tool spécifié dans la requête. Pour obtenir un exemple d'utilisation, consultez le guide sur l'appel de fonction.

safetySettings[] object (SafetySetting)

Facultatif. Liste d'instances SafetySetting uniques permettant de bloquer le contenu non sécurisé.

Cette règle sera appliquée sur GenerateContentRequest.contents et GenerateContentResponse.candidates. Il ne doit pas y avoir plus d'un paramètre pour chaque type SafetyCategory. L'API bloquera tout contenu et toute réponse qui ne respectent pas les seuils définis par ces paramètres. Cette liste remplace les paramètres par défaut de chaque SafetyCategory spécifié dans safetySettings. Si aucun SafetySetting n'est fourni pour un SafetyCategory donné dans la liste, l'API utilise le paramètre de sécurité par défaut pour cette catégorie. Les catégories de préjudice HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY et HARM_CATEGORY_JAILBREAK sont acceptées. Pour en savoir plus sur les paramètres de sécurité disponibles, consultez le guide. Consultez également les Consignes de sécurité pour savoir comment intégrer des considérations de sécurité dans vos applications d'IA.

systemInstruction object (Content)

Facultatif. Instructions système définies par le développeur. Texte uniquement pour le moment.

generationConfig object (GenerationConfig)

Facultatif. Options de configuration pour la génération et les sorties de modèles.

cachedContent string

Facultatif. Nom du contenu mis en cache à utiliser comme contexte pour diffuser la prédiction. Format : cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Facultatif. Niveau de service de la requête.

store boolean

Facultatif. Configure le comportement de journalisation pour une requête donnée. S'il est défini, il prévaut sur la configuration de journalisation au niveau du projet.

Exemple de requête

Texte

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

Shell

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();

Image

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

Shell

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

Shell

# 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

Vidéo

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

Shell

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

Shell

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

Shell

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"

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient un flux d'instances GenerateContentResponse.

GenerateContentResponse

Réponse du modèle prenant en charge plusieurs réponses candidates.

Les classifications de sécurité et le filtrage du contenu sont indiqués à la fois pour l'invite dans GenerateContentResponse.prompt_feedback et pour chaque candidat dans finishReason et dans safetyRatings. L'API : - renvoie tous les candidats demandés ou aucun d'entre eux ; - ne renvoie aucun candidat uniquement si le message d'invite est incorrect (vérifiez promptFeedback) ; - signale les commentaires sur chaque candidat dans finishReason et safetyRatings.

Champs
candidates[] object (Candidate)

Réponses candidates du modèle.

promptFeedback object (PromptFeedback)

Renvoie les commentaires de la requête liés aux filtres de contenu.

usageMetadata object (UsageMetadata)

Uniquement en sortie. Métadonnées sur l'utilisation des jetons des requêtes de génération.

modelVersion string

Uniquement en sortie. Version du modèle utilisée pour générer la réponse.

responseId string

Sortie uniquement. responseId permet d'identifier chaque réponse.

modelStatus object (ModelStatus)

Uniquement en sortie. État actuel de ce modèle.

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

PromptFeedback

Ensemble des métadonnées de commentaires que l'invite a spécifiées dans GenerateContentRequest.content.

Champs
blockReason enum (BlockReason)

Facultatif. Si cette valeur est définie, cela signifie que la requête a été bloquée et qu'aucun candidat n'a été renvoyé. Reformulez la requête.

safetyRatings[] object (SafetyRating)

Évaluations de la sécurité du prompt. Il ne peut y avoir qu'une seule classification par catégorie.

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

BlockReason

Indique la raison pour laquelle la requête a été bloquée.

Enums
BLOCK_REASON_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
SAFETY La requête a été bloquée pour des raisons de sécurité. Inspectez safetyRatings pour comprendre la catégorie de sécurité qui l'a bloqué.
OTHER La requête a été bloquée pour des raisons inconnues.
BLOCKLIST La requête a été bloquée en raison des termes inclus dans la liste de blocage de terminologie.
PROHIBITED_CONTENT La requête a été bloquée en raison de contenu interdit.
IMAGE_SAFETY Candidats bloqués en raison de contenus dangereux pour la génération d'images.

UsageMetadata

Métadonnées sur l'utilisation des jetons de la requête de génération.

Champs
promptTokenCount integer

Nombre de jetons dans la requête. Lorsque cachedContent est défini, il s'agit toujours de la taille totale effective de la requête, ce qui signifie qu'il inclut le nombre de jetons dans le contenu mis en cache.

cachedContentTokenCount integer

Nombre de jetons dans la partie mise en cache de la requête (le contenu mis en cache)

candidatesTokenCount integer

Nombre total de jetons pour tous les candidats de réponse générés.

toolUsePromptTokenCount integer

Uniquement en sortie. Nombre de jetons présents dans le ou les prompts d'utilisation d'outils.

thoughtsTokenCount integer

Uniquement en sortie. Nombre de jetons de pensées pour les modèles à raisonnement.

totalTokenCount integer

Nombre total de jetons pour la requête de génération (requête + réflexions + candidats de réponse).

promptTokensDetails[] object (ModalityTokenCount)

Uniquement en sortie. Liste des modalités traitées dans l'entrée de la requête.

cacheTokensDetails[] object (ModalityTokenCount)

Uniquement en sortie. Liste des modalités du contenu mis en cache dans l'entrée de la requête.

candidatesTokensDetails[] object (ModalityTokenCount)

Uniquement en sortie. Liste des modalités renvoyées dans la réponse.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Uniquement en sortie. Liste des modalités traitées pour les entrées de demande d'utilisation d'outils.

serviceTier enum (ServiceTier)

Uniquement en sortie. Niveau de service de la demande.

Représentation 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

État du modèle sous-jacent. Il permet d'indiquer l'état du modèle sous-jacent et l'heure de son arrêt, le cas échéant.

Champs
modelStage enum (ModelStage)

Étape du modèle sous-jacent.

retirementTime string (Timestamp format)

Heure à laquelle le modèle sera arrêté.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

message string

Message expliquant l'état du modèle.

Représentation JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Définit l'étape du modèle sous-jacent.

Enums
MODEL_STAGE_UNSPECIFIED Étape du modèle non spécifiée.
UNSTABLE_EXPERIMENTAL

Le modèle sous-jacent est soumis à de nombreux ajustements.

EXPERIMENTAL Les modèles de cette étape sont uniquement destinés à des fins expérimentales.
PREVIEW Les modèles de cette étape sont plus matures que les modèles expérimentaux.
STABLE Les modèles à ce stade sont considérés comme stables et prêts à être utilisés en production.
LEGACY Si le modèle se trouve à cette étape, cela signifie qu'il sera bientôt obsolète. Seuls les clients existants peuvent utiliser ce modèle.
DEPRECATED

Les modèles à ce stade sont obsolètes. Ces modèles ne peuvent pas être utilisés.

RETIRED Les modèles de cette étape sont abandonnés. Ces modèles ne peuvent pas être utilisés.

Candidat

Réponse candidate générée par le modèle.

Champs
content object (Content)

Uniquement en sortie. Contenu généré renvoyé par le modèle.

finishReason enum (FinishReason)

Facultatif. Uniquement en sortie. Raison pour laquelle le modèle a cessé de générer des jetons.

Si ce champ est vide, le modèle n'a pas cessé de générer des jetons.

safetyRatings[] object (SafetyRating)

Liste des évaluations de sécurité d'une réponse candidate.

Il ne peut y avoir qu'une seule classification par catégorie.

citationMetadata object (CitationMetadata)

Uniquement en sortie. Informations de citation pour le candidat généré par le modèle.

Ce champ peut être renseigné avec des informations sur la récitation pour tout texte inclus dans content. Il s'agit de passages "récités" à partir de contenus protégés par des droits d'auteur dans les données d'entraînement du LLM de base.

tokenCount integer

Uniquement en sortie. Nombre de jetons pour ce candidat.

groundingAttributions[] object (GroundingAttribution)

Uniquement en sortie. Informations sur l'attribution des sources ayant contribué à une réponse ancrée.

Ce champ est renseigné pour les appels GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Uniquement en sortie. Métadonnées d'ancrage pour le candidat.

Ce champ est renseigné pour les appels GenerateContent.

avgLogprobs number

Uniquement en sortie. Score de probabilité logarithmique moyen du candidat.

logprobsResult object (LogprobsResult)

Uniquement en sortie. Scores de log-vraisemblance pour les jetons de réponse et les principaux jetons

urlContextMetadata object (UrlContextMetadata)

Uniquement en sortie. Métadonnées associées à l'outil de récupération du contexte d'URL.

index integer

Uniquement en sortie. Index du candidat dans la liste des candidats de la réponse.

finishMessage string

Facultatif. Uniquement en sortie. Indique la raison pour laquelle le modèle a cessé de générer des jetons. Ce champ n'est renseigné que lorsque finishReason est défini.

Représentation 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

Définit la raison pour laquelle le modèle a cessé de générer des jetons.

Enums
FINISH_REASON_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
STOP Point d'arrêt naturel du modèle ou séquence d'arrêt fournie.
MAX_TOKENS Le nombre maximal de jetons spécifié dans la requête a été atteint.
SAFETY Le contenu de la réponse candidate a été signalé pour des raisons de sécurité.
RECITATION Le contenu de la réponse candidate a été signalé pour des raisons de récitation.
LANGUAGE Le contenu de la réponse candidate a été signalé, car il est rédigé dans une langue non acceptée.
OTHER Raison inconnue.
BLOCKLIST La génération de jetons a été arrêtée, car le contenu contient des termes interdits.
PROHIBITED_CONTENT La génération de jetons a été arrêtée, car elle est susceptible de contenir du contenu interdit.
SPII La génération de jetons a été arrêtée, car le contenu est susceptible de contenir des informations personnelles sensibles.
MALFORMED_FUNCTION_CALL L'appel de fonction généré par le modèle n'est pas valide.
IMAGE_SAFETY La génération de jetons a été arrêtée, car les images générées contiennent des cas de non-respect des consignes de sécurité.
IMAGE_PROHIBITED_CONTENT La génération d'images a été interrompue, car les images générées comportent d'autres contenus interdits.
IMAGE_OTHER La génération d'images a été interrompue en raison d'un autre problème divers.
NO_IMAGE Le modèle devait générer une image, mais ne l'a pas fait.
IMAGE_RECITATION La génération d'images a été arrêtée, car elle est susceptible de contenir une récitation.
UNEXPECTED_TOOL_CALL Le modèle a généré un appel d'outil, mais aucun outil n'était activé dans la requête.
TOO_MANY_TOOL_CALLS Le modèle a appelé trop d'outils consécutivement. Le système a donc arrêté l'exécution.
MISSING_THOUGHT_SIGNATURE Il manque au moins une signature de pensée dans la requête.
MALFORMED_RESPONSE Terminée en raison d'une réponse mal formée.
ESCALATION La demande a été filtrée par une règle d'escalade.

GroundingAttribution

Attribution pour une source ayant contribué à une réponse.

Champs
sourceId object (AttributionSourceId)

Uniquement en sortie. Identifiant de la source contribuant à cette attribution.

content object (Content)

Contenu source d'ancrage qui constitue cette attribution.

Représentation JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Identifiant de la source contribuant à cette attribution.

Champs
source Union type
source ne peut être qu'un des éléments suivants :
groundingPassage object (GroundingPassageId)

Identifiant d'un passage intégré.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Identifiant d'un Chunk récupéré via Semantic Retriever.

Représentation JSON
{

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

GroundingPassageId

Identifiant d'une partie dans un GroundingPassage.

Champs
passageId string

Uniquement en sortie. ID du passage correspondant à l'GroundingPassage.id de GenerateAnswerRequest.

partIndex integer

Uniquement en sortie. Index de la partie dans le GroundingPassage.content de GenerateAnswerRequest.

Représentation JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Identifiant d'un Chunk récupéré via Semantic Retriever spécifié dans GenerateAnswerRequest à l'aide de SemanticRetrieverConfig.

Champs
source string

Uniquement en sortie. Nom de la source correspondant à SemanticRetrieverConfig.source de la requête. Exemple : corpora/123 ou corpora/123/documents/abc

chunk string

Uniquement en sortie. Nom de l'Chunk contenant le texte attribué. Exemple : corpora/123/documents/abc/chunks/xyz

Représentation JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Métadonnées renvoyées au client lorsque l'ancrage est activé.

Champs
groundingChunks[] object (GroundingChunk)

Liste des références d'appui récupérées à partir de la source d'ancrage spécifiée. En cas de streaming, cela ne contient que les blocs d'ancrage qui n'ont pas été inclus dans les métadonnées d'ancrage des réponses précédentes.

groundingSupports[] object (GroundingSupport)

Liste des supports d'ancrage.

webSearchQueries[] string

Requêtes de recherche sur le Web pour la recherche sur le Web de suivi.

imageSearchQueries[] string

Requêtes de recherche d'images utilisées pour l'ancrage.

searchEntryPoint object (SearchEntryPoint)

Facultatif. Résultat de recherche Google pour les recherches sur le Web de suivi.

retrievalMetadata object (RetrievalMetadata)

Métadonnées liées à la récupération dans le flux d'ancrage.

googleMapsWidgetContextToken string

Facultatif. Nom de ressource du jeton de contexte du widget Google Maps pouvant être utilisé avec le widget PlacesContextElement pour afficher des données contextuelles. N'est renseigné que si l'ancrage avec Google Maps est activé.

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

SearchEntryPoint

Point d'entrée de la recherche Google.

Champs
renderedContent string

Facultatif. Extrait de contenu Web pouvant être intégré à une page Web ou à une WebView d'application.

sdkBlob string (bytes format)

Facultatif. JSON encodé en base64 représentant un tableau de tuples <terme de recherche, URL de recherche>.

Chaîne encodée en base64.

Représentation JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

Un GroundingChunk représente un segment de preuves à l'appui qui ancre la réponse du modèle. Il peut s'agir d'un extrait du Web, d'un contexte récupéré à partir d'un fichier ou d'informations provenant de Google Maps.

Champs
chunk_type Union type
Type de fragment. chunk_type ne peut être qu'un des éléments suivants :
web object (Web)

Bloc d'ancrage provenant du Web.

image object (Image)

Facultatif. Bloc d'ancrage issu de la recherche d'images.

retrievedContext object (RetrievedContext)

Facultatif. Bloc d'ancrage provenant du contexte récupéré par l'outil de recherche de fichiers.

maps object (Maps)

Facultatif. Extrait d'ancrage de Google Maps.

Représentation JSON
{

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

Web

Extrait provenant du Web.

Champs
uri string

Uniquement en sortie. Référence URI du bloc.

title string

Uniquement en sortie. Titre du fragment.

Représentation JSON
{
  "uri": string,
  "title": string
}

Image

Extrait de la recherche d'images.

Champs
sourceUri string

URI de la page Web pour l'attribution.

imageUri string

URL de l'asset image.

title string

Titre de la page Web dont provient l'image.

domain string

Domaine racine de la page Web dont provient l'image (par exemple, "example.com").

Représentation JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Extrait du contexte récupéré par l'outil de recherche de fichiers.

Champs
customMetadata[] object (CustomMetadata)

Facultatif. Métadonnées fournies par l'utilisateur sur le contexte récupéré.

uri string

Facultatif. Référence URI du document de récupération sémantique.

title string

Facultatif. Titre du document.

text string

Facultatif. Texte du fragment.

fileSearchStore string

Facultatif. Nom du FileSearchStore contenant le document. Exemple : fileSearchStores/123

pageNumber integer

Facultatif. Numéro de page du contexte récupéré, le cas échéant.

mediaId string

Facultatif. Nom de ressource du blob multimédia pour les résultats de recherche de fichiers multimodaux. Format : fileSearchStores/{file_search_store_id}/media/{blobId}

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

CustomMetadata

Métadonnées fournies par l'utilisateur concernant GroundingFact.

Champs
key string

Clé des métadonnées.

value Union type
Valeur des métadonnées. Il peut s'agir d'une chaîne, d'une liste de chaînes ou d'un nombre. value ne peut être qu'un des éléments suivants :
stringValue string

Facultatif. Valeur de chaîne des métadonnées.

stringListValue object (StringList)

Facultatif. Liste des valeurs de chaîne pour les métadonnées.

numericValue number

Facultatif. Valeur numérique des métadonnées. La plage attendue pour cette valeur dépend de la key spécifique utilisée.

Représentation JSON
{
  "key": string,

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

StringList

Liste de valeurs de chaîne.

Champs
values[] string

Valeurs de chaîne de la liste.

Représentation JSON
{
  "values": [
    string
  ]
}

Maps

Extrait d'ancrage provenant de Google Maps. Un bloc Maps correspond à un seul lieu.

Champs
uri string

Référence URI du lieu.

title string

Titre du lieu.

text string

Description textuelle de la réponse sur le lieu.

placeId string

ID du lieu, au format places/{placeId}. Un utilisateur peut utiliser cet ID pour rechercher ce lieu.

placeAnswerSources object (PlaceAnswerSources)

Sources qui fournissent des réponses sur les caractéristiques d'un lieu donné dans Google Maps.

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

PlaceAnswerSources

Ensemble de sources qui fournissent des réponses sur les caractéristiques d'un lieu donné dans Google Maps. Chaque message PlaceAnswerSources correspond à un lieu spécifique dans Google Maps. L'outil Google Maps utilisait ces sources pour répondre aux questions sur les caractéristiques du lieu (par exemple, "Le Bar Foo dispose-t-il d'une connexion Wi-Fi ?" ou "Le Foo Bar est-il accessible aux personnes à mobilité réduite ?"). Pour le moment, nous n'acceptons que les extraits d'avis comme sources.

Champs
reviewSnippets[] object (ReviewSnippet)

Extraits d'avis utilisés pour générer des réponses sur les caractéristiques d'un lieu donné dans Google Maps.

Représentation JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Encapsule un extrait d'avis d'utilisateur qui répond à une question sur les caractéristiques d'un lieu spécifique dans Google Maps.

Champs
reviewId string

ID de l'extrait d'avis.

googleMapsUri string

Lien correspondant à l'avis de l'utilisateur sur Google Maps.

title string

Titre de l'avis.

Représentation JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Support d'ancrage.

Champs
groundingChunkIndices[] integer

Facultatif. Liste d'index (dans "grounding_chunk" dans response.candidate.grounding_metadata) spécifiant les citations associées à l'affirmation. Par exemple, [1,3,4] signifie que grounding_chunk[1], grounding_chunk[3] et grounding_chunk[4] sont les contenus récupérés attribués à l'affirmation. Si la réponse est diffusée en streaming, les groundingChunkIndices font référence aux index de toutes les réponses. Il incombe au client d'accumuler les blocs d'ancrage de toutes les réponses (en conservant le même ordre).

confidenceScores[] number

Facultatif. Score de confiance des références d'assistance. Les valeurs vont de 0 à 1. 1 indique le plus haut degré de confiance. Cette liste doit avoir la même taille que groundingChunkIndices.

renderedParts[] integer

Uniquement en sortie. Indices dans le champ parts du contenu du candidat. Ces index spécifient les parties rendues associées à cette source d'assistance.

segment object (Segment)

Segment du contenu auquel appartient cette assistance.

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

Segment

Segment du contenu.

Champs
partIndex integer

Index d'un objet Part dans son objet Content parent.

startIndex integer

Index de début dans la partie donnée, mesuré en octets. Décalage par rapport au début de la partie (inclusif), en commençant par zéro.

endIndex integer

Index de fin de la partie donnée, mesuré en octets. Décalage par rapport au début de la partie, exclusif, en commençant à zéro.

text string

Texte correspondant au segment de la réponse.

Représentation JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Métadonnées liées à la récupération dans le flux d'ancrage.

Champs
googleSearchDynamicRetrievalScore number

Facultatif. Score indiquant la probabilité que les informations de la recherche Google puissent aider à répondre à la requête. Le score est compris dans la plage [0, 1], où 0 correspond à la probabilité la plus faible et 1 à la probabilité la plus élevée. Ce score n'est renseigné que lorsque l'ancrage dans la recherche Google et la récupération dynamique sont activés. Il sera comparé au seuil pour déterminer s'il faut déclencher la recherche Google.

Représentation JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Résultat Logprobs

Champs
topCandidates[] object (TopCandidates)

Longueur = nombre total d'étapes de décodage.

chosenCandidates[] object (Candidate)

Longueur = nombre total d'étapes de décodage. Les candidats choisis peuvent se trouver ou non dans topCandidates.

logProbabilitySum number

Somme des probabilités logarithmiques pour tous les jetons.

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

TopCandidates

Candidats avec les probabilités logarithmiques les plus élevées à chaque étape de décodage.

Champs
candidates[] object (Candidate)

Trié par probabilité logarithmique dans l'ordre décroissant.

Représentation JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Candidat

Candidat pour le jeton et le score logprobs.

Champs
token string

Valeur de la chaîne du jeton du candidat.

tokenId integer

Valeur de l'ID de jeton du candidat.

logProbability number

Probabilité logarithmique du candidat.

Représentation JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Métadonnées associées à l'outil de récupération du contexte d'URL.

Champs
urlMetadata[] object (UrlMetadata)

Liste du contexte d'URL.

Représentation JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Contexte de la récupération d'une seule URL.

Champs
retrievedUrl string

URL récupérée par l'outil.

urlRetrievalStatus enum (UrlRetrievalStatus)

État de la récupération de l'URL.

Représentation JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

État de la récupération de l'URL.

Enums
URL_RETRIEVAL_STATUS_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
URL_RETRIEVAL_STATUS_SUCCESS La récupération de l'URL a réussi.
URL_RETRIEVAL_STATUS_ERROR Échec de la récupération de l'URL en raison d'une erreur.
URL_RETRIEVAL_STATUS_PAYWALL La récupération de l'URL a échoué, car le contenu se trouve derrière un paywall.
URL_RETRIEVAL_STATUS_UNSAFE La récupération de l'URL a échoué, car le contenu n'est pas sûr.

CitationMetadata

Ensemble d'attributions de sources pour un contenu.

Champs
citationSources[] object (CitationSource)

Citations de sources pour une réponse spécifique.

Représentation JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Citation d'une source pour une partie d'une réponse spécifique.

Champs
startIndex integer

Facultatif. Début du segment de la réponse attribué à cette source.

L'index indique le début du segment, mesuré en octets.

endIndex integer

Facultatif. Fin du segment attribué (exclusif).

uri string

Facultatif. URI attribué en tant que source pour une partie du texte.

license string

Facultatif. Licence du projet GitHub attribué en tant que source du segment.

Les informations sur la licence sont obligatoires pour les citations de code.

Représentation JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

Catégorie d'une note.

Ces catégories couvrent différents types de préjudices que les développeurs peuvent souhaiter ajuster.

Enums
HARM_CATEGORY_UNSPECIFIED La catégorie n'est pas spécifiée.
HARM_CATEGORY_DEROGATORY PaLM : commentaires négatifs ou offensants ciblant l'identité et/ou les attributs protégés.
HARM_CATEGORY_TOXICITY PaLM : contenu offensant, irrespectueux ou grossier.
HARM_CATEGORY_VIOLENCE PaLM : descriptions de scénarios représentant des actes de violence contre un individu ou un groupe, ou descriptions générales de contenus sanglants.
HARM_CATEGORY_SEXUAL PaLM : contient des références à des actes sexuels ou à d'autres contenus obscènes.
HARM_CATEGORY_MEDICAL PaLM : promeut des conseils médicaux non vérifiés.
HARM_CATEGORY_DANGEROUS PaLM : contenu dangereux qui promeut, facilite ou encourage des actes dangereux.
HARM_CATEGORY_HARASSMENT Gemini : contenu relevant du harcèlement.
HARM_CATEGORY_HATE_SPEECH Gemini : incitation à la haine et contenu haineux
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini : contenu à caractère sexuel explicite
HARM_CATEGORY_DANGEROUS_CONTENT Gemini : contenu dangereux.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini : contenu susceptible de nuire à l'intégrité civique. OBSOLÈTE : utilisez enableEnhancedCivicAnswers à la place.

HARM_CATEGORY_JAILBREAK Gemini : requêtes qui tentent de contourner ou de déjouer les consignes de sécurité du modèle (tentatives de jailbreaking).

ModalityTokenCount

Représente les informations de comptage des jetons pour une seule modalité.

Champs
modality enum (Modality)

Modalité associée à ce nombre de jetons.

tokenCount integer

Nombre de jetons.

Représentation JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Modalité

Modalité de la partie du contenu

Enums
MODALITY_UNSPECIFIED Modalité non spécifiée.
TEXT Texte brut.
IMAGE Image.
VIDEO Vidéo.
AUDIO Audio.
DOCUMENT Document, par exemple au format PDF.

SafetyRating

Classification de sécurité d'un contenu.

L'évaluation de sécurité contient la catégorie de préjudice et le niveau de probabilité de préjudice dans cette catégorie pour un contenu donné. Le contenu est classé en fonction de la sécurité dans plusieurs catégories de préjudices. La probabilité de la classification des préjudices est également indiquée.

Champs
category enum (HarmCategory)

Obligatoire. Catégorie de cette note.

probability enum (HarmProbability)

Obligatoire. Probabilité de préjudice pour ce contenu.

blocked boolean

Ce contenu a-t-il été bloqué en raison de cette classification ?

Représentation JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

Probabilité qu'un contenu soit dangereux.

Le système de classification indique la probabilité que le contenu soit non sécurisé. Cela n'indique pas la gravité du préjudice causé par un contenu.

Enums
HARM_PROBABILITY_UNSPECIFIED La probabilité n'est pas spécifiée.
NEGLIGIBLE Le contenu présente une probabilité négligeable d'être non sécurisé.
LOW Le contenu présente peu de risques d'être non sécurisé.
MEDIUM Le contenu présente une probabilité moyenne d'être non sécurisé.
HIGH Le contenu présente une probabilité élevée d'être non sécurisé.

SafetySetting

Paramètre de sécurité qui affecte le comportement de blocage de la sécurité.

Si vous transmettez un paramètre de sécurité pour une catégorie, la probabilité autorisée de blocage du contenu est modifiée.

Champs
category enum (HarmCategory)

Obligatoire. Catégorie de ce paramètre.

threshold enum (HarmBlockThreshold)

Obligatoire. Contrôle le seuil de probabilité à partir duquel les contenus nuisibles sont bloqués.

Représentation JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Bloquer à partir d'une probabilité de préjudice spécifiée.

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED Le seuil n'est pas spécifié.
BLOCK_LOW_AND_ABOVE Les contenus présentant un niveau de risque NÉGLIGEABLE seront autorisés.
BLOCK_MEDIUM_AND_ABOVE Les contenus présentant un risque NÉGLIGEABLE ou FAIBLE seront autorisés.
BLOCK_ONLY_HIGH Les contenus présentant un niveau de risque NÉGLIGEABLE, FAIBLE ou MOYEN seront autorisés.
BLOCK_NONE Tout le contenu sera autorisé.
OFF Désactivez le filtre de sécurité.

ServiceTier

Niveau de service de la demande.

Enums
unspecified Niveau de service par défaut (standard).
standard Niveau de service Standard.
flex Niveau de service Flex.
priority Niveau de service prioritaire.

Contenu

Type de données structurées de base comportant le contenu en plusieurs parties d'un message.

Un Content inclut un champ role désignant le producteur du Content et un champ parts contenant des données en plusieurs parties qui contiennent le contenu du tour de message.

Champs
parts[] object (Part)

Parts ordonnés qui constituent un seul message. Les parties peuvent avoir différents types MIME.

role string

Facultatif. Producteur du contenu. La valeur doit être "user" ou "model".

Il est utile de le définir pour les conversations multitours. Sinon, vous pouvez le laisser vide ou ne pas le définir.

Représentation JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Partie

Type de données comportant du contenu multimédia qui fait partie d'un message Content en plusieurs parties.

Un Part se compose de données auxquelles est associé un type de données. Un Part ne peut contenir qu'un seul des types acceptés dans Part.data.

Un Part doit avoir un type MIME IANA fixe identifiant le type et le sous-type du média si le champ inlineData est rempli avec des octets bruts.

Champs
thought boolean

Facultatif. Indique si la partie est issue du modèle.

thoughtSignature string (bytes format)

Facultatif. Signature opaque pour la pensée, afin qu'elle puisse être réutilisée dans les requêtes ultérieures.

Chaîne encodée en base64.

partMetadata object (Struct format)

Métadonnées personnalisées associées à la pièce. Les agents qui utilisent genai.Part comme représentation du contenu peuvent avoir besoin de suivre les informations supplémentaires. Par exemple, il peut s'agir du nom d'un fichier/d'une source à partir duquel/de laquelle la partie provient, ou d'un moyen de multiplexer plusieurs flux de parties.

mediaResolution object (MediaResolution)

Facultatif. Résolution du contenu multimédia d'entrée.

mediaProcessing enum (MediaProcessing)

Facultatif. Comment le modèle traite les éléments multimédias de cette partie pour les comprendre. N'a de sens que pour les parties vidéo (inlineData ou fileData avec le type MIME vidéo). Les parties non vidéo ignorent ce champ.

data Union type
data ne peut être qu'un des éléments suivants :
text string

Texte intégré.

inlineData object (Blob)

Octets de contenu multimédia intégrés.

functionCall object (FunctionCall)

FunctionCall prédit renvoyé par le modèle et qui contient une chaîne représentant le FunctionDeclaration.name avec les arguments et leurs valeurs.

functionResponse object (FunctionResponse)

Le résultat d'une FunctionCall contenant une chaîne représentant la FunctionDeclaration.name et un objet JSON structuré contenant tout résultat de la fonction est utilisé comme contexte pour le modèle.

fileData object (FileData)

Données basées sur l'URI.

executableCode object (ExecutableCode)

Code généré par le modèle et destiné à être exécuté.

codeExecutionResult object (CodeExecutionResult)

Résultat de l'exécution de ExecutableCode.

toolCall object (ToolCall)

Appel d'outil côté serveur. Ce champ est renseigné lorsque le modèle prédit un appel d'outil qui doit être exécuté sur le serveur. Le client doit renvoyer ce message à l'API.

toolResponse object (ToolResponse)

Sortie d'une exécution ToolCall côté serveur. Ce champ est renseigné par le client avec les résultats de l'exécution de l'ToolCall correspondant.

metadata Union type
Contrôle le prétraitement supplémentaire des données. metadata ne peut être qu'un des éléments suivants :
videoMetadata object (VideoMetadata)

Facultatif. Métadonnées de vidéo. Vous ne devez spécifier les métadonnées que lorsque les données vidéo sont présentées dans inlineData ou fileData.

Représentation 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

Octets bruts du contenu multimédia.

Le texte ne doit pas être envoyé sous forme d'octets bruts. Utilisez le champ "text".

Champs
mimeType string

Type MIME standard IANA des données sources. Exemples de types acceptés : - Images : image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Audio : audio/*, video/audio/s16le, video/audio/wav - Vidéo : video/* - Texte : 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 - Applications : application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Pour plus d'informations, consultez Formats de fichiers acceptés. //

data string (bytes format)

Octets bruts pour les formats multimédias.

Chaîne encodée en base64.

Représentation JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

FunctionCall prédit renvoyé par le modèle et qui contient une chaîne représentant le FunctionDeclaration.name avec les arguments et leurs valeurs.

Champs
id string

Facultatif. Identifiant unique de l'appel de fonction. Si ce champ est renseigné, le client doit exécuter le functionCall et renvoyer la réponse avec le id correspondant.

name string

Obligatoire. Nom de la fonction à appeler. Il doit être composé de a-z, A-Z, 0-9, ou contenir des traits de soulignement et des tirets, avec une longueur maximale de 128.

args object (Struct format)

Facultatif. Paramètres et valeurs de la fonction au format d'objet JSON.

Représentation JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Le résultat d'une FunctionCall contenant une chaîne représentant la FunctionDeclaration.name et un objet JSON structuré contenant tout résultat de la fonction est utilisé comme contexte pour le modèle. Doit contenir le résultat d'une opération FunctionCall effectuée en fonction de la prédiction du modèle.

Champs
id string

Facultatif. Identifiant de l'appel de fonction auquel cette réponse se rapporte. Renseigné par le client pour correspondre à l'appel de fonction id correspondant.

name string

Obligatoire. Nom de la fonction à appeler. Il doit être composé de a-z, A-Z, 0-9, ou contenir des traits de soulignement et des tirets, avec une longueur maximale de 128.

response object (Struct format)

Obligatoire. Réponse de la fonction au format d'objet JSON. Les appelants peuvent utiliser les clés de leur choix qui correspondent à la syntaxe de la fonction pour renvoyer le résultat de la fonction (par exemple, "output", "result", etc.). En particulier, si l'appel de fonction n'a pas pu être exécuté, la réponse peut comporter une clé "error" pour renvoyer les détails de l'erreur au modèle.

Pour inclure du contenu multimédia, utilisez un sous-objet contenant une seule clé "$ref" dont la valeur est le inlineData.display_name d'un FunctionResponsePart contenant le contenu multimédia. Consultez https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Facultatif. Parts ordonnés qui constituent une réponse de fonction. Les parties peuvent avoir différents types MIME IANA.

willContinue boolean

Facultatif. Signale que l'appel de fonction se poursuit et que d'autres réponses seront renvoyées, transformant l'appel de fonction en générateur. Ne s'applique qu'aux appels de fonction NON_BLOCKING. Dans le cas contraire, elle est ignorée. Si la valeur est définie sur "false", les réponses futures ne seront pas prises en compte. Il est autorisé de renvoyer un response vide avec willContinue=False pour signaler que l'appel de fonction est terminé. Cela peut toujours déclencher la génération de modèle. Pour éviter de déclencher la génération et terminer l'appel de fonction, définissez également scheduling sur SILENT.

scheduling enum (Scheduling)

Facultatif. Indique comment la réponse doit être planifiée dans la conversation. Applicable uniquement aux appels de fonction NON_BLOCKING, ignoré dans le cas contraire. La valeur par défaut est WHEN_IDLE.

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

FunctionResponsePart

Type de données comportant du contenu multimédia qui fait partie d'un message FunctionResponse.

Un FunctionResponsePart se compose de données auxquelles est associé un type de données. Un FunctionResponsePart ne peut contenir qu'un seul des types acceptés dans FunctionResponsePart.data.

Un FunctionResponsePart doit avoir un type MIME IANA fixe identifiant le type et le sous-type du média si le champ inlineData est rempli avec des octets bruts.

Champs
data Union type
Données de la partie réponse de la fonction. data ne peut être qu'un des éléments suivants :
inlineData object (FunctionResponseBlob)

Octets de contenu multimédia intégrés.

Représentation JSON
{

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

FunctionResponseBlob

Octets multimédias bruts pour la réponse de la fonction.

Le texte ne doit pas être envoyé sous forme d'octets bruts. Utilisez le champ "FunctionResponse.response".

Champs
mimeType string

Type MIME standard IANA des données sources. Exemples : - image/png - image/jpeg Si un type MIME non compatible est fourni, une erreur est renvoyée. Pour obtenir la liste complète des types acceptés, consultez Formats de fichiers acceptés.

data string (bytes format)

Octets bruts pour les formats multimédias.

Chaîne encodée en base64.

Représentation JSON
{
  "mimeType": string,
  "data": string
}

Planification

Indique comment la réponse doit être planifiée dans la conversation.

Enums
SCHEDULING_UNSPECIFIED Cette valeur n'est pas utilisée.
SILENT Ajoute uniquement le résultat au contexte de la conversation, sans interrompre ni déclencher la génération.
WHEN_IDLE Ajoutez le résultat au contexte de la conversation et invitez à générer une sortie sans interrompre la génération en cours.
INTERRUPT Ajoutez le résultat au contexte de la conversation, interrompez la génération en cours et invitez à générer une sortie.

FileData

Données basées sur l'URI.

Champs
mimeType string

Facultatif. Type MIME standard IANA des données sources.

fileUri string

Obligatoire. URI.

Représentation JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

Code généré par le modèle et destiné à être exécuté, ainsi que le résultat renvoyé au modèle.

Généré uniquement lorsque vous utilisez l'outil CodeExecution, dans lequel le code est exécuté automatiquement et un CodeExecutionResult correspondant est également généré.

Champs
id string

Facultatif. Identifiant unique de la partie ExecutableCode. Le serveur renvoie le CodeExecutionResult avec le id correspondant.

language enum (Language)

Obligatoire. Langage de programmation de code.

code string

Obligatoire. Code à exécuter.

Représentation JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

Langue

Langages de programmation compatibles pour le code généré.

Enums
LANGUAGE_UNSPECIFIED Langue non spécifiée. Cette valeur ne doit pas être utilisée.
PYTHON Python >= 3.10, avec numpy et simpy disponibles. Python est la langue par défaut.

CodeExecutionResult

Résultat de l'exécution de ExecutableCode.

Généré uniquement lorsque l'outil CodeExecution est utilisé.

Champs
id string

Facultatif. Identifiant de la partie ExecutableCode à laquelle ce résultat se rapporte. N'est renseigné que si le ExecutableCode correspondant possède un ID.

outcome enum (Outcome)

Obligatoire. Résultat de l'exécution de code.

output string

Facultatif. Contient stdout lorsque l'exécution de code est réussie, stderr ou une autre description dans le cas contraire.

Représentation JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

Résultat

Énumération des résultats possibles de l'exécution de code.

Enums
OUTCOME_UNSPECIFIED État non spécifié. Cette valeur ne doit pas être utilisée.
OUTCOME_OK L'exécution du code s'est terminée avec succès. output contient la sortie standard, le cas échéant.
OUTCOME_FAILED Échec de l'exécution de code. output contient stderr et stdout, le cas échéant.
OUTCOME_DEADLINE_EXCEEDED L'exécution du code a duré trop longtemps et a été annulée. Il peut y avoir ou non un output partiel.

ToolCall

ToolCall côté serveur prédit renvoyé par le modèle. Ce message contient des informations sur un outil que le modèle souhaite appeler. Le client n'est PAS censé exécuter ce ToolCall. Au lieu de cela, le client doit renvoyer ce ToolCall à l'API lors d'un tour suivant dans un message Content, avec le ToolResponse correspondant.

Champs
id string

Facultatif. Identifiant unique de l'appel d'outil. Le serveur renvoie la réponse de l'outil avec le id correspondant.

toolName string

Facultatif. Nom de l'outil appelé.

toolType enum (ToolType)

Obligatoire. Type d'outil appelé.

args object (Struct format)

Facultatif. Arguments de l'appel d'outil. Exemple : {"arg1" : "value1", "arg2" : "value2" , ...}

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

ToolType

Type d'outil dans l'appel de fonction.

Enums
TOOL_TYPE_UNSPECIFIED Type d'outil non spécifié.
GOOGLE_SEARCH_WEB Outil de recherche Google, qui correspond à Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Outil de recherche d'images, qui correspond à Tool.google_search.search_types.image_search.
URL_CONTEXT Outil de contexte d'URL, correspond à Tool.url_context.
GOOGLE_MAPS Outil Google Maps, mappé à Tool.google_maps.

ToolResponse

Sortie d'une exécution ToolCall côté serveur. Ce message contient les résultats d'un appel d'outil initié par un ToolCall du modèle. Le client doit renvoyer ce ToolResponse à l'API lors d'un tour suivant dans un message Content, avec le ToolCall correspondant.

Champs
id string

Facultatif. Identifiant de l'appel d'outil auquel cette réponse se rapporte.

toolType enum (ToolType)

Obligatoire. Type d'outil appelé, correspondant à toolType dans le ToolCall correspondant.

response object (Struct format)

Facultatif. Réponse de l'outil.

Représentation JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

Obsolète : utilisez plutôt GenerateContentRequest.processing_options. Les métadonnées décrivent le contenu vidéo d'entrée.

Champs
startOffset string (Duration format)

Facultatif. Décalage de début de la vidéo.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

endOffset string (Duration format)

Facultatif. Décalage de fin de la vidéo.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

fps number

Facultatif. Fréquence d'images de la vidéo envoyée au modèle. Si aucune valeur n'est spécifiée, la valeur par défaut est 1.0. La plage de fps est (0.0, 24.0].

Représentation JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Résolution du contenu multimédia pour la tokenisation.

Champs
value Union type
Niveau de résolution du contenu multimédia. value ne peut être qu'un des éléments suivants :
level enum (Level)

Qualité de la tokenisation utilisée pour un média donné. pour l'assistance concernant l'API Gemini .

Représentation JSON
{

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

Niveau

Niveau de résolution du contenu multimédia.

Enums
MEDIA_RESOLUTION_UNSPECIFIED La résolution du contenu multimédia n'a pas été définie.
MEDIA_RESOLUTION_LOW La résolution des contenus multimédias est définie sur "basse".
MEDIA_RESOLUTION_MEDIUM La résolution des contenus multimédias est définie sur "moyenne".
MEDIA_RESOLUTION_HIGH La résolution des contenus multimédias est définie sur "Élevée".
MEDIA_RESOLUTION_ULTRA_HIGH La résolution des contenus multimédias est définie sur "Ultra haute".

MediaProcessing

Comment le modèle traite les contenus multimédias pour les comprendre.

Enums
MEDIA_PROCESSING_UNSPECIFIED Par défaut. Utilise un traitement spécifique au modèle (3.5 Pro+ → AGENTIC, modèles plus anciens → STATIC).
STATIC Extraction d'images à fréquence fixe. Toutes les frames sont placées dans leur contexte.
AGENTIC Navigation dynamique basée sur un modèle. Recommandé pour la plupart des cas d'utilisation.

Environnement

Environnement d'exécution pour un agent.

Champs
id string

Obligatoire. Uniquement en sortie. ID de l'environnement.

sources[] object (Source)

Sources à monter dans l'environnement.

created string

Uniquement en sortie. Heure à laquelle l'environnement a été créé au format ISO 8601 (AAAA-MM-JJThh:mm:ssZ).

updated string

Uniquement en sortie. Heure à laquelle l'environnement a été mis à jour pour la dernière fois au format ISO 8601 (AAAA-MM-JJThh:mm:ssZ).

lastAccessed string

Uniquement en sortie. Heure à laquelle l'environnement a été consulté pour la dernière fois, au format ISO 8601 (AAAA-MM-JJThh:mm:ssZ).

status enum (Status)

Uniquement en sortie. État du conteneur d'environnement.

fileCount string (int64 format)

Uniquement en sortie. Nombre de fichiers dans l'environnement (sortie uniquement).

sizeBytes string (int64 format)

Uniquement en sortie. Taille totale des fichiers d'environnement en octets (sortie uniquement).

network Union type
Configuration réseau de l'environnement. network ne peut être qu'un des éléments suivants :
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Autorisez uniquement certains domaines.

networkMode enum (NetworkMode)

Mode de sortie réseau.

Représentation 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
}

État

État de l'environnement.

Enums
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Mode de sortie réseau pour les configurations sans liste d'autorisation.

Enums
NETWORK_MODE_UNSPECIFIED Valeur par défaut. Non utilisé.
DISABLED Toutes les sorties réseau sont bloquées.

Schéma

L'objet Schema permet de définir les types de données d'entrée et de sortie. Ces types peuvent être des objets, mais aussi des primitives et des tableaux. Représente un sous-ensemble spécifique d'un objet de schéma OpenAPI 3.0.

Champs
type enum (Type)

Obligatoire. Type de données.

format string

Facultatif. Format des données. Toute valeur est autorisée, mais la plupart ne déclenchent aucune fonctionnalité spéciale.

title string

Facultatif. Titre du schéma.

description string

Facultatif. Brève description du paramètre. Il peut contenir des exemples d'utilisation. La description du paramètre peut être mise en forme au format Markdown.

nullable boolean

Facultatif. Indique si la valeur peut être nulle.

enum[] string

Facultatif. Valeurs possibles de l'élément Type.STRING avec le format enum. Par exemple, il est possible de définir une direction d'énumération comme suit : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Facultatif. Nombre maximal d'éléments pour Type.ARRAY.

minItems string (int64 format)

Facultatif. Nombre minimal d'éléments pour Type.ARRAY.

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

Facultatif. Propriétés de Type.OBJECT.

Objet contenant une liste de paires "key": value. Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Facultatif. Propriétés requises de Type.OBJECT.

minProperties string (int64 format)

Facultatif. Nombre minimal de propriétés pour Type.OBJECT.

maxProperties string (int64 format)

Facultatif. Nombre maximal de propriétés pour Type.OBJECT.

minLength string (int64 format)

Facultatif. CHAMPS DE SCHÉMA POUR LE TYPE STRING Longueur minimale du type STRING

maxLength string (int64 format)

Facultatif. Longueur maximale de Type.STRING

pattern string

Facultatif. Modèle de Type.STRING permettant de limiter une chaîne à une expression régulière.

example value (Value format)

Facultatif. Exemple d'objet. Ne sera renseigné que si l'objet est la racine.

anyOf[] object (Schema)

Facultatif. La valeur doit être validée par rapport à l'un ou plusieurs des sous-schémas de la liste.

propertyOrdering[] string

Facultatif. Ordre des propriétés. Il ne s'agit pas d'un champ standard dans la spécification OpenAPI. Il est utilisé pour déterminer l'ordre des propriétés dans la réponse.

default value (Value format)

Facultatif. Valeur par défaut du champ. Conformément au schéma JSON, ce champ est destiné aux générateurs de documentation et n'affecte pas la validation. Il est donc inclus ici et ignoré afin que les développeurs qui envoient des schémas avec un champ default ne reçoivent pas d'erreurs de champ inconnu.

items object (Schema)

Facultatif. Schéma des éléments de Type.ARRAY.

minimum number

Facultatif. CHAMPS DE SCHÉMA POUR LES TYPES INTEGER ET NUMBER Valeur minimale des types INTEGER et NUMBER

maximum number

Facultatif. Valeur maximale de Type.INTEGER et Type.NUMBER

Représentation 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
}

Type

Le type contient la liste des types de données OpenAPI tels que définis par https://spec.openapis.org/oas/v3.0.3#data-types.

Enums
TYPE_UNSPECIFIED Non spécifié, ne doit pas être utilisé.
STRING Type de chaîne.
NUMBER Type de nombre.
INTEGER Type entier.
BOOLEAN Type booléen.
ARRAY Type de tableau.
OBJECT Type d'objet.
NULL Type Null.

Outil

Détails des outils que le modèle peut utiliser pour générer une réponse.

Tool est une portion de code qui permet au système d'interagir avec des systèmes externes pour effectuer une action ou un ensemble d'actions en dehors du champ d'application et des connaissances du modèle.

Identifiant suivant : 17

Champs
functionDeclarations[] object (FunctionDeclaration)

Facultatif. Liste des FunctionDeclarations disponibles pour le modèle et pouvant être utilisés pour l'appel de fonction.

Le modèle ou le système n'exécute pas la fonction. Au lieu de cela, la fonction définie peut être renvoyée en tant que FunctionCall avec des arguments côté client pour l'exécution. Le modèle peut décider d'appeler un sous-ensemble de ces fonctions en remplissant FunctionCall dans la réponse. Le prochain tour de conversation peut contenir un FunctionResponse avec le contexte de génération Content.role "function" pour le prochain tour du modèle.

googleSearchRetrieval object (GoogleSearchRetrieval)

Facultatif. Outil de récupération alimenté par la recherche Google.

codeExecution object (CodeExecution)

Facultatif. Permet au modèle d'exécuter du code lors de la génération.

computerUse object (ComputerUse)

Facultatif. Outil permettant au modèle d'interagir directement avec l'ordinateur. Si cette option est activée, elle remplit automatiquement les déclarations de fonctions spécifiques à l'utilisation de l'ordinateur.

urlContext object (UrlContext)

Facultatif. Outil permettant de récupérer le contexte de l'URL.

mcpServers[] object (McpServer)

Facultatif. Serveurs MCP auxquels se connecter.

googleMaps object (GoogleMaps)

Facultatif. Outil qui permet d'ancrer la réponse du modèle avec un contexte géospatial lié à la requête de l'utilisateur.

Représentation 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

Représentation structurée d'une déclaration de fonction telle que définie par la spécification OpenAPI 3.03. Cette déclaration inclut le nom et les paramètres de la fonction. Cette FunctionDeclaration est une représentation d'un bloc de code qui peut être utilisé comme Tool par le modèle et exécuté par le client.

Champs
name string

Obligatoire. Nom de la fonction. Il doit comporter 128 caractères maximum et contenir uniquement des lettres (A-Z, a-z), des chiffres (0-9), des traits de soulignement, des deux-points, des points ou des tirets.

description string

Obligatoire. Brève description de la fonction.

behavior enum (Behavior)

Facultatif. Spécifie le comportement de la fonction. Actuellement, seule la méthode BidiGenerateContent est compatible.

parameters object (Schema)

Facultatif. Décrit les paramètres de cette fonction. Reflète la clé de chaîne de l'objet de paramètre Open API 3.03 : le nom du paramètre. Les noms de paramètres sont sensibles à la casse. Valeur du schéma : schéma définissant le type utilisé pour le paramètre.

parametersJsonSchema value (Value format)

Facultatif. Décrit les paramètres de la fonction au format JSON Schema. Le schéma doit décrire un objet dont les propriétés sont les paramètres de la fonction. Exemple :

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

Ce champ s'exclut mutuellement avec parameters.

response object (Schema)

Facultatif. Décrit la sortie de cette fonction au format JSON Schema. Reflète l'objet de réponse Open API 3.03. Le schéma définit le type utilisé pour la valeur de réponse de la fonction.

responseJsonSchema value (Value format)

Facultatif. Décrit la sortie de cette fonction au format JSON Schema. La valeur spécifiée par le schéma est la valeur de la réponse de la fonction.

Ce champ s'exclut mutuellement avec response.

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

Comportement

Définit le comportement de la fonction. La valeur par défaut est BLOCKING.

Enums
UNSPECIFIED Cette valeur n'est pas utilisée.
BLOCKING Si cette valeur est définie, le système attend de recevoir la réponse de la fonction avant de poursuivre la conversation.
NON_BLOCKING Si cette valeur est définie, le système n'attend pas de recevoir la réponse de la fonction. Au lieu de cela, il tentera de gérer les réponses de fonction à mesure qu'elles seront disponibles, tout en maintenant la conversation entre l'utilisateur et le modèle.

GoogleSearchRetrieval

Outil permettant de récupérer des données Web publiques pour l'ancrage, fourni par Google.

Champs
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Spécifie la configuration de récupération dynamique pour la source donnée.

Représentation JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Décrit les options permettant de personnaliser la récupération dynamique.

Champs
mode enum (Mode)

Mode du prédicteur à utiliser dans la récupération dynamique.

dynamicThreshold number

Seuil à utiliser dans la récupération dynamique. Si elle n'est pas définie, une valeur système par défaut est utilisée.

Représentation JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Mode

Mode du prédicteur à utiliser dans la récupération dynamique.

Enums
MODE_UNSPECIFIED Déclenchez toujours la récupération.
MODE_DYNAMIC Exécutez la récupération uniquement lorsque le système le juge nécessaire.

CodeExecution

Ce type ne comporte aucun champ.

Outil qui exécute le code généré par le modèle et renvoie automatiquement le résultat au modèle.

Consultez également ExecutableCode et CodeExecutionResult, qui ne sont générés que lorsque vous utilisez cet outil.

GoogleSearch

Type d'outil GoogleSearch. Outil permettant d'utiliser la recherche Google dans le modèle. La puissance de la technologie Google

Champs
timeRangeFilter object (Interval)

Facultatif. Filtrer les résultats de recherche sur une période spécifique Si les clients définissent une heure de début, ils doivent définir une heure de fin (et inversement).

searchTypes object (SearchTypes)

Facultatif. Ensemble de types de recherche à activer. Si ce champ n'est pas défini, la recherche sur le Web est activée par défaut.

Représentation JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Intervalle

Représente un intervalle de temps, encodé sous la forme d'un code temporel de début (inclusif) et d'un code temporel de fin (exclusif).

La valeur de début doit être inférieure ou égale à celle de fin. Lorsque la valeur de début est la même que la valeur de fin, l'intervalle est vide (il ne correspond à aucune durée). Lorsque les heures de début et de fin ne sont pas spécifiées, l'intervalle couvre toutes les heures.

Champs
startTime string (Timestamp format)

Facultatif. Valeur de début (inclusive) de l'intervalle.

Si elle est spécifiée, un code temporel correspondant à cet intervalle devra être égal ou postérieur à l'heure de début.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Facultatif. Valeur de fin (exclusive) de l'intervalle.

Si elle est spécifiée, un code temporel correspondant à cet intervalle devra être antérieur à l'heure de fin.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

Représentation JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Différents types de recherche pouvant être activés dans l'outil GoogleSearch.

Champs
Représentation JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Ce type ne comporte aucun champ.

Recherche Web standard pour l'ancrage et les configurations associées.

ImageSearch

Ce type ne comporte aucun champ.

Recherche d'images pour l'ancrage et les configurations associées.

ComputerUse

Type d'outil "Utilisation de l'ordinateur".

Champs
environment enum (Environment)

Obligatoire. Environnement exploité.

excludedPredefinedFunctions[] string

Facultatif. Par défaut, les fonctions prédéfinies sont incluses dans l'appel de modèle final. Certains d'entre eux peuvent être explicitement exclus de l'inclusion automatique. Cela peut servir deux objectifs : 1. Utiliser un espace d'action plus limité ou différent. 2. Améliorer les définitions / instructions des fonctions prédéfinies.

enablePromptInjectionDetection boolean

Facultatif. Indique si la vérification de la détection de l'injection de prompt doit être activée pour la demande d'utilisation de l'ordinateur.

disabledSafetyPolicies[] enum (SafetyPolicy)

Facultatif. Les règles de sécurité pour l'utilisation de l'ordinateur sont désactivées.

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

Environnement

Représente l'environnement dans lequel l'opération est effectuée, comme un navigateur Web.

Enums
ENVIRONMENT_UNSPECIFIED La valeur par défaut est "browser".
ENVIRONMENT_BROWSER Fonctionne dans un navigateur Web.
ENVIRONMENT_MOBILE Fonctionne dans un environnement mobile.
ENVIRONMENT_DESKTOP Fonctionne dans un environnement de bureau.

SafetyPolicy

Règles de sécurité prédéfinies pour l'utilisation de l'ordinateur.

Enums
SAFETY_POLICY_UNSPECIFIED Règle de sécurité non spécifiée.
FINANCIAL_TRANSACTIONS Règles de sécurité pour les transactions financières.
SENSITIVE_DATA_MODIFICATION Règles de sécurité pour la modification des données sensibles.
COMMUNICATION_TOOL Règlement de sécurité pour les outils de communication (par exemple, Gmail, Chat, Meet)
ACCOUNT_CREATION Règles de sécurité pour la création de comptes.
DATA_MODIFICATION Règles de sécurité pour la modification des données.
LEGAL_TERMS_AND_AGREEMENTS Règlement de sécurité pour les conditions légales et les accords.

UrlContext

Ce type ne comporte aucun champ.

Outil permettant de récupérer le contexte de l'URL.

FileSearch

Outil FileSearch qui récupère les connaissances à partir des corpus de récupération sémantique. Les fichiers sont importés dans les corpus de récupération sémantique à l'aide de l'API ImportFile.

Champs
fileSearchStoreNames[] string

Obligatoire. Noms des fileSearchStores à récupérer. Exemple : fileSearchStores/my-file-search-store-123

metadataFilter string

Facultatif. Filtre de métadonnées à appliquer aux documents et aux blocs de récupération sémantique.

topK integer

Facultatif. Nombre de blocs de récupération sémantique à récupérer.

Représentation JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

Un MCPServer est un serveur qui peut être appelé par le modèle pour effectuer des actions. Il s'agit d'un serveur qui implémente le protocole MCP. ID suivant : 6.

Champs
name string

Nom du MCPServer.

transport Union type
Transport à utiliser pour se connecter au MCPServer. transport ne peut être qu'un des éléments suivants :
streamableHttpTransport object (StreamableHttpTransport)

Transport pouvant diffuser des requêtes et des réponses HTTP.

Représentation JSON
{
  "name": string,

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

StreamableHttpTransport

Transport pouvant diffuser des requêtes et des réponses HTTP. ID suivant : 6.

Champs
url string

URL complète du point de terminaison MCPServer. Exemple : "https://api.example.com/mcp"

headers map (key: string, value: string)

Facultatif : Champs pour les en-têtes d'authentification, les délais d'attente, etc., si nécessaire.

Objet contenant une liste de paires "key": value. Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Délai d'expiration HTTP pour les opérations standards.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

sseReadTimeout string (Duration format)

Délai avant expiration pour les opérations de lecture SSE.

Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par "s". Exemple : "3.5s"

terminateOnClose boolean

Indique si la session client doit être fermée lorsque le transport est fermé.

Représentation JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Outil Google Maps qui fournit un contexte géospatial pour la requête de l'utilisateur.

Champs
enableWidget boolean

Facultatif. Indique s'il faut renvoyer un jeton de contexte de widget dans les métadonnées d'ancrage de la réponse. Les développeurs peuvent utiliser le jeton de contexte du widget pour afficher un widget Google Maps avec un contexte géospatial lié aux lieux auxquels le modèle fait référence dans la réponse.

Représentation JSON
{
  "enableWidget": boolean
}

Ressource REST : auth_tokens

Ressource : AuthToken

Requête permettant de créer un jeton d'authentification éphémère.

Champs
name string

Uniquement en sortie. Identifiant. Le jeton lui-même.

expireTime string (Timestamp format)

Facultatif. Uniquement en entrée. Immuable. Heure facultative après laquelle les messages des sessions BidiGenerateContent seront refusés si le jeton obtenu est utilisé. (Gemini peut fermer la session de manière préventive après ce délai.)

Si elle n'est pas définie, la valeur par défaut est 30 minutes dans le futur. Si elle est définie, cette valeur doit être inférieure à 20 heures dans le futur.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Facultatif. Uniquement en entrée. Immuable. Heure après laquelle les nouvelles sessions de l'API Live utilisant le jeton résultant de cette requête seront refusées.

Si cette valeur n'est pas définie, la valeur par défaut est de 60 secondes dans le futur. Si elle est définie, cette valeur doit être inférieure à 20 heures dans le futur.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Facultatif. Uniquement en entrée. Immuable. Si fieldMask est vide et que bidiGenerateContentSetup n'est pas présent, le message BidiGenerateContentSetup effectif est extrait de la connexion à l'API Live.

Si fieldMask est vide et que bidiGenerateContentSetup est présent, le message BidiGenerateContentSetup effectif est entièrement extrait de bidiGenerateContentSetup dans cette requête. Le message de configuration de la connexion à l'API Live est ignoré.

Si fieldMask n'est pas vide, les champs correspondants de bidiGenerateContentSetup écraseront les champs du message de configuration dans la connexion Live API.

Il s'agit d'une liste de noms de champs complets séparés par une virgule. Exemple : "user.displayName,photo".

config Union type
Configuration spécifique à la méthode pour le jeton obtenu. config ne peut être qu'un des éléments suivants :
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Facultatif. Uniquement en entrée. Immuable. Configuration spécifique à BidiGenerateContent.

uses integer

Facultatif. Uniquement en entrée. Immuable. Nombre de fois où le jeton peut être utilisé. Si cette valeur est égale à zéro, aucune limite n'est appliquée. La reprise d'une session de l'API Live n'est pas comptabilisée comme une utilisation. Si aucune valeur n'est spécifiée, la valeur par défaut est 1.

Représentation JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Message à envoyer dans le premier (et uniquement dans le premier) BidiGenerateContentClientMessage. Contient la configuration qui s'appliquera pendant la durée du RPC de streaming.

Les clients doivent attendre un message BidiGenerateContentSetupComplete avant d'envoyer d'autres messages.

Champs
model string

Obligatoire. Nom de ressource du modèle. Il sert d'ID pour le modèle.

Format : models/{model}

generationConfig object (GenerationConfig)

Facultatif. Configuration de la génération.

Les champs suivants ne sont pas acceptés :

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

Facultatif. Instructions système fournies par l'utilisateur pour le modèle.

Remarque : Seul du texte doit être utilisé dans les parties, et le contenu de chaque partie figurera dans un paragraphe distinct.

tools[] object (Tool)

Facultatif. Liste de Tools que le modèle peut utiliser pour générer la réponse suivante.

Tool est une portion de code qui permet au système d'interagir avec des systèmes externes pour effectuer une action ou un ensemble d'actions en dehors du champ d'application et des connaissances du modèle.

realtimeInputConfig object (RealtimeInputConfig)

Facultatif. Configure la gestion de l'entrée en temps réel.

sessionResumption object (SessionResumptionConfig)

Facultatif. Configure le mécanisme de reprise de session.

Si cet élément est inclus, le serveur envoie des messages SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Facultatif. Configure un mécanisme de compression de la fenêtre de contexte.

Si cet élément est inclus, le serveur réduit automatiquement la taille du contexte lorsqu'il dépasse la longueur configurée.

inputAudioTranscription object (AudioTranscriptionConfig)

Facultatif. Si cette option est définie, elle active la transcription de la saisie vocale. La transcription correspond à la langue audio d'entrée, si elle est configurée.

outputAudioTranscription object (AudioTranscriptionConfig)

Facultatif. Si cette option est définie, elle permet de transcrire la sortie audio du modèle. La transcription correspond au code de langue spécifié pour le contenu audio de sortie, le cas échéant.

historyConfig object (HistoryConfig)

Facultatif. Configure l'échange de l'historique entre le client et le serveur.

Représentation 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

Options de configuration pour la génération et les sorties de modèles. Tous les paramètres ne sont pas configurables pour tous les modèles.

Champs
stopSequences[] string

Facultatif. Ensemble de séquences de caractères (jusqu'à cinq) qui arrêteront la génération de sortie. Si elle est spécifiée, l'API s'arrête à la première occurrence d'un stop_sequence. La séquence d'arrêt ne sera pas incluse dans la réponse.

responseMimeType string

Facultatif. Type MIME du texte candidat généré. Les types MIME acceptés sont les suivants : text/plain (par défaut) : sortie de texte. application/json : réponse JSON dans les candidats de réponse. text/x.enum : ENUM en tant que réponse de chaîne dans les candidats de réponse. Consultez la documentation pour obtenir la liste de tous les types MIME de texte compatibles.

responseSchema
(deprecated)
object (Schema)

Facultatif. Schéma de sortie du texte candidat généré. Les schémas doivent être un sous-ensemble du schéma OpenAPI et peuvent être des objets, des primitives ou des tableaux.

Si cette option est définie, un responseMimeType compatible doit également être défini. Types MIME compatibles : application/json : schéma pour la réponse JSON. Pour en savoir plus, consultez le guide de génération de texte JSON.

_responseJsonSchema
(deprecated)
value (Value format)

Facultatif. Schéma de sortie de la réponse générée. Il s'agit d'une alternative à responseSchema qui accepte le schéma JSON.

Si cette valeur est définie, responseSchema doit être omis, mais responseMimeType est obligatoire.

Bien que le schéma JSON complet puisse être envoyé, toutes les fonctionnalités ne sont pas prises en charge. Plus précisément, seules les propriétés suivantes sont acceptées :

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (pour les chaînes et les nombres)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (interprété de la même manière que anyOf)
  • properties
  • additionalProperties
  • required

La propriété non standard propertyOrdering peut également être définie.

Les références cycliques sont déroulées dans une certaine mesure et ne peuvent donc être utilisées que dans des propriétés non obligatoires. (Les propriétés pouvant être nulles ne suffisent pas.) Si $ref est défini sur un sous-schéma, aucune autre propriété ne peut être définie, à l'exception de celles commençant par $.

responseJsonSchema value (Value format)

Facultatif. Information interne. Utilisez responseJsonSchema plutôt que ce champ.

responseModalities[] enum (Modality)

Facultatif. Modalités de réponse demandées. Représente l'ensemble des modalités que le modèle peut renvoyer et auxquelles il faut s'attendre dans la réponse. Il s'agit d'une correspondance exacte avec les modalités de la réponse.

Un modèle peut comporter plusieurs combinaisons de modalités compatibles. Si les modalités demandées ne correspondent à aucune des combinaisons acceptées, une erreur est renvoyée.

Une liste vide équivaut à demander uniquement du texte.

candidateCount integer

Facultatif. Nombre de réponses générées à renvoyer. Si cette valeur n'est pas définie, la valeur par défaut est 1. Veuillez noter que cela ne fonctionne pas pour les modèles de génération précédente (famille Gemini 1.0).

maxOutputTokens integer

Facultatif. Nombre maximal de jetons à inclure dans une réponse candidate.

Remarque : La valeur par défaut varie selon le modèle. Consultez l'attribut Model.output_token_limit de Model renvoyé par la fonction getModel.

temperature number

Facultatif. Contrôle le caractère aléatoire de la sortie.

Remarque : La valeur par défaut varie selon le modèle. Consultez l'attribut Model.temperature de Model renvoyé par la fonction getModel.

Les valeurs peuvent être comprises entre 0,0 et 2,0.

topP number

Facultatif. Probabilité cumulée maximale des jetons à prendre en compte lors de l'échantillonnage.

Le modèle utilise un échantillonnage combiné Top-k et Top-p (noyau).

Les jetons sont triés en fonction des probabilités qui leur sont attribuées, de sorte que seuls les jetons les plus probables sont pris en compte. L'échantillonnage top-k limite directement le nombre maximal de jetons à prendre en compte, tandis que l'échantillonnage du noyau limite le nombre de jetons en fonction de la probabilité cumulée.

Remarque : La valeur par défaut varie selon Model et est spécifiée par l'attribut Model.top_p renvoyé par la fonction getModel. Un attribut topK vide indique que le modèle n'applique pas l'échantillonnage top-k et ne permet pas de définir topK dans les requêtes.

topK integer

Facultatif. Nombre maximal de jetons à prendre en compte lors de l'échantillonnage.

Les modèles Gemini utilisent l'échantillonnage Top-p (noyau) ou une combinaison de l'échantillonnage Top-k et du noyau. L'échantillonnage top-k prend en compte l'ensemble des topK jetons les plus probables. Les modèles exécutés avec l'échantillonnage du noyau ne permettent pas de définir topK.

Remarque : La valeur par défaut varie selon Model et est spécifiée par l'attribut Model.top_p renvoyé par la fonction getModel. Un attribut topK vide indique que le modèle n'applique pas l'échantillonnage top-k et ne permet pas de définir topK dans les requêtes.

seed integer

Facultatif. Graine utilisée dans le décodage. Si elle n'est pas définie, la requête utilise une graine générée de manière aléatoire.

presencePenalty number

Facultatif. Pénalité de présence appliquée aux logprobs du jeton suivant si le jeton a déjà été vu dans la réponse.

Cette pénalité est binaire (activée/désactivée) et ne dépend pas du nombre de fois où le jeton est utilisé (après la première fois). Utilisez frequencyPenalty pour une pénalité qui augmente à chaque utilisation.

Une pénalité positive découragera l'utilisation de jetons déjà utilisés dans la réponse, ce qui augmentera le vocabulaire.

Une pénalité négative encouragera l'utilisation de jetons déjà utilisés dans la réponse, ce qui réduira le vocabulaire.

frequencyPenalty number

Facultatif. Pénalité de fréquence appliquée aux logprobs du jeton suivant, multipliée par le nombre de fois où chaque jeton a été vu dans la réponse jusqu'à présent.

Une pénalité positive découragera l'utilisation de jetons déjà utilisés, proportionnellement au nombre de fois où le jeton a été utilisé : plus un jeton est utilisé, plus il est difficile pour le modèle de l'utiliser à nouveau, ce qui augmente le vocabulaire des réponses.

Attention : Une pénalité négative encouragera le modèle à réutiliser les jetons proportionnellement au nombre de fois où ils ont été utilisés. De petites valeurs négatives réduisent le vocabulaire d'une réponse. Des valeurs négatives plus élevées entraîneront la répétition d'un jeton commun par le modèle jusqu'à ce qu'il atteigne la limite maxOutputTokens.

responseLogprobs boolean

Facultatif. Si la valeur est "true", les résultats logprobs sont exportés dans la réponse.

logprobs integer

Facultatif. Valide uniquement si responseLogprobs=True. Cela définit le nombre de logprobs les plus élevés, y compris le candidat choisi, à renvoyer à chaque étape de décodage dans Candidate.logprobs_result. Ce nombre doit être compris entre 0 et 20.

enableEnhancedCivicAnswers boolean

Facultatif. Active les réponses civiques améliorées. Il est possible qu'elle ne soit pas disponible pour tous les modèles.

speechConfig object (SpeechConfig)

Facultatif. Configuration de la génération vocale.

thinkingConfig object (ThinkingConfig)

Facultatif. Configuration des fonctionnalités de réflexion. Une erreur sera renvoyée si ce champ est défini pour des modèles qui ne prennent pas en charge la réflexion.

imageConfig object (ImageConfig)

Facultatif. Configuration pour la génération d'images. Une erreur sera renvoyée si ce champ est défini pour des modèles qui ne sont pas compatibles avec ces options de configuration.

mediaResolution enum (MediaResolution)

Facultatif. Si une résolution est spécifiée, elle sera utilisée.

enableAffectiveDialog boolean

Facultatif. Si cette option est activée, le modèle détecte les émotions et adapte ses réponses en conséquence.

responseFormat object (ResponseFormatConfig)

Facultatif. Configuration du format de sortie de la réponse. Permet de spécifier la configuration de sortie par modalité (texte, audio, image) dans une structure plate.

translationConfig object (TranslationConfig)

Facultatif. Configuration pour la traduction.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Facultatif. Configuration pour la transcription audio (reconnaissance vocale).

Représentation 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és de réponse acceptées.

Enums
MODALITY_UNSPECIFIED Valeur par défaut.
TEXT Indique que le modèle doit renvoyer du texte.
IMAGE Indique que le modèle doit renvoyer des images.
AUDIO Indique que le modèle doit renvoyer de l'audio.

SpeechConfig

Configuration pour la génération et la transcription vocales.

Champs
voiceConfig object (VoiceConfig)

Configuration en cas de sortie à une seule voix.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Facultatif. Configuration de la configuration multispeaker. Il s'exclut mutuellement avec le champ voiceConfig.

languageCode string

Facultatif. Code de langue IETF BCP-47 que l'utilisateur a configuré pour l'application. Utilisé pour la reconnaissance et la synthèse vocales.

Les valeurs valides sont les suivantes : 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 et th-TH.

Représentation JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

Configuration de la voix à utiliser.

Champs
voice_config Union type
Configuration à utiliser par l'enceinte. voice_config ne peut être qu'un des éléments suivants :
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Configuration de la voix prédéfinie à utiliser.

Représentation JSON
{

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

PrebuiltVoiceConfig

Configuration à utiliser pour le haut-parleur prédéfini.

Champs
voiceName string

Nom de la voix prédéfinie à utiliser.

Représentation JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Configuration de la configuration multispeaker.

Champs
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Obligatoire. Toutes les voix d'enceinte activées.

Représentation JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

Configuration d'une seule enceinte dans une configuration à plusieurs enceintes.

Champs
speaker string

Obligatoire. Nom du locuteur à utiliser. Doit être identique à celui de la requête.

voiceConfig object (VoiceConfig)

Obligatoire. Configuration de la voix à utiliser.

Représentation JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Configuration des fonctionnalités de réflexion.

Champs
includeThoughts boolean

Indique s'il faut inclure les réflexions dans la réponse. Si la valeur est "true", les réflexions ne sont renvoyées que lorsqu'elles sont disponibles.

thinkingBudget integer

Nombre de jetons de réflexion que le modèle doit générer.

thinkingLevel enum (ThinkingLevel)

Facultatif. Contrôle la profondeur maximale du processus de raisonnement interne du modèle avant qu'il ne produise une réponse. La valeur par défaut dépend du modèle. Pour en savoir plus, consultez le guide sur les niveaux de réflexion. Recommandé pour les modèles Gemini 3 ou ultérieurs. Une erreur se produit si vous l'utilisez avec des modèles antérieurs.

Représentation JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Autoriser l'utilisateur à spécifier le temps de réflexion à l'aide d'un énumérateur au lieu d'un budget entier.

Enums
THINKING_LEVEL_UNSPECIFIED Valeur par défaut.
MINIMAL Vous n'avez pas ou peu besoin de réfléchir.
LOW Niveau de réflexion faible.
MEDIUM Niveau de réflexion moyen.
HIGH Niveau de réflexion élevé.

ImageConfig

Configuration des fonctionnalités de génération d'images.

Champs
aspectRatio string

Facultatif. Format de l'image à générer. Formats acceptés : 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 ou 21:9.

Si aucun n'est spécifié, le modèle choisit un rapport hauteur/largeur par défaut en fonction des images de référence fournies.

imageSize string

Facultatif. Spécifie la taille des images générées. Les valeurs acceptées sont 512, 1K, 2K et 4K. Si aucune valeur n'est spécifiée, le modèle utilise la valeur par défaut 1K.

Représentation JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Résolution du contenu multimédia d'entrée.

Enums
MEDIA_RESOLUTION_UNSPECIFIED La résolution du contenu multimédia n'a pas été définie.
MEDIA_RESOLUTION_LOW La résolution des contenus multimédias est définie sur "basse" (64 jetons).
MEDIA_RESOLUTION_MEDIUM Résolution des contenus multimédias définie sur "moyenne" (256 jetons).
MEDIA_RESOLUTION_HIGH Résolution du contenu multimédia définie sur "Élevée" (recadrage zoomé avec 256 jetons).

ResponseFormatConfig

Configuration du format de sortie de la réponse. Il s'agit d'un objet plat dans lequel chaque sous-champ facultatif configure une modalité de sortie spécifique.

Champs
text object (TextResponseFormat)

Facultatif. Configuration du format de sortie du texte.

audio object (AudioResponseFormat)

Facultatif. Configuration du format de sortie audio.

image object (ImageResponseFormat)

Facultatif. Configuration du format de sortie des images.

Représentation JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Configuration du format de sortie du texte.

Champs
mimeType enum (MimeType)

Facultatif. Type MIME de la sortie de texte.

schema value (Value format)

Facultatif. Schéma JSON auquel la sortie doit se conformer. Ne s'applique que lorsque mimeType est défini sur APPLICATION_JSON.

Représentation JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Types MIME acceptés pour la sortie de texte.

Enums
MIME_TYPE_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
APPLICATION_JSON Format de sortie JSON.
TEXT_PLAIN Format de sortie en texte brut.

AudioResponseFormat

Configuration du format de sortie audio.

Champs
mimeType enum (MimeType)

Facultatif. Type MIME de la sortie audio.

delivery enum (Delivery)

Facultatif. Mode de diffusion de la sortie audio.

sampleRate integer

Facultatif. Taux d'échantillonnage en Hz.

bitRate integer

Facultatif. Débit en bits par seconde (bps). Ne s'applique qu'aux formats compressés (MP3, Opus).

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

MimeType

Types MIME compatibles pour la sortie audio.

Enums
MIME_TYPE_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
AUDIO_MP3 Format audio MP3.
AUDIO_OGG_OPUS Format audio OGG Opus.
AUDIO_L16 Format audio PCM brut (L16).
AUDIO_WAV Format audio WAV.
AUDIO_ALAW Format audio A-law.
AUDIO_MULAW Format audio Mu-law.

Livraison

Mode de diffusion pour la sortie audio.

Enums
DELIVERY_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
INLINE Les données audio sont renvoyées dans la réponse.
URI Les données audio sont renvoyées sous forme d'URI.

ImageResponseFormat

Configuration du format de sortie de l'image.

Champs
mimeType enum (MimeType)

Facultatif. Type MIME de l'image de sortie.

delivery enum (Delivery)

Facultatif. Mode de diffusion de l'image de sortie.

aspectRatio enum (AspectRatio)

Facultatif. Format de l'image générée.

imageSize enum (ImageSize)

Facultatif. Taille de l'image générée.

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

MimeType

Types MIME acceptés pour la sortie d'image.

Enums
MIME_TYPE_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
IMAGE_JPEG Format d'image JPEG.

Livraison

Mode de diffusion pour la sortie d'image.

Enums
DELIVERY_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
INLINE Les données d'image sont renvoyées dans la réponse.
URI Les données d'image sont renvoyées sous forme d'URI.

AspectRatio

Formats acceptés pour les images générées.

Enums
ASPECT_RATIO_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
ASPECT_RATIO_ONE_BY_ONE Format 1:1.
ASPECT_RATIO_TWO_BY_THREE Format 2:3
ASPECT_RATIO_THREE_BY_TWO Format 3:2.
ASPECT_RATIO_THREE_BY_FOUR Format 3:4.
ASPECT_RATIO_FOUR_BY_THREE Format 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Format 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Format 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Format 9:16
ASPECT_RATIO_SIXTEEN_BY_NINE Format 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Format 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Format 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Format 8:1.
ASPECT_RATIO_ONE_BY_FOUR Format 1:4.
ASPECT_RATIO_FOUR_BY_ONE Format 4:1.

ImageSize

Tailles d'image acceptées pour les images générées.

Enums
IMAGE_SIZE_UNSPECIFIED Valeur par défaut. Cette valeur n'est pas utilisée.
IMAGE_SIZE_FIVE_TWELVE Taille de l'image : 512 px.
IMAGE_SIZE_ONE_K Taille d'image 1K.
IMAGE_SIZE_TWO_K Taille d'image 2K.
IMAGE_SIZE_FOUR_K Taille de l'image 4K.

TranslationConfig

Configuration des fonctionnalités de traduction.

Champs
targetLanguageCode string

Obligatoire. Langue cible de la traduction. Les valeurs acceptées sont les codes de langue BCP-47 (par exemple, "en", "es", "fr").

echoTargetLanguage boolean

Facultatif. Si la valeur est "true", le modèle génère de l'audio lorsque la langue cible est parlée. Il répète essentiellement l'entrée. Si la valeur est "false", nous ne produirons pas d'audio pour la langue cible.

Représentation JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

Configuration de la transcription audio.

Champs
languageCodes[] string

Facultatif. Codes de langue BCP-47 fournissant des indications sur les langues présentes dans l'audio. Si ce champ est omis ou vide, la langue est détectée automatiquement par défaut.

adaptationPhrases[]
(deprecated)
string

Facultatif. Liste d'expressions utilisées pour l'adaptation vocale, qui oriente le modèle ASR pour améliorer la reconnaissance de ces termes spécifiques.

customVocabulary[] string

Facultatif. Liste d'expressions de vocabulaire personnalisé pour orienter le modèle de reconnaissance vocale vers la reconnaissance de termes spécifiques (noms de produits, noms propres, jargon).

wordTimestamp boolean

Facultatif. Configure la génération de codes temporels au niveau du mot.

diarization boolean

Facultatif. Configure l'identification du locuteur.

language_config Union type
Obsolète : utilisez plutôt language_codes au niveau supérieur. language_config ne peut être qu'un des éléments suivants :
languageAuto
(deprecated)
object (LanguageAuto)

Facultatif. Le modèle détecte automatiquement la langue.

languageHints
(deprecated)
object (LanguageHints)

Facultatif. Spécifie une ou plusieurs langues dans l'audio.

Représentation JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

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

LanguageAuto

Ce type ne comporte aucun champ.

Indique que la langue de l'audio doit être détectée automatiquement.

LanguageHints

Fournit des indices au modèle sur les langues possibles présentes dans l'audio.

Champs
languageCodes[]
(deprecated)
string

Obligatoire. Codes de langue BCP-47.

Représentation JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

Configure le comportement d'entrée en temps réel dans BidiGenerateContent.

Champs
automaticActivityDetection object (AutomaticActivityDetection)

Facultatif. Si cet élément n'est pas défini, la détection automatique de l'activité est activée par défaut. Si elle est désactivée, le client doit envoyer des signaux d'activité.

activityHandling enum (ActivityHandling)

Facultatif. Définit l'effet de l'activité.

turnCoverage enum (TurnCoverage)

Facultatif. Définit l'entrée incluse dans le tour de l'utilisateur.

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

AutomaticActivityDetection

Configure la détection automatique de l'activité.

Champs
disabled boolean

Facultatif. Si cette option est activée (valeur par défaut), les entrées vocales et textuelles détectées sont considérées comme une activité. S'il est désactivé, le client doit envoyer des signaux d'activité.

startOfSpeechSensitivity enum (StartSensitivity)

Facultatif. Détermine la probabilité de détection de la parole.

prefixPaddingMs integer

Facultatif. Durée requise de la parole détectée avant validation du début de la parole. Plus cette valeur est faible, plus la détection du début de la parole est sensible, ce qui permet de détecter des paroles plus courtes. Toutefois, cela augmente également la probabilité de faux positifs.

endOfSpeechSensitivity enum (EndSensitivity)

Facultatif. Détermine la probabilité que la parole détectée soit terminée.

silenceDurationMs integer

Facultatif. Durée requise de sons autres que la parole (par exemple, silence) détectés avant validation de la fin de la parole. Plus cette valeur est élevée, plus les intervalles de parole peuvent être longs sans interrompre l'activité de l'utilisateur. Toutefois, cela augmente la latence du modèle.

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

StartSensitivity

Détermine comment le début de la parole est détecté.

Enums
START_SENSITIVITY_UNSPECIFIED La valeur par défaut est START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH La détection automatique détectera plus souvent le début de la parole.
START_SENSITIVITY_LOW La détection automatique détectera moins souvent le début de la parole.

EndSensitivity

Détermine comment la fin de la parole est détectée.

Enums
END_SENSITIVITY_UNSPECIFIED La valeur par défaut est END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH La détection automatique met fin plus souvent à la parole.
END_SENSITIVITY_LOW La détection automatique met fin moins souvent à la parole.

ActivityHandling

Les différentes façons de gérer l'activité de l'utilisateur.

Énumérations
ACTIVITY_HANDLING_UNSPECIFIED Si aucune valeur n'est spécifiée, le comportement par défaut est START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Si la valeur est "true", le démarrage de l'activité interrompt la réponse du modèle (également appelé "barge-in"). La réponse actuelle du modèle est suspendue au moment de l'interruption. Il s'agit du comportement par défaut.
NO_INTERRUPTION La réponse du modèle n'est pas interrompue.

TurnCoverage

Options concernant les entrées à inclure dans le tour de l'utilisateur.

Enums
TURN_COVERAGE_UNSPECIFIED Si aucune valeur n'est spécifiée, un comportement par défaut est sélectionné en fonction du modèle. Par exemple, pour Gemini 2.5, la valeur par défaut est TURN_INCLUDES_ONLY_ACTIVITY, tandis que pour Gemini 3.1 et les versions ultérieures, elle est TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Inclut l'activité depuis le dernier tour, à l'exclusion de l'inactivité (par exemple, un silence sur le flux audio).
TURN_INCLUDES_ALL_INPUT Inclut toutes les entrées en temps réel depuis le dernier tour, y compris l'inactivité (par exemple, un silence sur le flux audio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Inclut l'activité audio et toutes les vidéos depuis le dernier tour. Avec la détection automatique de l'activité, l'activité audio désigne la parole et exclut le silence.

SessionResumptionConfig

Configuration de la reprise de session.

Ce message est inclus dans la configuration de la session en tant que BidiGenerateContentSetup.session_resumption. Si le serveur est configuré, il envoie des messages SessionResumptionUpdate.

Champs
handle string

Handle d'une session précédente. Si elle n'est pas présente, une session est créée.

Les identifiants de session proviennent des valeurs SessionResumptionUpdate.token des connexions précédentes.

Représentation JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Active la compression de la fenêtre de contexte, un mécanisme permettant de gérer la fenêtre de contexte du modèle afin qu'elle ne dépasse pas une longueur donnée.

Champs
compression_mechanism Union type
Mécanisme de compression de la fenêtre de contexte utilisé. compression_mechanism ne peut être qu'un des éléments suivants :
slidingWindow object (SlidingWindow)

Un mécanisme de fenêtre glissante.

triggerTokens string (int64 format)

Nombre de jetons (avant l'exécution d'un tour) requis pour déclencher une compression de la fenêtre de contexte.

Cela peut être utilisé pour équilibrer la qualité et la latence, car des fenêtres de contexte plus courtes peuvent entraîner des réponses plus rapides du modèle. Toutefois, toute opération de compression entraînera une augmentation temporaire de la latence. Il ne faut donc pas les déclencher fréquemment.

Si elle n'est pas définie, la valeur par défaut est de 80% de la limite de la fenêtre de contexte du modèle. Il reste donc 20% pour la prochaine requête utilisateur/réponse du modèle.

Représentation JSON
{

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

SlidingWindow

La méthode SlidingWindow fonctionne en supprimant le contenu au début de la fenêtre de contexte. Le contexte obtenu commencera toujours au début d'un tour de rôle USER. Les instructions système et les BidiGenerateContentSetup.prefix_turns seront toujours placés au début du résultat.

Champs
targetTokens string (int64 format)

Nombre cible de jetons à conserver. La valeur par défaut est triggerTokens/2.

Le fait de supprimer des parties de la fenêtre de contexte entraîne une augmentation temporaire de la latence. Cette valeur doit donc être calibrée pour éviter les opérations de compression fréquentes.

Représentation JSON
{
  "targetTokens": string
}

HistoryConfig

Configuration de l'historique.

Ce message est inclus dans la configuration de la session en tant que BidiGenerateContentSetup.history_config. Configure l'échange de messages d'historique.

Champs
initialHistoryInClientContent boolean

Facultatif. Si la valeur est "true", après l'envoi de setupComplete, le serveur attendra et traitera d'abord les messages clientContent jusqu'à ce que turnComplete soit true. Cet historique initial ne déclenchera pas d'appel de modèle et pourra se terminer par le rôle MODEL. Une fois que turnComplete est true, le client peut démarrer la conversation en temps réel via realtimeInput.

Représentation JSON
{
  "initialHistoryInClientContent": boolean
}

Méthode : auth_tokens.create

Crée un jeton qui peut être utilisé pour contraindre le comportement d'une session BidiGenerateContent.

Point de terminaison

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

Corps de la requête

Le corps de la requête contient une instance de AuthToken.

Champs
expireTime string (Timestamp format)

Facultatif. Uniquement en entrée. Immuable. Heure facultative après laquelle les messages des sessions BidiGenerateContent seront refusés si le jeton obtenu est utilisé. (Gemini peut fermer la session de manière préventive après ce délai.)

Si elle n'est pas définie, la valeur par défaut est 30 minutes dans le futur. Si elle est définie, cette valeur doit être inférieure à 20 heures dans le futur.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Facultatif. Uniquement en entrée. Immuable. Heure après laquelle les nouvelles sessions de l'API Live utilisant le jeton résultant de cette requête seront refusées.

Si cette valeur n'est pas définie, la valeur par défaut est de 60 secondes dans le futur. Si elle est définie, cette valeur doit être inférieure à 20 heures dans le futur.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Facultatif. Uniquement en entrée. Immuable. Si fieldMask est vide et que bidiGenerateContentSetup n'est pas présent, le message BidiGenerateContentSetup effectif est extrait de la connexion à l'API Live.

Si fieldMask est vide et que bidiGenerateContentSetup est présent, le message BidiGenerateContentSetup effectif est entièrement extrait de bidiGenerateContentSetup dans cette requête. Le message de configuration de la connexion à l'API Live est ignoré.

Si fieldMask n'est pas vide, les champs correspondants de bidiGenerateContentSetup écraseront les champs du message de configuration dans la connexion Live API.

Il s'agit d'une liste de noms de champs complets séparés par une virgule. Exemple : "user.displayName,photo".

config Union type
Configuration spécifique à la méthode pour le jeton obtenu. config ne peut être qu'un des éléments suivants :
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Facultatif. Uniquement en entrée. Immuable. Configuration spécifique à BidiGenerateContent.

uses integer

Facultatif. Uniquement en entrée. Immuable. Nombre de fois où le jeton peut être utilisé. Si cette valeur est égale à zéro, aucune limite n'est appliquée. La reprise d'une session de l'API Live n'est pas comptabilisée comme une utilisation. Si aucune valeur n'est spécifiée, la valeur par défaut est 1.

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient une nouvelle instance de AuthToken.