Generating content

‫Gemini API תומך ביצירת תוכן עם תמונות, אודיו, קוד, כלים ועוד. בהמשך המאמר מפורטים כל אחת מהתכונות האלה, ומוצג קוד לדוגמה שמתמקד במשימות. אפשר גם לקרוא את המדריכים המקיפים.

שיטה: models.generateContent

יצירת תשובה של מודל בהינתן קלט GenerateContentRequest. פרטים נוספים על השימוש זמינים במדריך ליצירת טקסט. יכולות הקלט שונות בין המודלים, כולל מודלים שעברו התאמה. פרטים נוספים זמינים במדריך למודלים ובמדריך להתאמת מודלים.

נקודת קצה

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

פרמטרים של נתיב

model string

חובה. השם של Model שבו רוצים להשתמש כדי ליצור את ההשלמה.

פורמט: models/{model} הוא מקבל את הצורה models/{model}.

גוף הבקשה

גוף הבקשה מכיל נתונים במבנה הבא:

Fields
contents[] object (Content)

חובה. התוכן של השיחה הנוכחית עם המודל.

בשביל שאילתות של תור יחיד, זהו מופע יחיד. בשביל שאילתות רב-שלביות כמו צ'אט, זהו שדה חוזר שמכיל את היסטוריית השיחות ואת הבקשה האחרונה.

tools[] object (Tool)

אופציונלי. רשימה של Tools ש-Model עשוי להשתמש בהם כדי ליצור את התשובה הבאה.

Tool הוא קטע קוד שמאפשר למערכת ליצור אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה או סדרת פעולות, שלא נמצאות בידע ובהיקף של Model. ה-Tools הנתמכים הם Function ו-codeExecution. מידע נוסף זמין במדריכים בנושא הפעלת פונקציות והרצת קוד.

toolConfig object (ToolConfig)

אופציונלי. הגדרת הכלי לכל Tool שצוין בבקשה. דוגמה לשימוש מופיעה במדריך להפעלת פונקציות.

safetySettings[] object (SafetySetting)

אופציונלי. רשימה של מופעי SafetySetting ייחודיים לחסימת תוכן לא בטוח.

השינוי הזה יחול על GenerateContentRequest.contents ועל GenerateContentResponse.candidates. לא יכולה להיות יותר מהגדרה אחת לכל סוג SafetyCategory. ה-API יחסום כל תוכן ותשובה שלא יעמדו בסף שנקבע בהגדרות האלה. הרשימה הזו מבטלת את הגדרות ברירת המחדל של כל SafetyCategory שצוין ב-safetySettings. אם לא מופיע SafetySetting עבור SafetyCategory מסוים שמופיע ברשימה, ממשק ה-API ישתמש בהגדרת הבטיחות שמוגדרת כברירת מחדל עבור הקטגוריה הזו. הקטגוריות הבאות של נזק נתמכות: HARM_CATEGORY_HATE_SPEECH, ‏ HARM_CATEGORY_SEXUALLY_EXPLICIT, ‏ HARM_CATEGORY_DANGEROUS_CONTENT, ‏ HARM_CATEGORY_HARASSMENT, ‏ HARM_CATEGORY_CIVIC_INTEGRITY, ‏ HARM_CATEGORY_JAILBREAK. מידע מפורט על הגדרות הבטיחות הזמינות מופיע במדריך. כדאי גם לעיין בהנחיות הבטיחות כדי ללמוד איך לשלב שיקולי בטיחות באפליקציות ה-AI שלכם.

systemInstruction object (Content)

אופציונלי. המפתח הגדיר הוראות מערכת. בשלב הזה, רק טקסט.

generationConfig object (GenerationConfig)

אופציונלי. אפשרויות ההגדרה ליצירת מודלים ולפלטים.

cachedContent string

אופציונלי. השם של התוכן שנשמר במטמון כדי לשמש כהקשר להצגת התחזית. פורמט: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

אופציונלי. מדרגת השירות של הבקשה.

store boolean

אופציונלי. היא מגדירה את אופן הרישום ביומן עבור בקשה נתונה. אם ההגדרה הזו מוגדרת, היא מקבלת עדיפות על פני הגדרת הרישום ביומן ברמת הפרויקט.

דוגמה לבקשה

טקסט

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)

קונכייה

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

תמונה

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)

קונכייה

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

אודיו

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)

קונכייה

# 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

וידאו

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)

קונכייה

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

קונכייה

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

צ'אט

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

קונכייה

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

מטמון

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)

מודל שעבר התאמה

Python

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

מצב 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)

קונכייה

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

הרצת קוד

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

בקשה להפעלת פונקציה

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

קונכייה


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

הגדרת יצירה

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)

קונכייה

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

הגדרות בטיחות

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

קונכייה

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

הנחיה למערכת

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)

קונכייה

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

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של GenerateContentResponse.

שיטה: models.streamGenerateContent

יצירת תשובה בסטרימינג מהמודל בהינתן קלט GenerateContentRequest.

נקודת קצה

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

פרמטרים של נתיב

model string

חובה. השם של Model שבו רוצים להשתמש כדי ליצור את ההשלמה.

פורמט: models/{model} הוא מקבל את הצורה models/{model}.

גוף הבקשה

גוף הבקשה מכיל נתונים במבנה הבא:

Fields
contents[] object (Content)

חובה. התוכן של השיחה הנוכחית עם המודל.

בשביל שאילתות של תור יחיד, זהו מופע יחיד. בשביל שאילתות רב-שלביות כמו צ'אט, זהו שדה חוזר שמכיל את היסטוריית השיחות ואת הבקשה האחרונה.

tools[] object (Tool)

אופציונלי. רשימה של Tools שModel עשוי להשתמש בהם כדי ליצור את התשובה הבאה.

Tool הוא קטע קוד שמאפשר למערכת ליצור אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה או סדרת פעולות, שלא נמצאות בידע ובהיקף של Model. ה-Tools הנתמכים הם Function ו-codeExecution. מידע נוסף זמין במדריכים בנושא הפעלת פונקציות והרצת קוד.

toolConfig object (ToolConfig)

אופציונלי. הגדרת הכלי לכל Tool שצוין בבקשה. דוגמה לשימוש מופיעה במדריך להפעלת פונקציות.

safetySettings[] object (SafetySetting)

אופציונלי. רשימה של מקרים ייחודיים של SafetySetting לחסימת תוכן לא בטוח.

השינוי הזה יחול על GenerateContentRequest.contents ועל GenerateContentResponse.candidates. לא יכולה להיות יותר מהגדרה אחת לכל סוג SafetyCategory. ה-API יחסום כל תוכן ותשובה שלא יעמדו בסף שנקבע בהגדרות האלה. הרשימה הזו מבטלת את הגדרות ברירת המחדל של כל SafetyCategory שצוין ב-safetySettings. אם לא מופיע SafetySetting עבור SafetyCategory מסוים שמופיע ברשימה, ממשק ה-API ישתמש בהגדרת הבטיחות שמוגדרת כברירת מחדל עבור הקטגוריה הזו. הקטגוריות הבאות של נזק נתמכות: HARM_CATEGORY_HATE_SPEECH, ‏ HARM_CATEGORY_SEXUALLY_EXPLICIT, ‏ HARM_CATEGORY_DANGEROUS_CONTENT, ‏ HARM_CATEGORY_HARASSMENT, ‏ HARM_CATEGORY_CIVIC_INTEGRITY, ‏ HARM_CATEGORY_JAILBREAK. מידע מפורט על הגדרות הבטיחות הזמינות מופיע במדריך. כדאי גם לעיין בהנחיות הבטיחות כדי ללמוד איך לשלב שיקולי בטיחות באפליקציות ה-AI שלכם.

systemInstruction object (Content)

אופציונלי. המפתח הגדיר הוראות מערכת. בשלב הזה, רק טקסט.

generationConfig object (GenerationConfig)

אופציונלי. אפשרויות ההגדרה ליצירת מודלים ולפלטים.

cachedContent string

אופציונלי. השם של התוכן שנשמר במטמון כדי לשמש כהקשר להצגת התחזית. פורמט: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

אופציונלי. מדרגת השירות של הבקשה.

store boolean

אופציונלי. היא מגדירה את אופן הרישום ביומן עבור בקשה נתונה. אם ההגדרה הזו מוגדרת, היא מקבלת עדיפות על פני הגדרת הרישום ביומן ברמת הפרויקט.

דוגמה לבקשה

טקסט

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

קונכייה

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

תמונה

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

קונכייה

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

אודיו

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

קונכייה

# 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

וידאו

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

קונכייה

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

קונכייה

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

צ'אט

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

קונכייה

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"

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל זרם של מופעים של GenerateContentResponse.

GenerateContentResponse

תשובה מהמודל שתומכת בכמה תשובות אפשריות.

דירוגי הבטיחות וסינון התוכן מדווחים גם לגבי הפרומפט ב-GenerateContentResponse.prompt_feedback וגם לגבי כל מועמד ב-finishReason וב-safetyRatings. ה-API: – מחזיר את כל המועמדים המבוקשים או אף אחד מהם – לא מחזיר אף מועמד רק אם הייתה בעיה בהנחיה (צריך לבדוק את promptFeedback) – מדווח על משוב לגבי כל מועמד ב-finishReason וב-safetyRatings.

Fields
candidates[] object (Candidate)

תשובות אפשריות מהמודל.

promptFeedback object (PromptFeedback)

מחזירה את המשוב על ההנחיה שקשור למסנני התוכן.

usageMetadata object (UsageMetadata)

פלט בלבד. מטא-נתונים על השימוש באסימונים בבקשות ליצירה.

modelVersion string

פלט בלבד. גרסת המודל ששימשה ליצירת התשובה.

responseId string

פלט בלבד. המזהה responseId משמש לזיהוי כל תשובה.

modelStatus object (ModelStatus)

פלט בלבד. הסטטוס הנוכחי של המודל הזה.

ייצוג ב-JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

קבוצה של מטא-נתוני המשוב שההנחיה ציינה ב-GenerateContentRequest.content.

Fields
blockReason enum (BlockReason)

אופציונלי. אם ההגדרה מוגדרת, ההנחיה נחסמת ולא מוחזרים מועמדים. לנסח מחדש את ההנחיה.

safetyRatings[] object (SafetyRating)

דירוגים של בטיחות ההנחיה. לכל קטגוריה יש סיווג אחד לכל היותר.

ייצוג ב-JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

מציינת את הסיבה לחסימת ההנחיה.

טיפוסים בני מנייה (enum)
BLOCK_REASON_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
SAFETY ההנחיה נחסמה מטעמי בטיחות. בודקים את safetyRatings כדי להבין איזו קטגוריית בטיחות חסמה אותו.
OTHER ההנחיה נחסמה מסיבות לא ידועות.
BLOCKLIST ההנחיה נחסמה בגלל התנאים שכלולים ברשימת המילים החסומות.
PROHIBITED_CONTENT ההנחיה נחסמה בגלל תוכן אסור.
IMAGE_SAFETY מועמדים נחסמו בגלל תוכן לא בטוח שנוצר על ידי AI.

UsageMetadata

מטא-נתונים על השימוש באסימון של בקשת היצירה.

Fields
promptTokenCount integer

מספר הטוקנים בהנחיה. גם כשמגדירים את cachedContent, זה עדיין הגודל הכולל של ההנחיה בפועל, כלומר הוא כולל את מספר הטוקנים בתוכן שבמטמון.

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)

פלט בלבד. רמת השירות של הבקשה.

ייצוג ב-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

הסטטוס של המודל הבסיסי. השדה הזה משמש לציון השלב של המודל הבסיסי וזמן ההוצאה משימוש, אם רלוונטי.

Fields
modelStage enum (ModelStage)

השלב של המודל הבסיסי.

retirementTime string (Timestamp format)

הזמן שבו השימוש במודל יופסק.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

message string

הודעה שמסבירה את סטטוס המודל.

ייצוג ב-JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

הגדרה של השלב של המודל הבסיסי.

טיפוסים בני מנייה (enum)
MODEL_STAGE_UNSPECIFIED שלב המודל לא צוין.
UNSTABLE_EXPERIMENTAL

המודל הבסיסי עובר הרבה שינויים.

EXPERIMENTAL מודלים בשלב הזה מיועדים למטרות ניסיוניות בלבד.
PREVIEW מודלים בשלב הזה הם מתקדמים יותר ממודלים ניסיוניים.
STABLE מודלים בשלב הזה נחשבים יציבים ומוכנים לשימוש בסביבת ייצור.
LEGACY אם הדגם נמצא בשלב הזה, המשמעות היא שהדגם הזה עומד לצאת משימוש בעתיד הקרוב. רק לקוחות קיימים יכולים להשתמש במודל הזה.
DEPRECATED

המודלים בשלב הזה הוצאו משימוש. אי אפשר להשתמש במודלים האלה.

RETIRED מודלים בשלב הזה מוצאים משימוש. אי אפשר להשתמש במודלים האלה.

מועמד

תשובה פוטנציאלית שנוצרה מהמודל.

Fields
content object (Content)

פלט בלבד. תוכן שנוצר ומוחזר מהמודל.

finishReason enum (FinishReason)

אופציונלי. פלט בלבד. הסיבה להפסקת יצירת הטוקנים על ידי המודל.

אם השדה ריק, סימן שהמודל לא הפסיק ליצור טוקנים.

safetyRatings[] object (SafetyRating)

רשימה של דירוגים לגבי בטיחות תשובה אפשרית.

לכל קטגוריה יש סיווג אחד לכל היותר.

citationMetadata object (CitationMetadata)

פלט בלבד. פרטי הציטוט של מועמד שנוצר על ידי מודל.

יכול להיות שהשדה הזה יאוכלס במידע על הקראה של כל טקסט שכלול ב-content. אלה קטעים ש'מוכתבים' מתוך חומר שמוגן בזכויות יוצרים בנתוני האימון של מודל ה-LLM הבסיסי.

tokenCount integer

פלט בלבד. כמות טוקנים עבור מועמד זה.

groundingAttributions[] object (GroundingAttribution)

פלט בלבד. פרטי השיוך למקורות שתרמו לתשובה מבוססת.

השדה הזה מאוכלס עבור שיחות GenerateAnswer.

groundingMetadata object (GroundingMetadata)

פלט בלבד. מטא-נתונים של ביסוס המועמד.

השדה הזה מאוכלס עבור שיחות GenerateContent.

avgLogprobs number

פלט בלבד. הציון הממוצע של הסתברות הלוג של המועמד.

logprobsResult object (LogprobsResult)

פלט בלבד. ציוני הסתברות לוגריתמית לטוקנים של התשובה ולטוקנים המובילים

urlContextMetadata object (UrlContextMetadata)

פלט בלבד. מטא-נתונים שקשורים לכלי לאחזור הקשר של כתובת URL.

index integer

פלט בלבד. האינדקס של המועמד ברשימת המועמדים לתשובה.

finishMessage string

אופציונלי. פלט בלבד. פרטים על הסיבה להפסקת יצירת הטוקנים על ידי המודל. השדה הזה מאוכלס רק אם מוגדר finishReason.

ייצוג ב-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

הסיבה להפסקת יצירת הטוקנים על ידי המודל.

טיפוסים בני מנייה (enum)
FINISH_REASON_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
STOP נקודת עצירה טבעית של המודל או רצף עצירה שסופק.
MAX_TOKENS הגעתם למספר האסימונים המקסימלי שצוין בבקשה.
SAFETY התוכן של התשובה האפשרית סומן מטעמי בטיחות.
RECITATION התוכן של התשובה האפשרית סומן בגלל סיבות שקשורות לדיבור.
LANGUAGE התוכן של התשובה האפשרית סומן בגלל שימוש בשפה שלא נתמכת.
OTHER סיבה לא ידועה.
BLOCKLIST יצירת האסימון הופסקה כי התוכן מכיל מונחים אסורים.
PROHIBITED_CONTENT יצירת האסימון הופסקה כי יכול להיות שהוא מכיל תוכן אסור.
SPII יצירת האסימון הופסקה כי התוכן עשוי להכיל פרטים אישיים מזהים בעלי רגישות גבוהה (SPII).
MALFORMED_FUNCTION_CALL הפעלת הפונקציה שנוצרה על ידי המודל לא תקינה.
IMAGE_SAFETY יצירת הטוקנים הופסקה כי התמונות שנוצרו מכילות הפרות של כללי הבטיחות.
IMAGE_PROHIBITED_CONTENT יצירת התמונה הופסקה כי התמונות שנוצרו כוללות תוכן אסור אחר.
IMAGE_OTHER יצירת התמונה הופסקה בגלל בעיה אחרת.
NO_IMAGE המודל היה אמור ליצור תמונה, אבל לא נוצרה תמונה.
IMAGE_RECITATION יצירת התמונה הופסקה בגלל הקראה.
UNEXPECTED_TOOL_CALL המודל יצר קריאה לכלי, אבל לא הופעלו כלים בבקשה.
TOO_MANY_TOOL_CALLS המודל קרא ליותר מדי כלים ברצף, ולכן המערכת הפסיקה את הביצוע.
MISSING_THOUGHT_SIGNATURE חסרה חתימת מחשבה אחת לפחות בבקשה.
MALFORMED_RESPONSE הסתיים בגלל תגובה בפורמט שגוי.
ESCALATION הבקשה סוננה על ידי כלל להעברה לטיפול ברמה גבוהה יותר.

GroundingAttribution

שיוך למקור שתרם לתשובה.

Fields
sourceId object (AttributionSourceId)

פלט בלבד. מזהה המקור שתורם לשיוך הזה.

content object (Content)

תוכן המקור שמרכיב את הקרדיט הזה.

ייצוג ב-JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

מזהה המקור שתורם לשיוך הזה.

שדות
source Union type
הערך source יכול להיות רק אחד מהבאים:
groundingPassage object (GroundingPassageId)

מזהה של קטע מוטבע.

semanticRetrieverChunk object (SemanticRetrieverChunk)

מזהה של Chunk שאוחזר באמצעות Semantic Retriever.

ייצוג ב-JSON
{

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

GroundingPassageId

מזהה של חלק בתוך GroundingPassage.

Fields
passageId string

פלט בלבד. מזהה הקטע שתואם ל-GenerateAnswerRequest של GroundingPassage.id.

partIndex integer

פלט בלבד. האינדקס של החלק בתוך GenerateAnswerRequest של GroundingPassage.content.

ייצוג ב-JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

מזהה של Chunk שאוחזר באמצעות Semantic Retriever שצוין ב-GenerateAnswerRequest באמצעות SemanticRetrieverConfig.

Fields
source string

פלט בלבד. שם המקור שתואם לערך SemanticRetrieverConfig.source בבקשה. לדוגמה: corpora/123 או corpora/123/documents/abc

chunk string

פלט בלבד. שם ה-Chunk שמכיל את הטקסט שמשויך לרישיון. לדוגמה: corpora/123/documents/abc/chunks/xyz

ייצוג ב-JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

מטא-נתונים שמוחזרים ללקוח כשההארקה מופעלת.

Fields
groundingChunks[] object (GroundingChunk)

רשימה של הפניות תומכות שאוחזרו ממקור ההארקה שצוין. בסטרימינג, התגובה הזו מכילה רק את נתחי ההארקה שלא נכללו במטא-נתוני ההארקה של תגובות קודמות.

groundingSupports[] object (GroundingSupport)

רשימה של תמיכה בהארקה.

webSearchQueries[] string

שאילתות לחיפוש באינטרנט לחיפוש המשך באינטרנט.

imageSearchQueries[] string

שאילתות לחיפוש תמונות שמשמשות להארקה.

searchEntryPoint object (SearchEntryPoint)

אופציונלי. הזנת חיפוש Google לחיפושים באינטרנט שמתבצעים בהמשך.

retrievalMetadata object (RetrievalMetadata)

מטא-נתונים שקשורים לאחזור בתהליך ההצמדה לקרקע.

googleMapsWidgetContextToken string

אופציונלי. שם המשאב של טוקן ההקשר של הווידג'ט של Google Maps שאפשר להשתמש בו עם הווידג'ט PlacesContextElement כדי לעבד נתונים הקשריים. השדה הזה מאוכלס רק אם מופעל עיגון בעזרת מפות Google.

ייצוג ב-JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

נקודת כניסה לחיפוש Google.

Fields
renderedContent string

אופציונלי. קטע קוד של תוכן אינטרנט שאפשר להטמיע בדף אינטרנט או בתצוגת אינטרנט של אפליקציה.

sdkBlob string (bytes format)

אופציונלי. ‫JSON מקודד ב-Base64 שמייצג מערך של טופל <מונח חיפוש, כתובת URL של חיפוש>.

מחרוזת בקידוד Base64.

ייצוג ב-JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

הסמל GroundingChunk מייצג פלח של הוכחות שתומכות בתשובה של המודל. זה יכול להיות קטע מהאינטרנט, הקשר שאוחזר מקובץ או מידע ממפות Google.

שדות
chunk_type Union type
סוג המקטע. הערך chunk_type יכול להיות רק אחד מהבאים:
web object (Web)

חלק מהנתונים מהאינטרנט שמשמשים לעיגון.

image object (Image)

אופציונלי. חלק מעוגן מחיפוש תמונות.

retrievedContext object (RetrievedContext)

אופציונלי. חלק מההקשר שאוחזר על ידי כלי החיפוש בקובץ.

maps object (Maps)

אופציונלי. חלק מהעיגון ממפות Google.

ייצוג ב-JSON
{

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

פיתוח אתרים

קטע מהאינטרנט.

Fields
uri string

פלט בלבד. הפניה ל-URI של החלק.

title string

פלט בלבד. השם של החלק.

ייצוג ב-JSON
{
  "uri": string,
  "title": string
}

תמונה

קטע מחיפוש תמונות.

Fields
sourceUri string

ה-URI של דף האינטרנט לשיוך.

imageUri string

כתובת ה-URL של נכס התמונה.

title string

הכותרת של דף האינטרנט שממנו נלקחה התמונה.

domain string

דומיין הבסיס של דף האינטרנט שממנו נלקחה התמונה, למשל example.com.

ייצוג ב-JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

קטע מההקשר שאוחזר על ידי הכלי לחיפוש קבצים.

Fields
customMetadata[] object (CustomMetadata)

אופציונלי. מטא-נתונים שהמשתמש סיפק לגבי ההקשר שאוחזר.

uri string

אופציונלי. הפניה ל-URI של מסמך האחזור הסמנטי.

title string

אופציונלי. שם המסמך.

text string

אופציונלי. הטקסט של החלק.

fileSearchStore string

אופציונלי. השם של FileSearchStore שמכיל את המסמך. לדוגמה: fileSearchStores/123

pageNumber integer

אופציונלי. מספר העמוד של ההקשר שאוחזר, אם רלוונטי.

mediaId string

אופציונלי. שם המשאב של ה-blob של המדיה בתוצאות חיפוש קבצים מרובה-מוֹדָלִי. פורמט: fileSearchStores/{file_search_store_id}/media/{blobId}

ייצוג ב-JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

מטא נתונים שסופקו על ידי המשתמש לגבי GroundingFact.

Fields
key string

המפתח של המטא-נתונים.

value Union type
הערך של המטא-נתונים. יכול להיות מחרוזת, רשימה של מחרוזות או מספר. הערך value יכול להיות רק אחד מהבאים:
stringValue string

אופציונלי. ערך המחרוזת של המטא-נתונים.

stringListValue object (StringList)

אופציונלי. רשימה של ערכי מחרוזת למטא-נתונים.

numericValue number

אופציונלי. הערך המספרי של המטא-נתונים. הטווח הצפוי של הערך הזה תלוי בkey הספציפי שבו נעשה שימוש.

ייצוג ב-JSON
{
  "key": string,

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

StringList

רשימה של ערכי מחרוזת.

Fields
values[] string

ערכי המחרוזת של הרשימה.

ייצוג ב-JSON
{
  "values": [
    string
  ]
}

מפות

חלק מעיגון מנתוני מפות Google. כל מקטע במפות Google תואם למקום אחד.

Fields
uri string

הפניה ל-URI של המקום.

title string

שם המקום.

text string

תיאור טקסטואלי של התשובה לגבי המקום.

placeId string

מזהה המקום בפורמט places/{placeId}. משתמשים יכולים להשתמש במזהה הזה כדי לחפש את המקום.

placeAnswerSources object (PlaceAnswerSources)

מקורות שמספקים תשובות לגבי התכונות של מקום מסוים במפות Google.

ייצוג ב-JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

אוסף של מקורות שמספקים תשובות לגבי התכונות של מקום מסוים במפות Google. כל הודעת PlaceAnswerSources מתייחסת למקום ספציפי במפות Google. הכלי של מפות Google השתמש במקורות האלה כדי לענות על שאלות לגבי מאפיינים של המקום (לדוגמה: "יש בבר פו Wi-Fi?" או "האם בר פו נגיש לכיסא גלגלים?"). בשלב הזה אנחנו תומכים רק בקטעי מידע מביקורות כמקורות.

Fields
reviewSnippets[] object (ReviewSnippet)

קטעי ביקורות שמשמשים ליצירת תשובות לגבי התכונות של מקום מסוים במפות Google.

ייצוג ב-JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

תקציר של קטע מביקורת של משתמש שעונה על שאלה לגבי התכונות של מקום ספציפי במפות Google.

Fields
reviewId string

המזהה של קטע הביקורת.

googleMapsUri string

קישור שמתאים לביקורת של המשתמש במפות Google.

title string

כותרת הביקורת.

ייצוג ב-JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

תמיכה בנקודת התייחסות.

Fields
groundingChunkIndices[] integer

אופציונלי. רשימה של אינדקסים (בתוך 'grounding_chunk' ב-response.candidate.grounding_metadata) שמציינים את הציטוטים שמשויכים לטענה. לדוגמה, [1,3,4] פירושו שהתוכן שאוחזר ושמיוחס לטענה הוא grounding_chunk[1],‏ grounding_chunk[3],‏ grounding_chunk[4]. אם התשובה היא סטרימינג, הערכים של groundingChunkIndices מתייחסים לאינדקסים בכל התשובות. באחריות הלקוח לצבור את נתחי ההארקה מכל התשובות (תוך שמירה על אותו סדר).

confidenceScores[] number

אופציונלי. ציון המהימנות של ההפניות לתמיכה. הערך נע בין 0 ל-1. ‫1 הוא הדירוג שמשקף את מידת הביטחון הגבוהה ביותר. הגודל של הרשימה הזו צריך להיות זהה לזה של groundingChunkIndices.

renderedParts[] integer

פלט בלבד. אינדקסים בשדה parts של תוכן המועמד. האינדקסים האלה מציינים אילו חלקים שעברו עיבוד משויכים למקור התמיכה הזה.

segment object (Segment)

פלח התוכן שאליו שייך התמיכה הזו.

ייצוג ב-JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Segment

קטע מהתוכן.

Fields
partIndex integer

האינדקס של אובייקט Part בתוך אובייקט Content ההורה שלו.

startIndex integer

אינדקס ההתחלה בחלק הנתון, נמדד בבייטים. ההיסט מתחילת החלק, כולל, החל מאפס.

endIndex integer

אינדקס הסיום בחלק הנתון, נמדד בבייטים. ההיסט מתחיל מאפס, לא כולל, מתחילת החלק.

text string

הטקסט שמתאים למקטע מהתשובה.

ייצוג ב-JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

מטא-נתונים שקשורים לאחזור בתהליך ההצמדה לקרקע.

Fields
googleSearchDynamicRetrievalScore number

אופציונלי. ציון שמציין את הסבירות לכך שמידע מחיפוש Google יעזור לענות על ההנחיה. הציון הוא בטווח [0, 1], כאשר 0 הוא הסביר ביותר ו-1 הוא הכי פחות סביר. הניקוד הזה מאוכלס רק כשמופעלת האפשרות 'הארקה של חיפוש Google' ואחזור דינמי. הערך הזה מושווה לסף כדי לקבוע אם להפעיל חיפוש ב-Google.

ייצוג ב-JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

תוצאת Logprobs

Fields
topCandidates[] object (TopCandidates)

אורך = המספר הכולל של שלבי הפענוח.

chosenCandidates[] object (Candidate)

אורך = המספר הכולל של שלבי הפענוח. יכול להיות שהמועמדים שנבחרו יופיעו ברשימה topCandidates, ויכול להיות שלא.

logProbabilitySum number

סכום ההסתברויות הלוגריתמיות של כל הטוקנים.

ייצוג ב-JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

מועמדים עם הסתברויות יומן גבוהות בכל שלב פענוח.

Fields
candidates[] object (Candidate)

הנתונים ממוינים לפי הסתברות יומן בסדר יורד.

ייצוג ב-JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

מועמד

מועמד לאסימון ולציון logprobs.

Fields
token string

ערך המחרוזת של הטוקן של המועמד.

tokenId integer

ערך מזהה האסימון של המועמד.

logProbability number

ההסתברות הלוגריתמית של המועמד.

ייצוג ב-JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

מטא-נתונים שקשורים לכלי לאחזור הקשר של כתובת URL.

Fields
urlMetadata[] object (UrlMetadata)

רשימה של כתובות URL בהקשר.

ייצוג ב-JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

ההקשר של אחזור כתובת URL יחידה.

Fields
retrievedUrl string

כתובת ה-URL שאותרה על ידי הכלי.

urlRetrievalStatus enum (UrlRetrievalStatus)

הסטטוס של אחזור כתובת ה-URL.

ייצוג ב-JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

הסטטוס של אחזור כתובת ה-URL.

טיפוסים בני מנייה (enum)
URL_RETRIEVAL_STATUS_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
URL_RETRIEVAL_STATUS_SUCCESS השליפה של כתובת ה-URL בוצעה בהצלחה.
URL_RETRIEVAL_STATUS_ERROR אחזור כתובת ה-URL נכשל בגלל שגיאה.
URL_RETRIEVAL_STATUS_PAYWALL אחזור כתובת ה-URL נכשל כי התוכן מוגן על ידי חומת תשלום.
URL_RETRIEVAL_STATUS_UNSAFE השליפה של כתובת ה-URL נכשלה כי התוכן לא בטוח.

CitationMetadata

אוסף של שיוכים למקורות של קטע תוכן.

Fields
citationSources[] object (CitationSource)

ציטוטים של מקורות לתשובה ספציפית.

ייצוג ב-JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

ציטוט של מקור לחלק מתשובה ספציפית.

Fields
startIndex integer

אופציונלי. תחילת פלח התשובה שמשויך למקור הזה.

האינדקס מציין את תחילת הפלח, שנמדד בבייטים.

endIndex integer

אופציונלי. סיום הקטע המשויך, לא כולל.

uri string

אופציונלי. ה-URI שמשויך כמקור לחלק מהטקסט.

license string

אופציונלי. רישיון לפרויקט ב-GitHub שמוגדר כמקור לקטע.

חובה לציין פרטי רישיון כשמצטטים קוד.

ייצוג ב-JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

הקטגוריה של הסיווג.

הקטגוריות האלה כוללות סוגים שונים של נזקים שמפתחים עשויים לרצות להתאים.

טיפוסים בני מנייה (enum)
HARM_CATEGORY_UNSPECIFIED הקטגוריה לא צוינה.
HARM_CATEGORY_DEROGATORY PaLM – תגובות שליליות או מזיקות שמטרגטות זהות או מאפיין מוגן.
HARM_CATEGORY_TOXICITY PaLM – תוכן גס, מזלזל או בוטה.
HARM_CATEGORY_VIOLENCE PaLM – תיאור של תרחישים שמציגים אלימות נגד אדם פרטי או קבוצה, או תיאורים כלליים של שפיכות דמים.
HARM_CATEGORY_SEXUAL PaLM – מכיל אזכורים של מעשים מיניים או תוכן מגונה אחר.
HARM_CATEGORY_MEDICAL PaLM – מקדם עצות רפואיות שלא נבדקו.
HARM_CATEGORY_DANGEROUS PaLM – תוכן מסוכן שמקדם גרימת נזק, מעודד גרימת נזק או עוזר לבצע פעולות מזיקות.
HARM_CATEGORY_HARASSMENT Gemini – תוכן שמטרתו הטרדה.
HARM_CATEGORY_HATE_SPEECH Gemini – דברי שטנה ותוכן.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini – תוכן מיני בוטה.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini – תוכן מסוכן.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini – תוכן שעשוי לשמש לפגיעה ביושרה האזרחית. המאפיין הזה יצא משימוש. במקומו צריך להשתמש ב-enableEnhancedCivicAnswers.

HARM_CATEGORY_JAILBREAK Gemini – הנחיות שמנסות לעקוף או לחתור תחת הנחיות הבטיחות של המודל (ניסיונות פריצה).

ModalityTokenCount

מייצג מידע על ספירת טוקנים עבור מודאליות אחת.

Fields
modality enum (Modality)

האופן שבו משתמשים בטוקן שמשויך לספירה הזו.

tokenCount integer

מספר הטוקנים.

ייצוג ב-JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

אופן השימוש

אופן הפעולה של חלקים בתוכן

טיפוסים בני מנייה (enum)
MODALITY_UNSPECIFIED אופן השימוש לא צוין.
TEXT טקסט פשוט.
IMAGE תמונה.
VIDEO סרטון.
AUDIO אודיו.
DOCUMENT מסמך, למשל PDF.

SafetyRating

דירוג הבטיחות של קטע תוכן.

סיווג הבטיחות מכיל את קטגוריית הנזק ואת רמת הסבירות לנזק בקטגוריה הזו עבור פריט תוכן. התוכן מסווג לפי בטיחות במספר קטגוריות של נזק, וההסתברות לסיווג הנזק כלולה כאן.

Fields
category enum (HarmCategory)

חובה. הקטגוריה של הדירוג הזה.

probability enum (HarmProbability)

חובה. הסבירות לפגיעה בגלל התוכן הזה.

blocked boolean

האם התוכן הזה נחסם בגלל הסיווג הזה?

ייצוג ב-JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

הסבירות שחלק מהתוכן מזיק.

מערכת הסיווג נותנת את ההסתברות שהתוכן לא בטוח. הסיווג הזה לא מציין את חומרת הנזק שנגרם מתוכן מסוים.

טיפוסים בני מנייה (enum)
HARM_PROBABILITY_UNSPECIFIED לא צוין הסתברות.
NEGLIGIBLE הסיכוי שהתוכן לא בטוח הוא זניח.
LOW הסיכוי שהתוכן לא בטוח הוא נמוך.
MEDIUM יש סיכוי בינוני שהתוכן לא בטוח.
HIGH יש סיכוי גבוה שהתוכן לא בטוח.

SafetySetting

הגדרת בטיחות שמשפיעה על התנהגות החסימה של בטיחות.

העברת הגדרת בטיחות לקטגוריה משנה את ההסתברות המותרת לחסימת תוכן.

Fields
category enum (HarmCategory)

חובה. הקטגוריה של ההגדרה הזו.

threshold enum (HarmBlockThreshold)

חובה. קובעת את סף ההסתברות שמעליו נחסמת פגיעה.

ייצוג ב-JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

חסימה ברמת הסתברות מסוימת ומעלה.

טיפוסים בני מנייה (enum)
HARM_BLOCK_THRESHOLD_UNSPECIFIED לא צוין סף.
BLOCK_LOW_AND_ABOVE תוכן עם סיווג NEGLIGIBLE (זניח) יהיה מותר.
BLOCK_MEDIUM_AND_ABOVE התוכן עם סיווגים של NEGLIGIBLE ו-LOW יהיה מותר.
BLOCK_ONLY_HIGH תוכן עם רמת סיכון נמוכה, בינונית או זניחה מותר.
BLOCK_NONE כל התוכן יאושר.
OFF משביתים את מסנן הבטיחות.

ServiceTier

רמת השירות של הבקשה.

טיפוסים בני מנייה (enum)
unspecified מסלול שירות שמוגדר כברירת מחדל, שהוא Standard.
standard רמת שירות רגילה.
flex רמת השירות Flex.
priority רמת שירות בעדיפות גבוהה.

תוכן

סוג הנתונים המובְנים הבסיסי שמכיל תוכן של הודעה שמורכב מכמה חלקים.

Content כולל שדה role שמציין את יוצר ה-Content ושדה parts שמכיל נתונים מרובי חלקים שמכילים את תוכן תור ההודעות.

Fields
parts[] object (Part)

מסודרות Parts שמרכיבות הודעה אחת. יכול להיות שלחלקים יהיו סוגי MIME שונים.

role string

אופציונלי. הגורם שהפיק את התוכן. הערך חייב להיות user או model.

מומלץ להגדיר את הפרמטר הזה לשיחות רב-שלביות, אחרת אפשר להשאיר אותו ריק או לא מוגדר.

ייצוג ב-JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

חלק

סוג נתונים שמכיל מדיה שהיא חלק מהודעה Content מרובת חלקים.

Part מורכב מנתונים שמשויך אליהם סוג נתונים. Part יכול להכיל רק סוג אחד מבין הסוגים הקבילים שמופיעים בPart.data.

אם השדה inlineData מלא בבייטים גולמיים, ל-Part צריך להיות סוג MIME קבוע של IANA שמזהה את הסוג וסוג המשנה של המדיה.

Fields
thought boolean

אופציונלי. מציין אם החלק נוצר על ידי המודל.

thoughtSignature string (bytes format)

אופציונלי. חתימה אטומה למחשבה, כדי שאפשר יהיה לעשות בה שימוש חוזר בבקשות הבאות.

מחרוזת בקידוד Base64.

partMetadata object (Struct format)

מטא-נתונים בהתאמה אישית שמשויכים לחלק. סוכנים שמשתמשים ב-genai.Part כייצוג תוכן צריכים לעקוב אחרי המידע הנוסף. לדוגמה, זה יכול להיות השם של קובץ או מקור שממנו החלק נוצר, או דרך לבצע מולטיפלקס של כמה זרמי חלקים.

mediaResolution object (MediaResolution)

אופציונלי. רזולוציית המדיה של קלט המדיה.

mediaProcessing enum (MediaProcessing)

אופציונלי. איך המודל מעבד את המדיה של החלק הזה כדי להבין אותה. המאפיין רלוונטי רק לחלקי סרטון (inlineData או fileData עם סוג MIME של סרטון). המערכת מתעלמת מהשדה הזה בחלקים שאינם סרטונים.

data Union type
הערך data יכול להיות רק אחד מהבאים:
text string

טקסט מוטבע.

inlineData object (Blob)

בייטים של מדיה בתוך הטקסט.

functionCall object (FunctionCall)

הפונקציה מחזירה את הערך FunctionCall שחזתה המודל, שמכיל מחרוזת שמייצגת את FunctionDeclaration.name עם הארגומנטים והערכים שלהם.

functionResponse object (FunctionResponse)

הפלט של FunctionCall שמכיל מחרוזת שמייצגת את FunctionDeclaration.name ואובייקט JSON מובנה שמכיל פלט מהפונקציה משמש כהקשר למודל.

fileData object (FileData)

נתונים שמבוססים על URI.

executableCode object (ExecutableCode)

קוד שנוצר על ידי המודל ומיועד להרצה.

codeExecutionResult object (CodeExecutionResult)

התוצאה של הפעלת ExecutableCode.

toolCall object (ToolCall)

קריאה לכלי בצד השרת. השדה הזה יאוכלס כשהמודל חוזה הפעלה של כלי שצריך להפעיל בשרת. הלקוח אמור להחזיר את ההודעה הזו ל-API.

toolResponse object (ToolResponse)

הפלט מהרצה של ToolCall בצד השרת. השדה הזה מאוכלס על ידי הלקוח בתוצאות של הפעלת ToolCall התואם.

metadata Union type
אמצעי בקרה לעיבוד מקדים נוסף של נתונים. הערך metadata יכול להיות רק אחד מהבאים:
videoMetadata object (VideoMetadata)

אופציונלי. מטא-נתונים של סרטונים. צריך לציין את המטא-נתונים רק כשנתוני הסרטון מוצגים ב-inlineData או ב-fileData.

ייצוג ב-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

בייטים של מדיה גולמית.

אסור לשלוח טקסט כבייטים גולמיים, צריך להשתמש בשדה 'text'.

Fields
mimeType string

סוג ה-MIME התקני של IANA של נתוני המקור. דוגמאות לסוגים נתמכים: – תמונות: image/png, ‏ image/jpeg, ‏ image/jpg, ‏ image/webp, ‏ image/heic, ‏ image/heif, ‏ image/gif, ‏ image/avif – אודיו: audio/*, ‏ video/audio/s16le, ‏ video/audio/wav – וידאו: video/* – טקסט: 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 – אפליקציות: application/x-javascript, ‏ application/x-typescript, ‏ application/x-python-code, ‏ application/json, ‏ application/x-ipynb+json, ‏ application/rtf, ‏ application/pdf למידע נוסף, אפשר לעיין במאמר בנושא פורמטים נתמכים של קבצים. //

data string (bytes format)

בייטים גולמיים לפורמטים של מדיה.

מחרוזת בקידוד Base64.

ייצוג ב-JSON
{
  "mimeType": string,
  "data": string
}

FunctionCall

תחזית FunctionCall שמוחזרת מהמודל ומכילה מחרוזת שמייצגת את FunctionDeclaration.name עם הארגומנטים והערכים שלהם.

Fields
id string

אופציונלי. מזהה ייחודי של הקריאה לפונקציה. אם השדה הזה מאוכלס, הלקוח יבצע את functionCall ויחזיר את התשובה עם id תואם.

name string

חובה. השם של הפונקציה שרוצים להפעיל. הערך חייב להיות a-z, ‏ A-Z, ‏ 0-9, או להכיל קווים תחתונים ומקפים, עם אורך מקסימלי של 128 תווים.

args object (Struct format)

אופציונלי. הפרמטרים והערכים של הפונקציה בפורמט אובייקט JSON.

ייצוג ב-JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

פלט התוצאה מ-FunctionCall שמכיל מחרוזת שמייצגת את FunctionDeclaration.name ואובייקט JSON מובנה שמכיל פלט מהפונקציה, משמש כהקשר למודל. התג הזה צריך להכיל את התוצאה של FunctionCall שנוצרה על סמך חיזוי של המודל.

Fields
id string

אופציונלי. המזהה של קריאת הפונקציה שאליה מתייחסת התגובה. השדה מאוכלס על ידי הלקוח כדי להתאים לקריאה המתאימה לפונקציה id.

name string

חובה. השם של הפונקציה שרוצים להפעיל. הערך חייב להיות a-z, ‏ A-Z, ‏ 0-9, או להכיל קווים תחתונים ומקפים, עם אורך מקסימלי של 128 תווים.

response object (Struct format)

חובה. התגובה של הפונקציה בפורמט אובייקט JSON. המשתמשים יכולים להשתמש בכל מפתח שמתאים לתחביר של הפונקציה כדי להחזיר את הפלט של הפונקציה, למשל'פלט', 'תוצאה' וכו'. בפרט, אם קריאת הפונקציה נכשלה, התגובה יכולה לכלול מפתח 'שגיאה' כדי להחזיר פרטי שגיאה למודל.

אפשר לכלול מולטימדיה באמצעות אובייקט משנה שמכיל מפתח יחיד בשם ‎$ref, שהערך שלו הוא inlineData.display_name של FunctionResponsePart שמכיל את המולטימדיה. מידע נוסף זמין בכתובת https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

אופציונלי. מסודרים Parts שמרכיבים תגובה של פונקציה. יכול להיות שלחלקים יהיו סוגי MIME שונים של IANA.

willContinue boolean

אופציונלי. אות לכך שהבקשה להפעלת הפונקציה נמשכת, ויוחזרו עוד תשובות, מה שהופך את הבקשה להפעלת הפונקציה לגנרטור. ההגדרה הזו רלוונטית רק להפעלות של פונקציות מסוג NON_BLOCKING, אחרת המערכת מתעלמת ממנה. אם המדיניות מוגדרת כ-false, תשובות עתידיות לא ייכללו. מותר להחזיר response ריק עם willContinue=False כדי לציין שקריאת הפונקציה הסתיימה. יכול להיות שהפעולה הזו עדיין תפעיל את יצירת המודל. כדי למנוע הפעלה של יצירה ולסיים את הקריאה לפונקציה, צריך להגדיר בנוסף את scheduling ל-SILENT.

scheduling enum (Scheduling)

אופציונלי. מציינים איך לתזמן את התשובה בשיחה. ההגדרה רלוונטית רק להפעלות של פונקציות מסוג NON_BLOCKING, אחרת המערכת מתעלמת ממנה. ברירת המחדל היא WHEN_IDLE.

ייצוג ב-JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

סוג נתונים שמכיל מדיה שמהווה חלק מהודעה ב-FunctionResponse.

FunctionResponsePart מורכב מנתונים שמשויך אליהם סוג נתונים. FunctionResponsePart יכול להכיל רק סוג אחד מבין הסוגים הקבילים שמופיעים בFunctionResponsePart.data.

אם השדה inlineData מלא בבייטים גולמיים, FunctionResponsePart חייב לכלול סוג MIME קבוע של IANA שמזהה את הסוג ותת-הסוג של המדיה.

שדות
data Union type
הנתונים של חלק התגובה של הפונקציה. הערך data יכול להיות רק אחד מהבאים:
inlineData object (FunctionResponseBlob)

בייטים של מדיה בתוך הטקסט.

ייצוג ב-JSON
{

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

FunctionResponseBlob

בייטים של מדיה גולמית בתגובה של הפונקציה.

אסור לשלוח טקסט כבייטים גולמיים, צריך להשתמש בשדה FunctionResponse.response.

Fields
mimeType string

סוג ה-MIME התקני של IANA של נתוני המקור. דוגמאות: ‫- image/png ‫- image/jpeg אם תספקו סוג MIME שלא נתמך, תוחזר שגיאה. רשימה מלאה של הסוגים הנתמכים זמינה במאמר פורמטים נתמכים של קבצים.

data string (bytes format)

בייטים גולמיים לפורמטים של מדיה.

מחרוזת בקידוד Base64.

ייצוג ב-JSON
{
  "mimeType": string,
  "data": string
}

תזמון

מציינים איך לתזמן את התשובה בשיחה.

טיפוסים בני מנייה (enum)
SCHEDULING_UNSPECIFIED הערך הזה לא בשימוש.
SILENT רק תוסיף את התוצאה להקשר של השיחה, אל תקטיע או תפעיל יצירה.
WHEN_IDLE להוסיף את התוצאה להקשר של השיחה ולתת הנחיה ליצור פלט בלי להפריע ליצירה שמתבצעת.
INTERRUPT להוסיף את התוצאה להקשר של השיחה, להפסיק את היצירה המתמשכת ולבקש ליצור פלט.

FileData

נתונים שמבוססים על URI.

Fields
mimeType string

אופציונלי. סוג ה-MIME התקני של IANA של נתוני המקור.

fileUri string

חובה. URI.

ייצוג ב-JSON
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

קוד שנוצר על ידי המודל ומיועד להרצה, והתוצאה שמוחזרת למודל.

נוצר רק כשמשתמשים בכלי CodeExecution, שבו הקוד יופעל באופן אוטומטי, וגם ייווצר CodeExecutionResult תואם.

Fields
id string

אופציונלי. המזהה הייחודי של החלק ExecutableCode. השרת מחזיר את CodeExecutionResult עם id התואם.

language enum (Language)

חובה. שפת התכנות של code.

code string

חובה. הקוד שיופעל.

ייצוג ב-JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

שפה

שפות התכנות הנתמכות לקוד שנוצר.

טיפוסים בני מנייה (enum)
LANGUAGE_UNSPECIFIED לא נבחרה שפה. אין להשתמש בערך הזה.
PYTHON ‫Python >= 3.10, עם numpy ו-simpy. שפת ברירת המחדל היא Python.

CodeExecutionResult

התוצאה של הפעלת ExecutableCode.

נוצר רק כשמשתמשים בכלי CodeExecution.

Fields
id string

אופציונלי. המזהה של החלק ExecutableCode שאליו מתייחסת התוצאה הזו. הערך מאוכלס רק אם לרכיב ExecutableCode התואם יש מזהה.

outcome enum (Outcome)

חובה. תוצאת הרצת הקוד.

output string

אופציונלי. התשובה מכילה את הפלט הרגיל (stdout) אם ביצוע הקוד מצליח, או את הפלט לשגיאות (stderr) או תיאור אחר אם הביצוע נכשל.

ייצוג ב-JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

תוצאה

ספירה של התוצאות האפשריות של הרצת הקוד.

טיפוסים בני מנייה (enum)
OUTCOME_UNSPECIFIED הסטטוס לא צוין. אין להשתמש בערך הזה.
OUTCOME_OK ביצוע הקוד הושלם בהצלחה. ‫output מכיל את הפלט הרגיל (stdout), אם יש כזה.
OUTCOME_FAILED ההרצה של הקוד נכשלה. ‫output מכיל את stderr ו-stdout, אם יש.
OUTCOME_DEADLINE_EXCEEDED ההרצה של הקוד נמשכה יותר מדי זמן והיא בוטלה. יכול להיות שיהיה output חלקי, אבל לא בהכרח.

ToolCall

ToolCall צד השרת שהוחזרה מהמודל. ההודעה הזו מכילה מידע על כלי שהמודל רוצה להפעיל. הלקוח לא אמור להפעיל את ToolCall הזה. במקום זאת, הלקוח צריך להעביר את ToolCall בחזרה ל-API בתור הבא בהודעה Content, יחד עם ToolResponse התואם.

Fields
id string

אופציונלי. מזהה ייחודי של קריאה לכלי. השרת מחזיר את התגובה של הכלי עם id התואם.

toolName string

אופציונלי. שם הכלי שהופעל.

toolType enum (ToolType)

חובה. סוג הכלי שהופעל.

args object (Struct format)

אופציונלי. הארגומנטים של הקריאה לכלי. דוגמה: {"arg1" : "value1", "arg2" : "value2" , ...}

ייצוג ב-JSON
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

סוג הכלי בקריאה לפונקציה.

טיפוסים בני מנייה (enum)
TOOL_TYPE_UNSPECIFIED סוג הכלי לא צוין.
GOOGLE_SEARCH_WEB כלי חיפוש Google, מיפוי ל-Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE כלי לחיפוש תמונות, ממופה ל-Tool.google_search.search_types.image_search.
URL_CONTEXT כלי ההקשר של כתובת URL, ממופה אל Tool.url_context.
GOOGLE_MAPS כלי מפות Google, maps אל Tool.google_maps.

ToolResponse

הפלט מהרצה של ToolCall בצד השרת. ההודעה הזו מכילה את התוצאות של הפעלת כלי שהופעלה על ידי ToolCall מהמודל. הלקוח צריך להעביר את ToolResponse בחזרה ל-API בתור הבא בהודעה Content, יחד עם ToolCall התואם.

Fields
id string

אופציונלי. המזהה של קריאת הכלי שאליה מתייחסת התשובה הזו.

toolType enum (ToolType)

חובה. סוג הכלי שהופעל, בהתאם ל-toolType ב-ToolCall המתאים.

response object (Struct format)

אופציונלי. התשובה של הכלי.

ייצוג ב-JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

הוצא משימוש: במקומו, צריך להשתמש ב-GenerateContentRequest.processing_options. המטא-נתונים מתארים את תוכן הווידאו של הקלט.

Fields
startOffset string (Duration format)

אופציונלי. ההפרש להתחלת הסרטון.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

endOffset string (Duration format)

אופציונלי. ההיסט של סוף הסרטון.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

fps number

אופציונלי. קצב הפריימים של הסרטון שנשלח למודל. אם לא מציינים ערך, ברירת המחדל היא 1.0. טווח ה-fps הוא (0.0, 24.0].

ייצוג ב-JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

רזולוציית המדיה ליצירת טוקנים.

שדות
value Union type
רמת הרזולוציה של המדיה. הערך value יכול להיות רק אחד מהבאים:
level enum (Level)

איכות הטוקניזציה שנעשה בה שימוש במדיה מסוימת. לקבלת תמיכה ב-Gemini API .

ייצוג ב-JSON
{

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

רמה

רמת הרזולוציה של המדיה.

טיפוסים בני מנייה (enum)
MEDIA_RESOLUTION_UNSPECIFIED לא הוגדרה רזולוציה למדיה.
MEDIA_RESOLUTION_LOW הרזולוציה של המדיה מוגדרת לנמוכה.
MEDIA_RESOLUTION_MEDIUM רזולוציית המדיה מוגדרת לבינונית.
MEDIA_RESOLUTION_HIGH רזולוציית המדיה מוגדרת כגבוהה.
MEDIA_RESOLUTION_ULTRA_HIGH רזולוציית המדיה מוגדרת לרזולוציה גבוהה במיוחד.

MediaProcessing

איך המודל מעבד מדיה כקלט כדי להבין אותה.

טיפוסים בני מנייה (enum)
MEDIA_PROCESSING_UNSPECIFIED ברירת מחדל. העיבוד מתבצע בהתאם למודל הספציפי (‫3.5 Pro+ -> AGENTIC, מודלים ישנים יותר -> STATIC).
STATIC חילוץ פריימים בקצב קבוע. כל המסגרות מוצבות בהקשר.
AGENTIC ניווט דינמי מבוסס-מודל. מומלץ לרוב תרחישי השימוש.

סביבה

סביבת הפעלה של סוכן.

Fields
id string

חובה. פלט בלבד. המזהה של הסביבה.

sources[] object (Source)

מקורות שיועלו לסביבה.

created string

פלט בלבד. השעה שבה הסביבה נוצרה בפורמט ISO 8601‏ (YYYY-MM-DDThh:mm:ssZ).

updated string

פלט בלבד. השעה שבה הסביבה עודכנה לאחרונה בפורמט ISO 8601‏ (YYYY-MM-DDThh:mm:ssZ).

lastAccessed string

פלט בלבד. השעה שבה הייתה גישה אחרונה לסביבה בפורמט ISO 8601‏ (YYYY-MM-DDThh:mm:ssZ).

status enum (Status)

פלט בלבד. הסטטוס של קונטיינר הסביבה.

fileCount string (int64 format)

פלט בלבד. מספר הקבצים בסביבה, פלט בלבד.

sizeBytes string (int64 format)

פלט בלבד. הגודל הכולל של קובצי הסביבה בבייטים, פלט בלבד.

network Union type
הגדרת הרשת של הסביבה. הערך network יכול להיות רק אחד מהבאים:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

התרה של דומיינים ספציפיים בלבד.

networkMode enum (NetworkMode)

מצב יציאה מהרשת.

ייצוג ב-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
}

סטטוס

הסטטוס של הסביבה.

טיפוסים בני מנייה (enum)
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

מצב יציאה מהרשת להגדרות שלא נכללות ברשימת ההיתרים.

טיפוסים בני מנייה (enum)
NETWORK_MODE_UNSPECIFIED ערך ברירת המחדל. לא בשימוש.
DISABLED כל תעבורת הנתונים היוצאת מהרשת חסומה.

סכימה

אובייקט Schema מאפשר להגדיר את סוגי נתוני הקלט והפלט. הסוגים האלה יכולים להיות אובייקטים, אבל גם פרימיטיבים ומערכים. מייצג קבוצת משנה נבחרת של אובייקט סכימה של OpenAPI 3.0.

Fields
type enum (Type)

חובה. סוג הנתונים.

format string

אופציונלי. הפורמט של הנתונים. מותר להשתמש בכל ערך, אבל ברוב המקרים לא מופעלת פונקציונליות מיוחדת.

title string

אופציונלי. השם של הסכימה.

description string

אופציונלי. תיאור קצר של הפרמטר. יכול להיות שיהיו בה דוגמאות לשימוש. התיאור של הפרמטר יכול להיות בפורמט Markdown.

nullable boolean

אופציונלי. מציין אם הערך יכול להיות null.

enum[] string

אופציונלי. ערכים אפשריים של רכיב מסוג STRING עם פורמט enum. לדוגמה, אפשר להגדיר כיוון Enum כך : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

אופציונלי. המספר המקסימלי של הרכיבים עבור Type.ARRAY.

minItems string (int64 format)

אופציונלי. מספר המינימום של הרכיבים עבור Type.ARRAY.

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

אופציונלי. מאפיינים של Type.OBJECT.

אובייקט שמכיל רשימה של "key": value זוגות. דוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

אופציונלי. מאפייני חובה של Type.OBJECT.

minProperties string (int64 format)

אופציונלי. מספר המינימלי של המאפיינים עבור Type.OBJECT.

maxProperties string (int64 format)

אופציונלי. מספר המאפיינים המקסימלי עבור Type.OBJECT.

minLength string (int64 format)

אופציונלי. שדות סכימה של סוג STRING אורך מינימלי של סוג STRING

maxLength string (int64 format)

אופציונלי. האורך המקסימלי של Type.STRING

pattern string

אופציונלי. תבנית של Type.STRING להגבלת מחרוזת לביטוי רגולרי.

example value (Value format)

אופציונלי. דוגמה לאובייקט. השדה יאוכלס רק אם האובייקט הוא השורש.

anyOf[] object (Schema)

אופציונלי. הערך צריך להיות מאומת מול כל אחת (אחת או יותר) מסכימות המשנה ברשימה.

propertyOrdering[] string

אופציונלי. סדר המאפיינים. זה לא שדה רגיל במפרט של Open API. הוא משמש לקביעת סדר המאפיינים בתגובה.

default value (Value format)

אופציונלי. ערך ברירת המחדל של השדה. לפי סכימת JSON, השדה הזה מיועד לגנרטורים של תיעוד ולא משפיע על האימות. לכן הוא נכלל כאן ומתעלמים ממנו, כדי שמפתחים ששולחים סכימות עם שדה default לא יקבלו שגיאות של שדה לא מוכר.

items object (Schema)

אופציונלי. סכימה של רכיבים מסוג ARRAY.

minimum number

אופציונלי. שדות סכמה לסוגים INTEGER ו-NUMBER הערך המינימלי של Type.INTEGER ו-Type.NUMBER

maximum number

אופציונלי. הערך המקסימלי של Type.INTEGER ו-Type.NUMBER

ייצוג ב-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
}

סוג

הסוג מכיל את רשימת סוגי הנתונים של OpenAPI כפי שהוגדרו בכתובת https://spec.openapis.org/oas/v3.0.3#data-types

טיפוסים בני מנייה (enum)
TYPE_UNSPECIFIED לא צוין, אין להשתמש.
STRING סוג המחרוזת.
NUMBER סוג המספר.
INTEGER סוג Integer.
BOOLEAN טיפוס בוליאני.
ARRAY סוג המערך.
OBJECT סוג האובייקט.
NULL סוג Null.

כלי

פרטי כלי שהמודל עשוי להשתמש בהם כדי ליצור תשובה.

Tool הוא קטע קוד שמאפשר למערכת ליצור אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה או סדרת פעולות, שלא נכללות בידע של המודל או בהיקף שלו.

המזהה הבא: 17

Fields
functionDeclarations[] object (FunctionDeclaration)

אופציונלי. רשימה של FunctionDeclarations שזמינות למודל שאפשר להשתמש בהן לקריאה לפונקציות.

המודל או המערכת לא מבצעים את הפונקציה. במקום זאת, הפונקציה המוגדרת עשויה להיות מוחזרת כ-FunctionCall עם ארגומנטים לצד הלקוח לצורך ביצוע. יכול להיות שהמודל יחליט להפעיל קבוצת משנה של הפונקציות האלה על ידי מילוי FunctionCall בתגובה. התור הבא בשיחה עשוי להכיל FunctionResponse עם הקשר ליצירת Content.role 'פונקציה' לתור הבא של המודל.

googleSearchRetrieval object (GoogleSearchRetrieval)

אופציונלי. כלי לאחזור מידע שמבוסס על חיפוש Google.

codeExecution object (CodeExecution)

אופציונלי. ההגדרה הזו מאפשרת למודל להריץ קוד כחלק מהיצירה.

computerUse object (ComputerUse)

אופציונלי. כלי לתמיכה באינטראקציה של המודל ישירות עם המחשב. אם האפשרות הזו מופעלת, המערכת מאכלסת באופן אוטומטי הצהרות פונקציה ספציפיות לשימוש במחשב.

urlContext object (UrlContext)

אופציונלי. כלי לתמיכה באחזור הקשר של כתובת URL.

mcpServers[] object (McpServer)

אופציונלי. שרתי MCP לחיבור.

googleMaps object (GoogleMaps)

אופציונלי. כלי שמאפשר להוסיף לתשובה של המודל הקשר גיאוספציאלי שקשור לשאילתה של המשתמש.

ייצוג ב-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

ייצוג מובנה של הצהרת פונקציה כמוגדר במפרט OpenAPI 3.03. ההצהרה הזו כוללת את שם הפונקציה והפרמטרים שלה. ה-FunctionDeclaration הזה הוא ייצוג של בלוק קוד שאפשר להשתמש בו כTool על ידי המודל, והוא מופעל על ידי הלקוח.

Fields
name string

חובה. שם הפונקציה. הערך חייב להיות a-z,‏ A-Z,‏ 0-9, או להכיל קווים תחתונים, נקודותיים, נקודות ומקפים, עם אורך מקסימלי של 128 תווים.

description string

חובה. תיאור קצר של הפונקציה.

behavior enum (Behavior)

אופציונלי. מציינת את התנהגות הפונקציה. בשלב הזה יש תמיכה רק בשיטה BidiGenerateContent.

parameters object (Schema)

אופציונלי. תיאור הפרמטרים של הפונקציה. משקף את מחרוזת המפתח של אובייקט הפרמטר Open API 3.03: שם הפרמטר. השמות של הפרמטרים הם תלויי אותיות רישיות. ערך הסכימה: הסכימה שמגדירה את הסוג שמשמש לפרמטר.

parametersJsonSchema value (Value format)

אופציונלי. תיאור הפרמטרים של הפונקציה בפורמט JSON Schema. הסכימה צריכה לתאר אובייקט שבו המאפיינים הם הפרמטרים של הפונקציה. לדוגמה:

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

השדה הזה לא יכול להופיע יחד עם השדה parameters.

response object (Schema)

אופציונלי. מתאר את הפלט מהפונקציה הזו בפורמט JSON Schema. משקף את אובייקט התגובה של Open API 3.03. הסכימה מגדירה את הסוג שמשמש לערך התגובה של הפונקציה.

responseJsonSchema value (Value format)

אופציונלי. מתאר את הפלט מהפונקציה הזו בפורמט JSON Schema. הערך שצוין בסכימה הוא ערך התגובה של הפונקציה.

השדה הזה לא יכול להופיע יחד עם השדה response.

ייצוג ב-JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

התנהגות

הגדרת אופן הפעולה של הפונקציה. ברירת המחדל היא BLOCKING.

טיפוסים בני מנייה (enum)
UNSPECIFIED הערך הזה לא בשימוש.
BLOCKING אם ההגדרה הזו מוגדרת, המערכת תמתין לקבלת התשובה של הפונקציה לפני שתמשיך את השיחה.
NON_BLOCKING אם ההגדרה הזו מוגדרת, המערכת לא תמתין לקבלת התגובה של הפונקציה. במקום זאת, הוא ינסה לטפל בתשובות של פונקציות כשהן יהיו זמינות, תוך שמירה על השיחה בין המשתמש לבין המודל.

GoogleSearchRetrieval

כלי לשליפת נתונים ציבוריים מהאינטרנט לצורך ביסוס, מבית Google.

Fields
dynamicRetrievalConfig object (DynamicRetrievalConfig)

מציין את הגדרת האחזור הדינמי של המקור הנתון.

ייצוג ב-JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

תיאור האפשרויות להתאמה אישית של אחזור דינמי.

Fields
mode enum (Mode)

המצב של כלי החיזוי שישמש לאחזור דינמי.

dynamicThreshold number

סף הערך שישמש לאחזור דינמי. אם לא מגדירים את המדיניות, המערכת תשתמש בערך ברירת המחדל.

ייצוג ב-JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

מצב

המצב של כלי החיזוי שישמש לאחזור דינמי.

טיפוסים בני מנייה (enum)
MODE_UNSPECIFIED תמיד מפעילים אחזור.
MODE_DYNAMIC הפעלה של אחזור רק כשהמערכת מחליטה שזה נחוץ.

CodeExecution

בסוג הזה אין שדות.

כלי שמריץ קוד שנוצר על ידי המודל ומחזיר את התוצאה למודל באופן אוטומטי.

אפשר גם לעיין בExecutableCode ובCodeExecutionResult, שנוצרים רק כשמשתמשים בכלי הזה.

GoogleSearch

סוג הכלי GoogleSearch. כלי לתמיכה בחיפוש Google במודל. מופעל על ידי Google.

Fields
timeRangeFilter object (Interval)

אופציונלי. סינון תוצאות החיפוש לפי טווח זמן מסוים. אם הלקוחות מגדירים שעת התחלה, הם חייבים להגדיר גם שעת סיום (ולהיפך).

searchTypes object (SearchTypes)

אופציונלי. קבוצת סוגי החיפוש שרוצים להפעיל. אם לא מגדירים את המדיניות, החיפוש באינטרנט מופעל כברירת מחדל.

ייצוג ב-JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

מרווח

מייצג מרווח זמן, שמקודד כחותמת זמן של התחלה (כולל) וחותמת זמן של סיום (לא כולל).

ערך ההתחלה חייב להיות קטן מערך הסיום או שווה לו. אם שעת ההתחלה זהה לשעת הסיום, המרווח ריק (לא תואם לאף שעה). אם לא מציינים תאריך התחלה וסיום, המרווח מתאים לכל זמן.

Fields
startTime string (Timestamp format)

אופציונלי. ההתחלה של מרווח הזמן, כולל.

אם מציינים חותמת זמן, היא צריכה להיות זהה לזמן ההתחלה או מאוחרת ממנו.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

אופציונלי. סיום המרווח, בלעדי.

אם מציינים חותמת זמן, היא צריכה להיות לפני סוף המרווח.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

ייצוג ב-JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

סוגים שונים של חיפושים שאפשר להפעיל בכלי GoogleSearch.

Fields
ייצוג ב-JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

בסוג הזה אין שדות.

חיפוש רגיל באינטרנט לצורך ביסוס והגדרות קשורות.

ImageSearch

בסוג הזה אין שדות.

חיפוש תמונות להארקה ולהגדרות קשורות.

ComputerUse

סוג הכלי 'שימוש במחשב'.

Fields
environment enum (Environment)

חובה. הסביבה שבה מתבצעת הפעולה.

excludedPredefinedFunctions[] string

אופציונלי. כברירת מחדל, פונקציות מוגדרות מראש נכללות בקריאה הסופית למודל. אפשר להחריג חלק מהם באופן מפורש כך שלא ייכללו באופן אוטומטי. הפעולה הזו יכולה לשמש לשתי מטרות: 1. שימוש במרחב פעולה מוגבל יותר או שונה. 2. שיפור ההגדרות או ההוראות של פונקציות מוגדרות מראש.

enablePromptInjectionDetection boolean

אופציונלי. האם להפעיל את הבדיקה לאיתור החדרת פרומפטים בבקשה לשימוש במחשב.

disabledSafetyPolicies[] enum (SafetyPolicy)

אופציונלי. השבתת מדיניות הבטיחות לשימוש במחשב.

ייצוג ב-JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

סביבה

מייצג את הסביבה שבה מתבצעת הפעולה, כמו דפדפן אינטרנט.

טיפוסים בני מנייה (enum)
ENVIRONMENT_UNSPECIFIED ברירת המחדל היא דפדפן.
ENVIRONMENT_BROWSER פועל בדפדפן אינטרנט.
ENVIRONMENT_MOBILE פועל בסביבה ניידת.
ENVIRONMENT_DESKTOP פועל בסביבת מחשב.

SafetyPolicy

כללי מדיניות מוגדרים מראש בנושא בטיחות השימוש במחשב.

טיפוסים בני מנייה (enum)
SAFETY_POLICY_UNSPECIFIED מדיניות בטיחות לא מוגדרת.
FINANCIAL_TRANSACTIONS מדיניות הבטיחות בנושא עסקאות פיננסיות.
SENSITIVE_DATA_MODIFICATION מדיניות בטיחות לשינוי מידע אישי רגיש.
COMMUNICATION_TOOL מדיניות בטיחות לכלים לתקשורת (למשל Gmail, ‏ Chat, ‏ Meet).
ACCOUNT_CREATION מדיניות בנושא בטיחות ליצירת חשבון.
DATA_MODIFICATION מדיניות בטיחות לשינוי נתונים.
LEGAL_TERMS_AND_AGREEMENTS מדיניות בטיחות בנוגע לתנאים ולהסכמים משפטיים.

UrlContext

בסוג הזה אין שדות.

כלי לתמיכה באחזור הקשר של כתובת URL.

FileSearch

הכלי FileSearch שמאחזר ידע ממאגרי מידע של אחזור סמנטי. הקבצים מיובאים למאגרי המידע של Semantic Retrieval באמצעות ImportFile API.

Fields
fileSearchStoreNames[] string

חובה. השמות של fileSearchStores שמהם רוצים לאחזר. לדוגמה: fileSearchStores/my-file-search-store-123

metadataFilter string

אופציונלי. מסנן מטא-נתונים להחלה על המסמכים ועל חלקי הטקסט שחולצו באמצעות אחזור סמנטי.

topK integer

אופציונלי. מספר החלקים של אחזור סמנטי שיש לאחזר.

ייצוג ב-JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

שרת MCP הוא שרת שהמודל יכול להפעיל כדי לבצע פעולות. זהו שרת שמיישם את פרוטוקול ה-MCP. המזהה הבא: 6

Fields
name string

השם של ה-MCPServer.

transport Union type
הפרוטוקול שמשמש לחיבור ל-MCPServer. הערך transport יכול להיות רק אחד מהבאים:
streamableHttpTransport object (StreamableHttpTransport)

העברה שיכולה להזרים בקשות ותגובות HTTP.

ייצוג ב-JSON
{
  "name": string,

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

StreamableHttpTransport

העברה שיכולה להזרים בקשות ותגובות HTTP. המזהה הבא: 6

Fields
url string

כתובת ה-URL המלאה של נקודת הקצה של שרת ה-MCP. דוגמה: "https://api.example.com/mcp"

headers map (key: string, value: string)

אופציונלי: שדות לכותרות אימות, פסק זמן וכו', אם צריך.

אובייקט שמכיל רשימה של "key": value זוגות. דוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

פסק זמן של HTTP לפעולות רגילות.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

sseReadTimeout string (Duration format)

הזמן הקצוב לתפוגה של פעולות קריאה של SSE.

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה העשרונית, שמסתיים ב-'s'. דוגמה: "3.5s".

terminateOnClose boolean

האם לסגור את סשן הלקוח כשההעברה נסגרת.

ייצוג ב-JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

כלי Google Maps שמספק הקשר גיאוגרפי לשאילתה של המשתמש.

Fields
enableWidget boolean

אופציונלי. האם להחזיר טוקן של הקשר של הווידג'ט ב-GroundingMetadata של התגובה. מפתחים יכולים להשתמש בטוקן של הקשר של הווידג'ט כדי להציג ווידג'ט של מפות Google עם הקשר גיאוגרפי שקשור למקומות שהמודל מתייחס אליהם בתשובה.

ייצוג ב-JSON
{
  "enableWidget": boolean
}

משאב REST: ‏ auth_tokens

משאב: AuthToken

בקשה ליצירת טוקן אימות זמני.

Fields
name string

פלט בלבד. מזהה. האסימון עצמו.

expireTime string (Timestamp format)

אופציונלי. קלט בלבד. אי אפשר לשנות. זמן אופציונלי שאחריו, כשמשתמשים בטוקן שנוצר, הודעות בסשנים של BidiGenerateContent יידחו. ‫(Gemini עשוי לסגור את הסשן לפני הזמן הזה).

אם לא מגדירים את התדירות, ברירת המחדל היא 30 דקות. אם מאכלסים אותו, הערך הזה צריך להיות פחות מ-20 שעות בעתיד.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

אופציונלי. קלט בלבד. אי אפשר לשנות. הזמן שאחריו בקשות חדשות להפעלת Live API באמצעות הטוקן שמתקבל מהבקשה הזו יידחו.

אם לא מגדירים את ההגדרה הזו, ברירת המחדל בעתיד תהיה 60 שניות. אם מאכלסים אותו, הערך הזה צריך להיות פחות מ-20 שעות בעתיד.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

אופציונלי. קלט בלבד. אי אפשר לשנות. אם fieldMask ריק, ו-bidiGenerateContentSetup לא קיים, אז ההודעה האפקטיבית BidiGenerateContentSetup נלקחת מהחיבור הפעיל ל-API.

אם fieldMask ריק, ו-bidiGenerateContentSetup is קיים, אז ההודעה האפקטיבית BidiGenerateContentSetup נלקחת כולה מ-bidiGenerateContentSetup בבקשה הזו. הודעת ההגדרה מחיבור Live API מוזנחת.

אם fieldMask לא ריק, השדות התואמים מ-bidiGenerateContentSetup יחליפו את השדות מהודעת ההגדרה בחיבור ה-API בזמן אמת.

זוהי רשימה מופרדת בפסיקים של שמות שדות שמוגדרים במלואם. דוגמה: "user.displayName,photo"

config Union type
ההגדרה הספציפית לשיטה של הטוקן שמתקבל. הערך config יכול להיות רק אחד מהבאים:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

אופציונלי. קלט בלבד. אי אפשר לשנות. הגדרה ספציפית ל-BidiGenerateContent.

uses integer

אופציונלי. קלט בלבד. אי אפשר לשנות. מספר הפעמים שבהם אפשר להשתמש באסימון. אם הערך הוא אפס, לא מוחלת מגבלה. חידוש של סשן API בשידור חי לא נחשב כשימוש. אם לא מציינים ערך, ברירת המחדל היא 1.

ייצוג ב-JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

ההודעה שתישלח ב-BidiGenerateContentClientMessage הראשון (ורק בו). מכיל הגדרה שתחול למשך ה-RPC של הסטרימינג.

הלקוחות צריכים להמתין להודעה BidiGenerateContentSetupComplete לפני שליחת הודעות נוספות.

Fields
model string

חובה. שם המשאב של המודל. הערך הזה משמש כמזהה לשימוש במודל.

פורמט: models/{model}

generationConfig object (GenerationConfig)

אופציונלי. הגדרות ליצירה.

אין תמיכה בשדות הבאים:

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

אופציונלי. הוראות המערכת שהמשתמש סיפק למודל.

הערה: צריך להשתמש רק בטקסט בחלקים, והתוכן בכל חלק יהיה בפסקה נפרדת.

tools[] object (Tool)

אופציונלי. רשימה של Tools שהמודל עשוי להשתמש בהם כדי ליצור את התשובה הבאה.

Tool הוא קטע קוד שמאפשר למערכת ליצור אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה או סדרת פעולות, שלא נכללות בידע של המודל או בהיקף שלו.

realtimeInputConfig object (RealtimeInputConfig)

אופציונלי. הגדרת הטיפול בקלט בזמן אמת.

sessionResumption object (SessionResumptionConfig)

אופציונלי. הגדרת מנגנון לחידוש סשן.

אם הוא כלול, השרת ישלח SessionResumptionUpdate הודעות.

contextWindowCompression object (ContextWindowCompressionConfig)

אופציונלי. הגדרת מנגנון דחיסה של חלון הקשר.

אם הוא נכלל, השרת יקטין אוטומטית את גודל ההקשר כשהוא יעלה על האורך שהוגדר.

inputAudioTranscription object (AudioTranscriptionConfig)

אופציונלי. אם ההגדרה מופעלת, מתבצע תמלול של קלט קולי. התמלול מותאם לשפת האודיו של הקלט, אם היא מוגדרת.

outputAudioTranscription object (AudioTranscriptionConfig)

אופציונלי. אם ההגדרה הזו מופעלת, מתבצע תמלול של פלט האודיו של המודל. התמליל מותאם לקוד השפה שצוין לאודיו של הפלט, אם הוא הוגדר.

historyConfig object (HistoryConfig)

אופציונלי. הגדרת חילופי ההיסטוריה בין הלקוח לשרת.

ייצוג ב-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

אפשרויות ההגדרה ליצירת מודלים ולפלטים. לא כל הפרמטרים ניתנים להגדרה בכל מודל.

Fields
stopSequences[] string

אופציונלי. קבוצת רצפי התווים (עד 5) שיגרמו להפסקת יצירת הפלט. אם מציינים את הפרמטר הזה, ה-API יפסיק כשיופיע בפעם הראשונה התו stop_sequence. רצף העצירה לא ייכלל בתשובה.

responseMimeType string

אופציונלי. סוג ה-MIME של הטקסט המוצע שנוצר. סוגי ה-MIME הנתמכים הם: text/plain: (ברירת מחדל) פלט טקסט. ‫application/json: תגובת JSON במועמדים לתגובה. ‫text/x.enum: ENUM כמחרוזת תגובה במועמדים לתגובה. רשימה של כל סוגי ה-MIME הנתמכים של טקסט מופיעה במסמכים.

responseSchema
(deprecated)
object (Schema)

אופציונלי. סכימת הפלט של הטקסט המוצע שנוצר. הסכימות חייבות להיות קבוצת משנה של סכימת OpenAPI, והן יכולות להיות אובייקטים, פרימיטיבים או מערכים.

אם מגדירים את המדיניות הזו, צריך להגדיר גם מדיניות תואמת responseMimeType. סוגי MIME תואמים: application/json: סכימה לתגובת JSON. פרטים נוספים זמינים במדריך ליצירת טקסט JSON.

_responseJsonSchema
(deprecated)
value (Value format)

אופציונלי. סכימת הפלט של התשובה שנוצרה. זוהי חלופה ל-responseSchema שמקבלת JSON Schema.

אם מציינים את responseSchema, צריך להשמיט את responseMimeType. אם לא מציינים את, צריך לציין את.

יכול להיות שיישלח JSON Schema מלא, אבל לא כל התכונות נתמכות. באופן ספציפי, יש תמיכה רק במאפיינים הבאים:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (למחרוזות ולמספרים)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (הפירוש זהה ל-anyOf)
  • properties
  • additionalProperties
  • required

אפשר גם להגדיר את המאפיין propertyOrdering שאינו סטנדרטי.

הפניות מעגליות מפורקות במידה מוגבלת, ולכן אפשר להשתמש בהן רק במאפיינים לא חובה. (מאפיינים שניתן להגדיר להם ערך null לא מספיקים). אם הערך $ref מוגדר בסכימת משנה, אי אפשר להגדיר מאפיינים אחרים, למעט מאפיינים שמתחילים ב-$.

responseJsonSchema value (Value format)

אופציונלי. פרט פנימי. במקום השדה הזה, צריך להשתמש ב-responseJsonSchema.

responseModalities[] enum (Modality)

אופציונלי. האופנים המבוקשים של התגובה. מייצג את קבוצת המודאליות שהמודל יכול להחזיר, וצריך לצפות להן בתשובה. זוהי התאמה מדויקת לאופנויות של התגובה.

למודל יכולים להיות כמה שילובים של אמצעי תקשורת נתמכים. אם האופנים המבוקשים לא תואמים לאף אחת מהקומבינציות הנתמכות, תוחזר שגיאה.

רשימה ריקה שקולה לבקשה של טקסט בלבד.

candidateCount integer

אופציונלי. מספר התשובות שנוצרו שיוחזרו. אם לא מגדירים ערך, ברירת המחדל היא 1. חשוב לדעת שהאפשרות הזו לא זמינה במודלים מהדור הקודם (משפחת Gemini 1.0)

maxOutputTokens integer

אופציונלי. מספר האסימונים המקסימלי שאפשר לכלול במועמד לתשובה.

הערה: ערך ברירת המחדל משתנה בהתאם למודל. אפשר לראות את מאפיין Model.output_token_limit של Model שמוחזר מהפונקציה getModel.

temperature number

אופציונלי. המדיניות קובעת את מידת הרנדומיזציה של הפלט.

הערה: ערך ברירת המחדל משתנה בהתאם למודל. אפשר לראות את מאפיין Model.temperature של Model שמוחזר מהפונקציה getModel.

הערכים יכולים לנוע בין [0.0, 2.0].

topP number

אופציונלי. ההסתברות המצטברת המקסימלית של טוקנים שצריך לקחת בחשבון כשמבצעים דגימה.

המודל משתמש בשילוב של דגימת Top-k ודגימת Top-p (גרעין).

הטוקנים ממוינים לפי ההסתברויות שהוקצו להם, כך שרק הטוקנים הסבירים ביותר נלקחים בחשבון. דגימת Top-k מגבילה ישירות את המספר המקסימלי של טוקנים שצריך להתייחס אליהם, בעוד שדגימת Nucleus מגבילה את מספר הטוקנים על סמך ההסתברות המצטברת.

הערה: ערך ברירת המחדל משתנה בהתאם ל-Model והוא מצוין במאפיין Model.top_p שמוחזר מהפונקציה getModel. מאפיין topK ריק מציין שהמודל לא משתמש בדגימה של k התוצאות המובילות ולא מאפשר להגדיר topK בבקשות.

topK integer

אופציונלי. מספר האסימונים המקסימלי שצריך לקחת בחשבון כשמבצעים דגימה.

המודלים של Gemini משתמשים בדגימה מסוג Top-p (גרעין) או בשילוב של דגימה מסוג Top-k ודגימת גרעין. דגימת Top-k מתייחסת לקבוצה של topK הטוקנים הסבירים ביותר. מודלים שפועלים עם דגימת גרעין לא מאפשרים הגדרה של topK.

הערה: ערך ברירת המחדל משתנה בהתאם ל-Model והוא מצוין במאפיין Model.top_p שמוחזר מהפונקציה getModel. מאפיין topK ריק מציין שהמודל לא משתמש בדגימה של k התוצאות המובילות ולא מאפשר להגדיר topK בבקשות.

seed integer

אופציונלי. הערך הראשוני שמשמש לפענוח. אם לא מגדירים את הערך הזה, הבקשה משתמשת בערך התחלתי שנוצר באופן אקראי.

presencePenalty number

אופציונלי. אם הטוקן כבר הופיע בתשובה, יחול קנס על נוכחות הטוקן על הסתברויות הלוג של הטוקן הבא.

העונש הזה הוא בינארי (מופעל או מושבת) והוא לא תלוי במספר הפעמים שנעשה שימוש באסימון (אחרי הפעם הראשונה). משתמשים בערך frequencyPenalty כדי לציין קנס שגדל עם כל שימוש.

קנס חיובי ירתיע את השימוש בטוקנים שכבר נעשה בהם שימוש בתשובה, ויגדיל את אוצר המילים.

עונש שלילי יעודד שימוש בטוקנים שכבר נעשה בהם שימוש בתשובה, ויקטין את אוצר המילים.

frequencyPenalty number

אופציונלי. קנס התדירות שמוחל על הסתברויות היומן של האסימון הבא, מוכפל במספר הפעמים שכל אסימון הופיע בתגובה עד עכשיו.

קנס חיובי ימנע שימוש בטוקנים שכבר נעשה בהם שימוש, באופן יחסי למספר הפעמים שנעשה שימוש בטוקן: ככל שנעשה שימוש בטוקן יותר פעמים, כך קשה יותר למודל להשתמש בטוקן הזה שוב, והאוצר מילים של התשובות גדל.

זהירות: קנס שלילי יעודד את המודל לעשות שימוש חוזר בטוקנים באופן יחסי למספר הפעמים שנעשה שימוש בטוקן. ערכים שליליים קטנים יצמצמו את אוצר המילים של התשובה. ערכים שליליים גדולים יותר יגרמו למודל להתחיל לחזור על טוקן נפוץ עד שהוא יגיע למגבלת maxOutputTokens.

responseLogprobs boolean

אופציונלי. אם הערך הוא true, התוצאות של logprobs מיוצאות בתגובה.

logprobs integer

אופציונלי. בתוקף רק אם responseLogprobs=True. ההגדרה הזו קובעת את מספר ההסתברויות של הטוקנים המובילים, כולל הטוקן שנבחר, שיוחזרו בכל שלב של פענוח ב-Candidate.logprobs_result. המספר חייב להיות בטווח [0, 20].

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)

אופציונלי. הגדרות לתמלול אודיו (זיהוי דיבור).

ייצוג ב-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)
  }
}

אופן השימוש

אופני התגובה הנתמכים.

טיפוסים בני מנייה (enum)
MODALITY_UNSPECIFIED ערך ברירת המחדל.
TEXT מציין שהמודל צריך להחזיר טקסט.
IMAGE מציין שהמודל צריך להחזיר תמונות.
AUDIO מציין שהמודל צריך להחזיר אודיו.

SpeechConfig

הגדרות ליצירת דיבור ולתמלול.

Fields
voiceConfig object (VoiceConfig)

ההגדרה במקרה של פלט קולי יחיד.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

אופציונלי. ההגדרה של מערך רמקולים מרובה. הוא לא יכול להיות ביחד עם השדה voiceConfig.

languageCode string

אופציונלי. קוד השפה בתקן BCP-47 של IETF שהמשתמש הגדיר לשימוש באפליקציה. משמש לזיהוי דיבור ולהמרת טקסט לדיבור.

הערכים התקינים הם: 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 ו-th-TH.

ייצוג ב-JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

ההגדרה של הקול שבו רוצים להשתמש.

שדות
voice_config Union type
ההגדרה של הרמקול שבו רוצים להשתמש. הערך voice_config יכול להיות רק אחד מהבאים:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

ההגדרה של הקול המובנה שבו רוצים להשתמש.

ייצוג ב-JSON
{

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

PrebuiltVoiceConfig

ההגדרה של הרמקול המובנה שבו רוצים להשתמש.

Fields
voiceName string

השם של הגדרת הקול הקבועה מראש שבה רוצים להשתמש.

ייצוג ב-JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

ההגדרה של מערך רמקולים מרובה.

Fields
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

חובה. כל הקולות של הרמקולים שהופעלו.

ייצוג ב-JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

ההגדרה של רמקול יחיד בהגדרה של כמה רמקולים.

Fields
speaker string

חובה. השם של הדובר שבו רוצים להשתמש. צריך להיות זהה למה שכתוב בפרומפט.

voiceConfig object (VoiceConfig)

חובה. ההגדרה של הקול שבו רוצים להשתמש.

ייצוג ב-JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

הגדרות לתכונות של עזרה בכתיבה.

Fields
includeThoughts boolean

מציין אם לכלול מחשבות בתשובה. אם הערך הוא true, המחשבות מוחזרות רק כשהן זמינות.

thinkingBudget integer

מספר הטוקנים של המחשבות שהמודל צריך ליצור.

thinkingLevel enum (ThinkingLevel)

אופציונלי. ההגדרה הזו קובעת את העומק המקסימלי של תהליך החשיבה הרציונלית הפנימית של המודל לפני שהוא יוצר תשובה. ערך ברירת המחדל תלוי במודל. פרטים נוספים זמינים במדריך לרמות החשיבה. מומלץ לשימוש במודלים של Gemini 3 ואילך. השימוש במודלים קודמים יגרום לשגיאה.

ייצוג ב-JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

אפשר לאפשר למשתמש לציין כמה זמן לחשוב באמצעות enum במקום תקציב של מספר שלם.

טיפוסים בני מנייה (enum)
THINKING_LEVEL_UNSPECIFIED ערך ברירת המחדל.
MINIMAL מעט מאוד חשיבה או ללא חשיבה כלל.
LOW רמת העמקה נמוכה.
MEDIUM רמת העמקה בינונית.
HIGH רמת העמקה גבוהה.

ImageConfig

הגדרות לתכונות ליצירת תמונות.

Fields
aspectRatio string

אופציונלי. יחס הגובה-רוחב של התמונה שרוצים ליצור. יחסי גובה-רוחב נתמכים: 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 או 21:9.

אם לא מציינים יחס גובה-רוחב, המודל יבחר יחס גובה-רוחב כברירת מחדל על סמך תמונות ההפניה שסופקו.

imageSize string

אופציונלי. מציינת את הגודל של התמונות שנוצרו. הערכים הנתמכים הם 512, ‏ 1K, ‏ 2K, ‏ 4K. אם לא מציינים ערך, המודל ישתמש בערך ברירת המחדל 1K.

ייצוג ב-JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

רזולוציית המדיה של קלט המדיה.

טיפוסים בני מנייה (enum)
MEDIA_RESOLUTION_UNSPECIFIED לא הוגדרה רזולוציה למדיה.
MEDIA_RESOLUTION_LOW הרזולוציה של המדיה מוגדרת כנמוכה (64 טוקנים).
MEDIA_RESOLUTION_MEDIUM רזולוציית המדיה מוגדרת לבינונית (256 טוקנים).
MEDIA_RESOLUTION_HIGH רזולוציית המדיה מוגדרת כגבוהה (שינוי מסגור בהגדלה עם 256 טוקנים).

ResponseFormatConfig

הגדרה של פורמט הפלט של התשובה. זהו אובייקט שטוח שבו כל שדה משנה אופציונלי מגדיר מצב פלט ספציפי.

Fields
text object (TextResponseFormat)

אופציונלי. הגדרה של פורמט פלט הטקסט.

audio object (AudioResponseFormat)

אופציונלי. הגדרת פורמט פלט האודיו.

image object (ImageResponseFormat)

אופציונלי. הגדרת פורמט הפלט של התמונה.

ייצוג ב-JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

הגדרה של פורמט פלט הטקסט.

Fields
mimeType enum (MimeType)

אופציונלי. סוג ה-MIME של פלט הטקסט.

schema value (Value format)

אופציונלי. סכימת ה-JSON שהפלט צריך להתאים לה. ההגדרה הזו רלוונטית רק אם mimeType הוא APPLICATION_JSON.

ייצוג ב-JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

סוגי MIME נתמכים לפלט טקסט.

טיפוסים בני מנייה (enum)
MIME_TYPE_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
APPLICATION_JSON פורמט פלט JSON.
TEXT_PLAIN פורמט פלט של טקסט פשוט.

AudioResponseFormat

הגדרה של פורמט פלט האודיו.

Fields
mimeType enum (MimeType)

אופציונלי. סוג ה-MIME של פלט האודיו.

delivery enum (Delivery)

אופציונלי. אופן השליחה של פלט האודיו.

sampleRate integer

אופציונלי. תדירות הדגימה בהרץ.

bitRate integer

אופציונלי. קצב העברת הנתונים בסיביות לשנייה (bps). רלוונטי רק לפורמטים דחוסים (MP3, ‏ Opus).

ייצוג ב-JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

סוגי MIME נתמכים לפלט אודיו.

טיפוסים בני מנייה (enum)
MIME_TYPE_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
AUDIO_MP3 פורמט אודיו MP3.
AUDIO_OGG_OPUS פורמט אודיו OGG Opus.
AUDIO_L16 פורמט אודיו Raw PCM ‏ (L16).
AUDIO_WAV פורמט אודיו WAV.
AUDIO_ALAW פורמט אודיו A-law.
AUDIO_MULAW פורמט אודיו Mu-law.

משלוח

מצב ההשמעה של פלט האודיו.

טיפוסים בני מנייה (enum)
DELIVERY_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
INLINE נתוני האודיו מוחזרים בשורה בתשובה.
URI נתוני האודיו מוחזרים כ-URI.

ImageResponseFormat

הגדרה של פורמט הפלט של התמונה.

Fields
mimeType enum (MimeType)

אופציונלי. סוג ה-MIME של פלט התמונה.

delivery enum (Delivery)

אופציונלי. אופן השליחה של פלט התמונה.

aspectRatio enum (AspectRatio)

אופציונלי. יחס הגובה-רוחב של התמונה שנוצרה.

imageSize enum (ImageSize)

אופציונלי. גודל התמונה שנוצרת.

ייצוג ב-JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

סוגי MIME נתמכים של פלט תמונה.

טיפוסים בני מנייה (enum)
MIME_TYPE_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
IMAGE_JPEG פורמט תמונה JPEG.

משלוח

אופן ההעברה של פלט התמונה.

טיפוסים בני מנייה (enum)
DELIVERY_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
INLINE נתוני התמונה מוחזרים בשורה בתשובה.
URI נתוני התמונה מוחזרים כ-URI.

AspectRatio

יחסי גובה-רוחב נתמכים של תמונות שנוצרות.

טיפוסים בני מנייה (enum)
ASPECT_RATIO_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
ASPECT_RATIO_ONE_BY_ONE יחס גובה-רוחב של 1:1.
ASPECT_RATIO_TWO_BY_THREE יחס גובה-רוחב של 2:3.
ASPECT_RATIO_THREE_BY_TWO יחס גובה-רוחב של 3:2.
ASPECT_RATIO_THREE_BY_FOUR יחס גובה-רוחב של 3:4.
ASPECT_RATIO_FOUR_BY_THREE יחס גובה-רוחב של 4:3.
ASPECT_RATIO_FOUR_BY_FIVE יחס גובה-רוחב של 4:5.
ASPECT_RATIO_FIVE_BY_FOUR יחס גובה-רוחב של 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN יחס גובה-רוחב של 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE יחס גובה-רוחב של 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE יחס גובה-רוחב של 21:9.
ASPECT_RATIO_ONE_BY_EIGHT יחס גובה-רוחב של 1:8.
ASPECT_RATIO_EIGHT_BY_ONE יחס גובה-רוחב של 8:1.
ASPECT_RATIO_ONE_BY_FOUR יחס גובה-רוחב של 1:4.
ASPECT_RATIO_FOUR_BY_ONE יחס גובה-רוחב של 4:1.

ImageSize

גדלי תמונות נתמכים לפלט תמונה.

טיפוסים בני מנייה (enum)
IMAGE_SIZE_UNSPECIFIED ערך ברירת המחדל. הערך הזה לא בשימוש.
IMAGE_SIZE_FIVE_TWELVE גודל התמונה הוא 512 פיקסלים.
IMAGE_SIZE_ONE_K גודל התמונה הוא 1K.
IMAGE_SIZE_TWO_K גודל התמונה הוא 2K.
IMAGE_SIZE_FOUR_K גודל התמונה ב-4K.

TranslationConfig

הגדרות לתכונות תרגום.

Fields
targetLanguageCode string

חובה. שפת היעד של התרגום. הערכים הנתמכים הם קודי שפה בתקן BCP-47 (למשל, 'en',‏ 'es',‏ 'fr').

echoTargetLanguage boolean

אופציונלי. אם הערך הוא True, המודל ייצור אודיו כשהשפה הממוקדת מדוברת, כלומר הוא יחקה את הקלט. אם הערך הוא False, לא ניצור אודיו בשפת היעד.

ייצוג ב-JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

הגדרת תמלול האודיו.

Fields
languageCodes[] string

אופציונלי. קודי שפה בתקן BCP-47 שמספקים רמזים לגבי השפות שמופיעות באודיו. אם לא מציינים שפה או אם השדה ריק, המערכת תבצע זיהוי שפה אוטומטי.

adaptationPhrases[]
(deprecated)
string

אופציונלי. רשימה של ביטויים שמשמשים להתאמת הדיבור, שמשפיעה על מודל ה-ASR כדי לשפר את הזיהוי של המונחים הספציפיים האלה.

customVocabulary[] string

אופציונלי. רשימה של ביטויים מותאמים אישית באוצר המילים, כדי להטות את מודל זיהוי הדיבור לזיהוי מונחים ספציפיים (שמות מוצרים, שמות עצם, ז'רגון).

wordTimestamp boolean

אופציונלי. המדיניות מגדירה יצירה של חותמות זמן ברמת המילה.

diarization boolean

אופציונלי. הגדרת חלוקת קובץ האודיו לפי דוברים.

language_config Union type
הוצא משימוש: במקומו, צריך להשתמש ב-language_codes ברמה העליונה. הערך language_config יכול להיות רק אחד מהבאים:
languageAuto
(deprecated)
object (LanguageAuto)

אופציונלי. המודל יזהה את השפה באופן אוטומטי.

languageHints
(deprecated)
object (LanguageHints)

אופציונלי. מציינים שפה אחת או יותר באודיו.

ייצוג ב-JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

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

LanguageAuto

בסוג הזה אין שדות.

מציין שהשפה של האודיו צריכה להיות מזוהה באופן אוטומטי.

LanguageHints

מספק רמזים למודל לגבי השפות האפשריות שקיימות באודיו.

Fields
languageCodes[]
(deprecated)
string

חובה. קודי שפה בתקן BCP-47.

ייצוג ב-JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

הגדרת התנהגות הקלט בזמן אמת ב-BidiGenerateContent.

Fields
automaticActivityDetection object (AutomaticActivityDetection)

אופציונלי. אם לא מגדירים את ההגדרה הזו, זיהוי הפעילות האוטומטי מופעל כברירת מחדל. אם השבתתם את זיהוי הקול האוטומטי, הלקוח צריך לשלוח אותות פעילות.

activityHandling enum (ActivityHandling)

אופציונלי. הגדרה של ההשפעה של הפעילות.

turnCoverage enum (TurnCoverage)

אופציונלי. הגדרה של הקלט שייכלל בתור של המשתמש.

ייצוג ב-JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

ההגדרה קובעת את אפשרויות הזיהוי האוטומטי של פעילות.

Fields
disabled boolean

אופציונלי. אם ההגדרה מופעלת (ברירת המחדל), דיבור וטקסט שזוהו נספרים כפעילות. אם ההגדרה מושבתת, הלקוח צריך לשלוח אותות פעילות.

startOfSpeechSensitivity enum (StartSensitivity)

אופציונלי. קובע את הסבירות לזיהוי דיבור.

prefixPaddingMs integer

אופציונלי. משך הזמן הנדרש של הדיבור שזוהה לפני שמתבצעת התחייבות לתחילת הדיבור. ככל שהערך הזה נמוך יותר, כך זיהוי תחילת הדיבור רגיש יותר, ואפשר לזהות דיבור קצר יותר. עם זאת, זה גם מגדיל את הסבירות לתוצאות חיוביות כוזבות.

endOfSpeechSensitivity enum (EndSensitivity)

אופציונלי. קובע את הסבירות לכך שהדיבור שזוהה הסתיים.

silenceDurationMs integer

אופציונלי. משך הזמן הנדרש של זיהוי קטע שאינו דיבור (למשל, שקט) לפני שמתבצעת פעולה של סיום הדיבור. ככל שהערך הזה גדול יותר, כך יכולים להיות פערים ארוכים יותר בדיבור בלי להפריע לפעילות המשתמש, אבל זה יגדיל את זמן האחזור של המודל.

ייצוג ב-JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

קובע איך מזוהה תחילת הדיבור.

טיפוסים בני מנייה (enum)
START_SENSITIVITY_UNSPECIFIED ערך ברירת המחדל הוא START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH הזיהוי האוטומטי יזהה את תחילת הדיבור בתדירות גבוהה יותר.
START_SENSITIVITY_LOW הזיהוי האוטומטי יזהה את תחילת הדיבור בתדירות נמוכה יותר.

EndSensitivity

קובע איך מזוהה סוף הדיבור.

טיפוסים בני מנייה (enum)
END_SENSITIVITY_UNSPECIFIED ערך ברירת המחדל הוא END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH הזיהוי האוטומטי מסיים את הדיבור לעיתים קרובות יותר.
END_SENSITIVITY_LOW הזיהוי האוטומטי מפסיק את הדיבור בתדירות נמוכה יותר.

ActivityHandling

הדרכים השונות לטיפול בפעילות המשתמשים.

טיפוסים בני מנייה (enum)
ACTIVITY_HANDLING_UNSPECIFIED אם לא מצוין ערך, ההתנהגות שמוגדרת כברירת מחדל היא START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS אם הערך הוא True, התחלת הפעילות תקטע את התשובה של המודל (נקראת גם 'התפרצות'). התשובה הנוכחית של המודל תיקטע ברגע ההפרעה. זו התנהגות ברירת המחדל.
NO_INTERRUPTION התשובה של המודל לא תיקטע.

TurnCoverage

אפשרויות לגבי הקלט שנכלל בתור של המשתמש.

טיפוסים בני מנייה (enum)
TURN_COVERAGE_UNSPECIFIED אם לא מציינים ערך, נבחרת התנהגות ברירת מחדל על סמך המודל. לדוגמה, ב-Gemini 2.5, ברירת המחדל היא TURN_INCLUDES_ONLY_ACTIVITY, וב-Gemini 3.1 ואילך, ברירת המחדל היא TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY כולל פעילות מאז התור האחרון, לא כולל חוסר פעילות (למשל, שקט בזרם האודיו).
TURN_INCLUDES_ALL_INPUT כולל את כל הקלט בזמן אמת מאז התור האחרון, כולל חוסר פעילות (למשל, שקט בערוץ האודיו).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO כולל את פעילות האודיו ואת כל הווידאו מאז התור האחרון. בזיהוי פעילות אוטומטי, פעילות אודיו כוללת דיבור ולא כוללת שקט.

SessionResumptionConfig

הגדרת חידוש הסשן.

ההודעה הזו נכללת בהגדרות הסשן כ-BidiGenerateContentSetup.session_resumption. אם הוגדר, השרת ישלח הודעות SessionResumptionUpdate.

Fields
handle string

הכינוי של סשן קודם. אם הוא לא קיים, נוצר סשן חדש.

מזהי סשן מגיעים מערכי SessionResumptionUpdate.token בחיבורים קודמים.

ייצוג ב-JSON
{
  "handle": string
}

ContextWindowCompressionConfig

הפעלה של דחיסת חלון הקשר – מנגנון לניהול חלון הקשר של המודל כך שהוא לא יעלה על אורך נתון.

שדות
compression_mechanism Union type
מנגנון הדחיסה של חלון ההקשר שבו נעשה שימוש. הערך compression_mechanism יכול להיות רק אחד מהבאים:
slidingWindow object (SlidingWindow)

מנגנון חלון הזזה.

triggerTokens string (int64 format)

מספר הטוקנים (לפני הרצת תור) שנדרש כדי להפעיל דחיסה של חלון ההקשר.

אפשר להשתמש בזה כדי לאזן בין איכות לבין זמן האחזור, כי חלונות הקשר קצרים יותר עשויים להוביל לתשובות מהירות יותר מהמודל. עם זאת, כל פעולת דחיסה תגרום לעלייה זמנית בחביון, ולכן לא מומלץ להפעיל אותן בתדירות גבוהה.

אם לא מגדירים את המדיניות, ברירת המחדל היא 80% ממגבלת חלון ההקשר של המודל. המשמעות היא ש-20% נשארים לבקשת המשתמש הבאה או לתשובת המודל.

ייצוג ב-JSON
{

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

SlidingWindow

השיטה SlidingWindow פועלת על ידי השמטת תוכן בתחילת חלון ההקשר. ההקשר שיתקבל תמיד יתחיל בתחילת תור של תפקיד המשתמש. ההוראות למערכת וכל BidiGenerateContentSetup.prefix_turns תמיד יישארו בתחילת התוצאה.

Fields
targetTokens string (int64 format)

מספר הטוקנים שרוצים לשמור. ערך ברירת המחדל הוא triggerTokens/2.

השלכת חלקים מחלון ההקשר גורמת להגדלה זמנית של זמן האחזור, ולכן צריך לכייל את הערך הזה כדי להימנע מפעולות דחיסה תכופות.

ייצוג ב-JSON
{
  "targetTokens": string
}

HistoryConfig

הגדרת ההיסטוריה.

ההודעה הזו נכללת בהגדרות הסשן כ-BidiGenerateContentSetup.history_config. הגדרה של חילופי הודעות היסטוריה.

Fields
initialHistoryInClientContent boolean

אופציונלי. אם הערך הוא True, אחרי שליחת setupComplete, השרת ימתין ויעבד קודם clientContent הודעות עד ש-turnComplete יהיה true. ההיסטוריה הראשונית הזו לא תפעיל שיחה עם מודל, והיא עשויה להסתיים בתפקיד MODEL. אחרי ש-turnComplete הוא true, הלקוח יכול להתחיל את השיחה בזמן אמת דרך realtimeInput.

ייצוג ב-JSON
{
  "initialHistoryInClientContent": boolean
}

שיטה: auth_tokens.create

יוצר אסימון שאפשר להשתמש בו כדי להגביל את ההתנהגות של סשן BidiGenerateContent.

נקודת קצה

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

גוף הבקשה

גוף הבקשה מכיל מופע של AuthToken.

Fields
expireTime string (Timestamp format)

אופציונלי. קלט בלבד. אי אפשר לשנות. זמן אופציונלי שאחריו, כשמשתמשים בטוקן שנוצר, הודעות בסשנים של BidiGenerateContent יידחו. ‫(Gemini עשוי לסגור את הסשן לפני הזמן הזה).

אם לא מגדירים את התדירות, ברירת המחדל היא 30 דקות. אם מאכלסים אותו, הערך הזה צריך להיות פחות מ-20 שעות בעתיד.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

אופציונלי. קלט בלבד. אי אפשר לשנות. הזמן שאחריו בקשות חדשות להפעלת Live API באמצעות הטוקן שמתקבל מהבקשה הזו יידחו.

אם לא מגדירים את ההגדרה הזו, ברירת המחדל בעתיד תהיה 60 שניות. אם מאכלסים אותו, הערך הזה צריך להיות פחות מ-20 שעות בעתיד.

הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. דוגמאות: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

אופציונלי. קלט בלבד. אי אפשר לשנות. אם fieldMask ריק, ו-bidiGenerateContentSetup לא קיים, אז ההודעה האפקטיבית BidiGenerateContentSetup נלקחת מהחיבור הפעיל ל-API.

אם fieldMask ריק, ו-bidiGenerateContentSetup is קיים, אז ההודעה האפקטיבית BidiGenerateContentSetup נלקחת כולה מ-bidiGenerateContentSetup בבקשה הזו. הודעת ההגדרה מחיבור Live API מוזנחת.

אם fieldMask לא ריק, השדות התואמים מ-bidiGenerateContentSetup יחליפו את השדות מהודעת ההגדרה בחיבור ה-API בזמן אמת.

זוהי רשימה מופרדת בפסיקים של שמות שדות שמוגדרים במלואם. דוגמה: "user.displayName,photo"

config Union type
ההגדרה הספציפית לשיטה של הטוקן שמתקבל. הערך config יכול להיות רק אחד מהבאים:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

אופציונלי. קלט בלבד. אי אפשר לשנות. הגדרה ספציפית ל-BidiGenerateContent.

uses integer

אופציונלי. קלט בלבד. אי אפשר לשנות. מספר הפעמים שבהם אפשר להשתמש באסימון. אם הערך הוא אפס, לא מוחלת מגבלה. חידוש של סשן API בשידור חי לא נחשב כשימוש. אם לא מציינים ערך, ברירת המחדל היא 1.

גוף התשובה

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע חדש של AuthToken.