Generating content

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

‫Method: models.generateContent

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

נקודת קצה

פוסט https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

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

model string

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

פורמט: models/{model} הפורמט שלו הוא models/{model}.

גוף הבקשה

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

שדות
contents[] object (Content)

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

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

tools[] object (Tool)

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

Tool הוא קטע קוד שמאפשר למערכת לקיים אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה, או קבוצת פעולות, מחוץ לידע ולהיקף של Model. הערכים הנתמכים של Tool הם 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 שלכם.

continuationToken string (bytes format)

אופציונלי. אסימון המשך אטום שמשמש להמשך היצירה מתגובה קודמת של models.generateContent או models.streamGenerateContent שהופסקה כשהשדה finishReason הוגדר כ-CONTINUATION. שימו לב שהשדה contents הוא שדה חובה, והוא חייב לשכפל באופן זהה את ההנחיה ואת היסטוריית השיחות מהבקשה הראשונית כשמספקים אסימון המשך בבקשה.

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

labels map (key: string, value: string)

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

אופציונלי. התוויות צריכות לעמוד בדרישות הרגילות של תוויות Cloud מאוחדות: - המפתחות של התוויות צריכים להתחיל באות. - המפתחות והערכים של התוויות יכולים להכיל עד 63 תווים (נקודות קוד ב-Unicode), שמורכבים רק מאותיות קטנות, ספרות, קווים תחתונים ומקפים. - אפשר להשתמש בתווים בינלאומיים.

אופן השימוש: - מזהי בטיחות מאגרגטורים: משתמשים במפתח safety_identifier (למשל {"safety_identifier": "user_session_123"})

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

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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-flash'});
const chatResponse = await chat.sendMessage({
  message: 'The final result is ' + resultValue,
});
console.log(chatResponse.text);

קונכייה


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

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.8-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.8-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.8-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.8-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.8-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.8-flash", "Good morning! How are you?", config);

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

גוף התשובה

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

Method: models.streamGenerateContent

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

נקודת קצה

פוסט https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

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

model string

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

פורמט: models/{model} הפורמט שלו הוא models/{model}.

גוף הבקשה

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

שדות
contents[] object (Content)

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

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

tools[] object (Tool)

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

Tool הוא קטע קוד שמאפשר למערכת לקיים אינטראקציה עם מערכות חיצוניות כדי לבצע פעולה, או קבוצת פעולות, מחוץ לידע ולהיקף של Model. הערכים הנתמכים של Tool הם 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 שלכם.

continuationToken string (bytes format)

אופציונלי. אסימון המשך אטום שמשמש להמשך היצירה מתגובה קודמת של models.generateContent או models.streamGenerateContent שהופסקה כשהשדה finishReason הוגדר כ-CONTINUATION. שימו לב שהשדה contents הוא שדה חובה, והוא חייב לשכפל באופן זהה את ההנחיה ואת היסטוריית השיחות מהבקשה הראשונית כשמספקים אסימון המשך בבקשה.

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

labels map (key: string, value: string)

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

אופציונלי. התוויות צריכות לעמוד בדרישות הרגילות של תוויות Cloud מאוחדות: - המפתחות של התוויות צריכים להתחיל באות. - המפתחות והערכים של התוויות יכולים להכיל עד 63 תווים (נקודות קוד ב-Unicode), שמורכבים רק מאותיות קטנות, ספרות, קווים תחתונים ומקפים. - אפשר להשתמש בתווים בינלאומיים.

אופן השימוש: - מזהי בטיחות מאגרגטורים: משתמשים במפתח safety_identifier (למשל {"safety_identifier": "user_session_123"})

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

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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.8-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.

שדות
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.

שדות
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 האפשרויות נחסמו בגלל תוכן לא בטוח שנוצר על ידי כלי ליצירת תמונות.

UsageMetadata

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

שדות
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

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

שדות
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 מודלים בשלב הזה הוצאו משימוש. אי אפשר להשתמש במודלים האלה.

מועמד

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

שדות
content object (Content)

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

finishReason enum (FinishReason)

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

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

safetyRatings[] object (SafetyRating)

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

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

citationMetadata object (CitationMetadata)

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

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

tokenCount integer

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

groundingAttributions[] object (GroundingAttribution)

פלט בלבד. פרטי שיוך (Attribution) של מקורות שתרמו לתשובה מבוססת-עובדות.

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

groundingMetadata object (GroundingMetadata)

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

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

avgLogprobs number

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

logprobsResult object (LogprobsResult)

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

urlContextMetadata object (UrlContextMetadata)

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

continuationToken string (bytes format)

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

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

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)
  },
  "continuationToken": string,
  "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 הבקשה סוננה על ידי כלל העברה לטיפול ברמה גבוהה יותר.
PUP_LIMITED_DISABLED מציין שיצירת הטוקנים הופסקה כי חשבון המשתמש מוגבל או מושבת בגלל הפרות של המדיניות בנושא שימוש אסור (PUP).
CONTINUATION יצירת הטוקנים הופסקה כי התשובה הגיעה למגבלת הטוקנים לכל בקשה, אבל היצירה עדיין לא הושלמה. אפשר להמשיך את התשובה של המודל באמצעות בקשה נוספת עם ה-continuationToken שהוחזר. הערה: הערך של maxOutputTokens מצטבר לאורך דילוגי ההמשך, וצריך להגדיל אותו באופן מונוטוני או להשמיט אותו.

GroundingAttribution

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

שדות
sourceId object (AttributionSourceId)

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

content object (Content)

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

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

AttributionSourceId

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

שדות
source Union type
זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
groundingPassage object (GroundingPassageId)

מזהה של פסקה מוטמעת.

semanticRetrieverChunk object (SemanticRetrieverChunk)

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{

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

GroundingPassageId

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

שדות
passageId string

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

partIndex integer

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

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

SemanticRetrieverChunk

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

שדות
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

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

שדות
groundingChunks[] object (GroundingChunk)

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

groundingSupports[] object (GroundingSupport)

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

webSearchQueries[] string

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

imageSearchQueries[] string

שאילתות לחיפוש תמונות שמשמשות לביסוס.

searchEntryPoint object (SearchEntryPoint)

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

retrievalMetadata object (RetrievalMetadata)

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

googleMapsWidgetContextToken string

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

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

SearchEntryPoint

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

שדות
renderedContent string

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

sdkBlob string (bytes format)

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

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

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

GroundingChunk

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

שדות
chunk_type Union 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
}

פיתוח אתרים

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

שדות
uri string

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

title string

פלט בלבד. הכותרת של החלק.

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

תמונה

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

שדות
sourceUri string

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

imageUri string

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

title string

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

domain string

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

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

RetrievedContext

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

שדות
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.

שדות
key string

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

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

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

stringListValue object (StringList)

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

numericValue number

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{
  "key": string,

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

StringList

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

שדות
values[] string

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

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

מפות

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

שדות
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 בבר Foo" או "האם Foo Bar נגיש לכיסאות גלגלים?"). כרגע אנחנו תומכים רק בקטעים מביקורות כמקורות.

שדות
reviewSnippets[] object (ReviewSnippet)

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

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

ReviewSnippet

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

שדות
reviewId string

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

googleMapsUri string

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

title string

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

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

GroundingSupport

תמיכה ב-Grounding.

שדות
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

קטע מהתוכן.

שדות
partIndex integer

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

startIndex integer

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

endIndex integer

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

text string

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

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

RetrievalMetadata

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

שדות
googleSearchDynamicRetrievalScore number

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

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

LogprobsResult

תוצאת Logprobs

שדות
topCandidates[] object (TopCandidates)

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

chosenCandidates[] object (Candidate)

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

logProbabilitySum number

סכום ההסתברויות ביומן לכל האסימונים.

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

TopCandidates

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

שדות
candidates[] object (Candidate)

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

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

מועמד

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

שדות
token string

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

tokenId integer

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

logProbability number

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

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

UrlContextMetadata

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

שדות
urlMetadata[] object (UrlMetadata)

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

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

UrlMetadata

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

שדות
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

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

שדות
citationSources[] object (CitationSource)

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

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

CitationSource

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

שדות
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 – תגובות שליליות או פוגעניות שמתמקדות בזהות או במאפיין מוגן. DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_TOXICITY

‫PaLM – תוכן גס, לא מכבד או פוגעני. DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_VIOLENCE

‫PaLM – מתאר תרחישים של אלימות נגד אדם או קבוצה, או תיאורים כלליים של אלימות קשה. DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_SEXUAL

‫PaLM – מכיל אזכורים של מעשים מיניים או תוכן גס אחר. DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_MEDICAL

‫PaLM – מקדם עצות רפואיות שלא נבדקו. DEPRECATED: PaLM-only category, not supported by Gemini models.

HARM_CATEGORY_DANGEROUS

‫PaLM – תוכן מסוכן שמקדם גרימת נזק, מעודד גרימת נזק או עוזר לבצע פעולות מזיקות. DEPRECATED: PaLM-only category, not supported by Gemini models.

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

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

שדות
modality enum (Modality)

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

tokenCount integer

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

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

מודליות

מודליות של חלק מהתוכן

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

SafetyRating

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

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

שדות
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

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

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

שדות
category enum (HarmCategory)

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

threshold enum (HarmBlockThreshold)

חובה. המדיניות הזו קובעת את סף הסבירות שבו נזק נחסם.

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

HarmBlockThreshold

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

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

ServiceTier

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

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

תוכן

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

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

שדות
parts[] object (Part)

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

role string

אופציונלי. יוצר התוכן. הערך חייב להיות "user" או "model".

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

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

חלק

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

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

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

שדות
thought boolean

אופציונלי. מציין אם החלק הוא מחשבה של המודל.

thoughtSignature string (bytes format)

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

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

partMetadata object (Struct format)

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

mediaResolution object (MediaResolution)

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

mediaProcessing enum (MediaProcessing)

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

audioTranscription object (AudioTranscription)

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

speechMetadata object (SpeechMetadata)

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

data Union type
זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
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
שולט בעיבוד מקדים נוסף של נתונים. צריך להגדיר את זה כש-inline_data או file_data קיימים כדי להגדיר עיבוד מראש של מדיה סטטית לכל חלק. זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
videoMetadata object (VideoMetadata)

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

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

כתם

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

אין לשלוח טקסט כבייטים גולמיים, אלא להשתמש בשדה "טקסט".

שדות
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.

displayName string

אופציונלי. מציין את השם שמשמש להפניה ל-blob הזה במודל (למשל, "my_blob.png"). משמש כמזהה של קובץ העזר של ה-BLOB כש-verbalizationMode מוגדר כ-REFERENCE_ONLY.

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

FunctionCall

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

שדות
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 שבוצעה על סמך חיזוי המודל.

שדות
id string

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

name string

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

response object (Struct format)

חובה. התגובה של הפונקציה בפורמט של אובייקט JSON. הגורמים ששולחים את הקריאה יכולים להשתמש בכל מפתח שמתאים לתחביר של הפונקציה כדי להחזיר את הפלט של הפונקציה, למשל "output",‏"result" וכו'. באופן ספציפי, אם הקריאה להפעלת הפונקציה נכשלה, התגובה יכולה לכלול את המפתח "error" כדי להחזיר למודל את פרטי השגיאה.

כדי לכלול מולטימדיה, אפשר להשתמש באובייקט משנה שמכיל מפתח "$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
הנתונים של החלק של התשובה לפונקציה. זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
inlineData object (FunctionResponseBlob)

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{

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

FunctionResponseBlob

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

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

שדות
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.

שדות
mimeType string

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

fileUri string

חובה. URI.

displayName string

אופציונלי. מציין את השם שמשמש להתייחסות לקובץ הזה במודל (למשל, "my_file.pdf"). משמש כמזהה של קובץ העזר כש-verbalizationMode מוגדר כ-REFERENCE_ONLY.

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

ExecutableCode

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

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

שדות
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.

שדות
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 המתאים.

שדות
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, ממופה אל Tool.google_maps.

ToolResponse

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

שדות
id string

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

toolType enum (ToolType)

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

response object (Struct format)

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

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

VideoMetadata

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

שדות
startOffset string (Duration format)

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

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

endOffset string (Duration format)

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

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

fps number

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

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

MediaResolution

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

שדות
value Union type
רמת הרזולוציה של המדיה. זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
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 כברירת מחדל, העיבוד הוא ספציפי למודל.
STATIC חילוץ פריימים בקצב קבוע. כל הפריימים ממוקמים בהקשר.
AGENTIC ניווט דינמי מבוסס-מודל. מומלץ לרוב תרחישי השימוש.

AudioTranscription

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

שדות
text string

חובה. הטקסט המתומלל של קטע האודיו הזה.

speakerLabel string

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

words[] object (WordInfo)

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

ייצוג ב-JSON
{
  "text": string,
  "speakerLabel": string,
  "words": [
    {
      object (WordInfo)
    }
  ]
}

WordInfo

מידע על מילה אחת שזוהתה.

שדות
word string

חובה. תמליל של המילה.

startOffset string (Duration format)

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

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

endOffset string (Duration format)

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

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

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

SpeechMetadata

מטא-נתונים של דיבור ב-text חלקים.

שדות
speaker string

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

style string

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

ייצוג ב-JSON
{
  "speaker": string,
  "style": string
}

סביבה

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

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

שדות
type enum (Type)

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

format string

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

title string

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

description string

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

nullable boolean

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

enum[] string

אופציונלי. ערכים אפשריים של הרכיב Type.STRING בפורמט enum. לדוגמה, אנחנו יכולים להגדיר Enum Direction בתור : {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 אורך מינימלי של Type.STRING

maxLength string (int64 format)

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

pattern string

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

example value (Value format)

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

anyOf[] object (Schema)

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

propertyOrdering[] string

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

default value (Value format)

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

items object (Schema)

אופציונלי. סכימה של הרכיבים של Type.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
}

סוג

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

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

כלי

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

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

שדות
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 והלקוח יכול להריץ.

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

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

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

response object (Schema)

אופציונלי. מתאר את הפלט מהפונקציה הזו בפורמט של סכימת JSON. משקף את אובייקט התגובה של 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.

שדות
dynamicRetrievalConfig object (DynamicRetrievalConfig)

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

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

DynamicRetrievalConfig

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

שדות
mode enum (Mode)

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

dynamicThreshold number

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

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

מצב

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

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

CodeExecution

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

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

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

GoogleSearch

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

שדות
timeRangeFilter object (Interval)

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

searchTypes object (SearchTypes)

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

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

מרווח

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

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

שדות
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.

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

WebSearch

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

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

ImageSearch

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

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

ComputerUse

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

שדות
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.

שדות
fileSearchStoreNames[] string

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

metadataFilter string

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

topK integer

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

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

McpServer

‫MCPServer הוא שרת שהמודל יכול לשלוח אליו קריאות כדי לבצע פעולות. זהו שרת שמטמיע את פרוטוקול ה-MCP.

שדות
name string

השם של שרת ה-MCP.

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

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{
  "name": string,

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

StreamableHttpTransport

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

שדות
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, שמספק הקשר גיאוגרפי לשאילתה של המשתמש.

שדות
enableWidget boolean

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

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

משאב REST: ‏ auth_tokens

משאב: AuthToken

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

שדות
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 בפועל נלקחת מהחיבור ל-Live API.

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

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

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

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

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

סוף השדות שמוציאים זה את זה.
uses integer

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

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

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

BidiGenerateContentSetup

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

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

שדות
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)

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

labels map (key: string, value: string)

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

אופציונלי. התוויות צריכות לעמוד בדרישות הרגילות של תוויות Cloud מאוחדות: - המפתחות של התוויות צריכים להתחיל באות. - המפתחות והערכים של התוויות יכולים להכיל עד 63 תווים (נקודות קוד ב-Unicode), שמורכבים רק מאותיות קטנות, ספרות, קווים תחתונים ומקפים. - אפשר להשתמש בתווים בינלאומיים.

אופן השימוש: - מזהי בטיחות מאגרגטורים: משתמשים במפתח safety_identifier (למשל {"safety_identifier": "user_session_123"})

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

ייצוג ב-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)
  },
  "labels": {
    string: string,
    ...
  }
}

GenerationConfig

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

שדות
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.

הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-responseFormat.

_responseJsonSchema
(deprecated)
value (Value format)

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

אם הוא מוגדר, צריך להשמיט את responseSchema, אבל responseMimeType נדרש.

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

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

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

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

הוצא משימוש. במקום זאת, אתם צריכים להשתמש ב-responseFormat.

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].

השדה הזה לא נתמך יותר, והמערכת מתעלמת ממנו באופן אוטומטי ב-Gemini 3.6 Flash ובמודלים חדשים יותר.

topP number

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

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

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

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

השדה הזה לא נתמך יותר, והמערכת מתעלמת ממנו באופן אוטומטי ב-Gemini 3.6 Flash ובמודלים חדשים יותר.

topK integer

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

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

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

השדה הזה לא נתמך יותר, והמערכת מתעלמת ממנו באופן אוטומטי ב-Gemini 3.6 Flash ובמודלים חדשים יותר.

seed integer

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

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

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

שדות
voiceConfig object (VoiceConfig)

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

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

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

languageCode string

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

הערכים התקינים הם: 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
ההגדרות של הרמקול שבו משתמשים. זו רשימה של שדות שמוציאים זה את זה. בתשובה יוגדר לכל היותר אחד מהשדות הבאים:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

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

voice string

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

  • שם הדובר של קולות מוכנים מראש (לדוגמה, Orus או Kore).
  • מזהה הקול של הקולות השמורים (לדוגמה, voice_xxx).
  • מפתח רפליקציה של קולות (לדוגמה, voicekey_xxx).
סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{

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

PrebuiltVoiceConfig

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

שדות
voiceName string

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

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

MultiSpeakerVoiceConfig

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

שדות
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

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

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

SpeakerVoiceConfig

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

שדות
speaker string

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

voiceConfig object (VoiceConfig)

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

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

ThinkingConfig

הגדרת תכונות החשיבה.

שדות
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

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

שדות
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

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

שדות
text object (TextResponseFormat)

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

audio object (AudioResponseFormat)

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

image object (ImageResponseFormat)

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

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

TextResponseFormat

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

שדות
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

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

שדות
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

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

שדות
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

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

שדות
targetLanguageCode string

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

echoTargetLanguage boolean

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

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

AudioTranscriptionConfig

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

שדות
languageCodes[] string

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

adaptationPhrases[]
(deprecated)
string

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

customVocabulary[] string

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

wordTimestamp boolean

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

diarization boolean

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

mode enum (Mode)

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

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

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

languageHints
(deprecated)
object (LanguageHints)

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

סוף השדות שמוציאים זה את זה.
ייצוג ב-JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

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

LanguageAuto

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

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

LanguageHints

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

שדות
languageCodes[]
(deprecated)
string

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

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

מצב

מצב תמלול.

טיפוסים בני מנייה (enum)
MODE_UNSPECIFIED לא צוין מצב תמלול.
VERBATIM מצב תמלול מילה במילה.
SMART מצב תמלול חכם.

RealtimeInputConfig

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

שדות
automaticActivityDetection object (AutomaticActivityDetection)

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

activityHandling enum (ActivityHandling)

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

turnCoverage enum (TurnCoverage)

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

interimTranscriptTimestampEnabled boolean

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

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

AutomaticActivityDetection

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

שדות
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.

שדות
handle string

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

מזהי ה-session_handle מגיעים מהערכים של SessionResumptionUpdate.token בחיבורים קודמים.

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

ContextWindowCompressionConfig

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

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

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

סוף השדות שמוציאים זה את זה.
triggerTokens string (int64 format)

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

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

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

ייצוג ב-JSON
{

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

SlidingWindow

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

שדות
targetTokens string (int64 format)

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

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

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

HistoryConfig

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

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

שדות
initialHistoryInClientContent boolean

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

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

‫Method: auth_tokens.create

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

נקודת קצה

פוסט https://generativelanguage.googleapis.com/v1beta/auth_tokens

גוף הבקשה

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

שדות
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 בפועל נלקחת מהחיבור ל-Live API.

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

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

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

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

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

סוף השדות שמוציאים זה את זה.
uses integer

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

גוף התשובה

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