Gemini 3 הוא קבוצת המודלים הכי חכמה שלנו עד היום, שמבוססת על יכולות חשיבה רציונלית מתקדמות. הפלטפורמה נועדה להפוך כל רעיון למציאות באמצעות שליטה בתהליכי עבודה מבוססי-סוכן, בתכנות אוטונומי ובמשימות מורכבות מולטי-מודאליות. במדריך הזה מוסברות התכונות העיקריות של משפחת מודלים Gemini 3 ואיך להפיק ממנה את המרב.
כדאי לעיין באוסף האפליקציות של Gemini 3 כדי לראות איך המודל מתמודד עם הסקת מסקנות מתקדמת, תכנות אוטונומי ומשימות מורכבות מרובות-מוֹדָלִים.
כדי להתחיל, כותבים כמה שורות קוד:
Python
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Find the race condition in this multi-threaded C++ snippet: [code here]",
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Find the race condition in this multi-threaded C++ snippet: [code here]",
});
console.log(response.text);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Find the race condition in this multi-threaded C++ snippet: [code here]"}]
}]
}'
נעים להכיר: סדרת Gemini 3
Gemini 3 Pro, המודל הראשון בסדרה החדשה, הוא המודל הכי מתאים למשימות מורכבות שדורשות ידע רחב על העולם וחשיבה רציונלית מתקדמת במגוון תחומים.
Gemini 3 Flash הוא המודל האחרון בסדרת 3, עם יכולות AI ברמת Pro, במהירות ובמחיר של Flash.
Nano Banana Pro (שנקרא גם Gemini 3 Pro Image) הוא המודל האיכותי ביותר שלנו עד היום ליצירת תמונות.
כל המודלים של Gemini 3 נמצאים כרגע בגרסת טרום-השקה.
| מזהה דגם | חלון ההקשר (נכנס / יוצא) | תאריך סף הידע | מחיר (קלט / פלט)* |
|---|---|---|---|
| gemini-3-pro-preview | 1M / 64k | ינואר 2025 | 2$ / 12$ (פחות מ-200,000 טוקנים) 4$ / 18$ (יותר מ-200,000 טוקנים) |
| gemini-3-flash-preview | 1M / 64k | ינואר 2025 | 0.50$ / 3$ |
| gemini-3-pro-image-preview | 65,000 / 32,000 | ינואר 2025 | 2$ (הזנת טקסט) / 0.134$ (פלט תמונה)** |
* המחירים הם למיליון טוקנים, אלא אם צוין אחרת. ** המחיר של התמונות משתנה בהתאם לרזולוציה. פרטים נוספים מופיעים בדף התמחור.
מידע נוסף על מגבלות, תמחור ופרטים נוספים זמין בדף המודלים.
תכונות חדשות ב-Gemini 3 API
Gemini 3 כולל פרמטרים חדשים שנועדו לתת למפתחים יותר שליטה בחביון, בעלות ובנאמנות של מודלים מרובי-מוֹדָלִים.
רמת החשיבה
כברירת מחדל, המודלים מסדרת Gemini 3 משתמשים בחשיבה דינמית כדי להסיק מסקנות מההנחיות. אפשר להשתמש בפרמטר thinking_level, ששולט בעומק המקסימלי של תהליך החשיבה הפנימי של המודל לפני שהוא יוצר תשובה. מודל Gemini 3 מתייחס לרמות האלה כאל הקצאות יחסיות של יכולות חשיבה ולא כאל הבטחות מחמירות לגבי טוקנים.
אם לא מציינים את thinking_level, Gemini 3 ישתמש ב-high כברירת מחדל. כדי לקבל תשובות מהירות יותר עם חביון נמוך יותר כשלא נדרשת הסקת מסקנות מורכבת, אפשר להגביל את רמת החשיבה של המודל ל-low.
רמות החשיבה של Gemini 3 Pro ו-Flash:
Gemini 3 Pro ו-Flash תומכים ברמות החשיבה הבאות:
-
low: מזעור זמן האחזור והעלות. הכי מתאים למשימות פשוטות של ביצוע הוראות, לצ'אט או לאפליקציות עם תפוקה גבוהה -
high(ברירת מחדל, דינמי): ממקסם את עומק ההיגיון. יכול להיות שייקח למודל הרבה יותר זמן להגיע לטוקן הראשון, אבל הפלט יהיה מנומק יותר.
רמות החשיבה של Gemini 3 Flash
בנוסף לרמות שצוינו למעלה, Gemini 3 Flash תומך גם ברמות החשיבה הבאות, שלא נתמכות כרגע ב-Gemini 3 Pro:
minimal: תואם להגדרה 'ללא חשיבה' עבור רוב השאילתות. יכול להיות שהמודל יחשוב בצורה מינימלית מאוד לגבי משימות מורכבות של כתיבת קוד. מצמצם את זמן האחזור של אפליקציות צ'אט או אפליקציות עם תפוקה גבוהה.
medium: חשיבה מאוזנת לרוב המשימות.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="How does AI work?",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="low")
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "How does AI work?",
config: {
thinkingConfig: {
thinkingLevel: "low",
}
},
});
console.log(response.text);
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "How does AI work?"}]
}],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "low"
}
}
}'
רזולוציית המדיה
Gemini 3 מציג שליטה מפורטת בעיבוד של ראייה מולטימודאלית באמצעות הפרמטר media_resolution. רזולוציות גבוהות יותר משפרות את היכולת של המודל לקרוא טקסט קטן או לזהות פרטים קטנים, אבל הן מגדילות את השימוש בטוקנים ואת זמן האחזור. הפרמטר media_resolution קובע את המספר המקסימלי של טוקנים שמוקצים לכל תמונת קלט או פריים של סרטון.
עכשיו אפשר להגדיר את הרזולוציה ל-media_resolution_low, media_resolution_medium, media_resolution_high או media_resolution_ultra_high לכל חלק מדיה בנפרד או באופן גלובלי (דרך generation_config, האפשרות הגלובלית לא זמינה לרזולוציה גבוהה במיוחד). אם לא מציינים, המודל משתמש בערכי ברירת מחדל אופטימליים על סמך סוג המדיה.
הגדרות מומלצות
| סוג מדיה | הגדרה מומלצת | מקסימום טוקנים | הנחיות לשימוש |
|---|---|---|---|
| תמונות | media_resolution_high |
1120 | מומלץ לרוב משימות ניתוח התמונות כדי להבטיח איכות מקסימלית. |
| קובצי PDF | media_resolution_medium |
560 | המודל הזה אופטימלי להבנת מסמכים, והאיכות שלו מגיעה בדרך כלל לרוויה ב-medium. הגדלה ל-high משפרת לעיתים רחוקות את תוצאות ה-OCR במסמכים רגילים. |
| סרטון (כללי) | media_resolution_low (או media_resolution_medium) |
70 (לכל פריים) | הערה: כשמדובר בסרטונים, ההגדרות low ו-medium מטופלות באופן זהה (70 טוקנים) כדי למקסם את השימוש בהקשר. זה מספיק לרוב המשימות של זיהוי פעולות ותיאור שלהן. |
| סרטון (עם הרבה טקסט) | media_resolution_high |
280 (לכל פריים) | נדרש רק אם תרחיש השימוש כולל קריאת טקסט צפוף (OCR) או פרטים קטנים בתוך פריים של סרטון. |
Python
from google import genai
from google.genai import types
import base64
# The media_resolution parameter is currently only available in the v1alpha API version.
client = genai.Client(http_options={'api_version': 'v1alpha'})
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=[
types.Content(
parts=[
types.Part(text="What is in this image?"),
types.Part(
inline_data=types.Blob(
mime_type="image/jpeg",
data=base64.b64decode("..."),
),
media_resolution={"level": "media_resolution_high"}
)
]
)
]
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
// The media_resolution parameter is currently only available in the v1alpha API version.
const ai = new GoogleGenAI({ apiVersion: "v1alpha" });
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: [
{
parts: [
{ text: "What is in this image?" },
{
inlineData: {
mimeType: "image/jpeg",
data: "...",
},
mediaResolution: {
level: "media_resolution_high"
}
}
]
}
]
});
console.log(response.text);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1alpha/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{ "text": "What is in this image?" },
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "..."
},
"mediaResolution": {
"level": "media_resolution_high"
}
}
]
}]
}'
טמפרטורה
ב-Gemini 3, מומלץ מאוד להשאיר את פרמטר הטמפרטורה בערך ברירת המחדל שלו, 1.0.
במודלים קודמים, כדאי היה לכוונן את הטמפרטורה כדי לשלוט ביצירתיות לעומת דטרמיניזם, אבל יכולות ההסקה של Gemini 3 מותאמות להגדרת ברירת המחדל. שינוי הטמפרטורה (הגדרה של ערך מתחת ל-1.0) עלול להוביל להתנהגות לא צפויה, כמו לולאות או ירידה בביצועים, במיוחד במשימות מורכבות של מתמטיקה או חשיבה.
חתימות של מחשבות
Gemini 3 משתמש בחתימות מחשבה כדי לשמור על הקשר של הנימוקים בין קריאות ה-API. החתימות האלה הן ייצוגים מוצפנים של תהליך החשיבה הפנימי של המודל. כדי לוודא שהמודל שומר על יכולות הנימוק שלו, צריך להחזיר למודל את החתימות האלה בבקשה בדיוק כפי שהן התקבלו:
קריאה לפונקציה (מחמירה): ה-API מבצע אימות מחמיר של 'התור הנוכחי'. אם חתימות חסרות, תוצג שגיאת 400.
טקסט/צ'אט: האימות לא נאכף באופן מחמיר, אבל אם לא תציינו חתימות, איכות הנימוקים והתשובות של המודל תהיה נמוכה יותר.
יצירה או עריכה של תמונות (מחמיר): ה-API מבצע אימות מחמיר של כל חלקי המודל, כולל
thoughtSignature. אם חתימות חסרות, תוצג שגיאת 400.
בקשה להפעלת פונקציה (אימות קפדני)
כש-Gemini יוצר functionCall, הוא מסתמך על thoughtSignature כדי לעבד את הפלט של הכלי בצורה נכונה בתור הבא. הקטע 'תור נוכחי' כולל את כל השלבים של המודל (functionCall) והמשתמש (functionResponse) שהתרחשו מאז ההודעה האחרונה של המשתמש text.
- קריאה יחידה לפונקציה: החלק
functionCallמכיל חתימה. עליך להחזיר את המכשיר. - קריאות לפונקציות במקביל: רק החלק הראשון
functionCallברשימה יכיל את החתימה. צריך להחזיר את החלקים בדיוק בסדר שבו הם התקבלו. - רב-שלבי (עוקב): אם המודל מפעיל כלי, מקבל תוצאה ומפעיל כלי אחר (באותה תור), שתי הפעלות הפונקציה כוללות חתימות. אתם צריכים להחזיר את כל החתימות שנצברו בהיסטוריה.
טקסט וסטרימינג
בשיחה רגילה או ביצירת טקסט, לא מובטח שתופיע חתימה.
- ללא סטרימינג: החלק הסופי של התוכן בתשובה עשוי להכיל
thoughtSignature, אבל הוא לא תמיד מופיע. אם מוחזרת תשובה כזו, כדאי לשלוח אותה בחזרה כדי לשמור על רמת הביצועים הטובה ביותר. - סטרימינג: אם נוצרת חתימה, יכול להיות שהיא תגיע בחלק סופי שמכיל חלק טקסט ריק. מוודאים שהכלי לניתוח הזרם בודק חתימות גם אם שדה הטקסט ריק.
יצירה ועריכה של תמונות
במקרה של gemini-3-pro-image-preview, חתימות מחשבה הן קריטיות לעריכה שיחתית. כשמבקשים מהמודל לשנות תמונה, הוא מסתמך על thoughtSignature מהתור הקודם כדי להבין את הקומפוזיציה והלוגיקה של התמונה המקורית.
- עריכה: החתימות מופיעות בוודאות בחלק הראשון אחרי המחשבות של התשובה (
textאוinlineData) ובכל חלקinlineDataשבהמשך. כדי להימנע משגיאות, צריך להחזיר את כל החתימות האלה.
דוגמאות לקוד
בקשות להפעלת פונקציות רבות (עוקבות)
המשתמש שואל שאלה שדורשת שני שלבים נפרדים (בדיקת טיסה -> הזמנת מונית) בתור אחד.
שלב 1: הפעלת הכלי לבחירת מודלים.
המודל מחזיר חתימה <Sig_A>
// Model Response (Turn 1, Step 1) { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": {...} }, "thoughtSignature": "<Sig_A>" // SAVE THIS } ] }
שלב 2: המשתמש שולח תוצאת חיפוש טיסות
אנחנו צריכים לשלוח בחזרה את <Sig_A> כדי לשמור על רצף המחשבה של המודל.
// User Request (Turn 1, Step 2) [ { "role": "user", "parts": [{ "text": "Check flight AA100..." }] }, { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": {...} }, "thoughtSignature": "<Sig_A>" // REQUIRED } ] }, { "role": "user", "parts": [{ "functionResponse": { "name": "check_flight", "response": {...} } }] } ]
שלב 3: המודל מתקשר עם הכלי למוניות
המודל זוכר את העיכוב בטיסה באמצעות <Sig_A> ועכשיו הוא מחליט להזמין מונית. נוצרת חתימה חדשה <Sig_B>.
// Model Response (Turn 1, Step 3) { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", "args": {...} }, "thoughtSignature": "<Sig_B>" // SAVE THIS } ] }
שלב 4: המשתמש שולח תוצאה של מונית
כדי להשלים את התור, צריך לשלוח בחזרה את כל השרשרת: <Sig_A> וגם <Sig_B>.
// User Request (Turn 1, Step 4) [ // ... previous history ... { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", ... }, "thoughtSignature": "<Sig_A>" } ] }, { "role": "user", "parts": [{ "functionResponse": {...} }] }, { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", ... }, "thoughtSignature": "<Sig_B>" } ] }, { "role": "user", "parts": [{ "functionResponse": {...} }] } ]
בקשות מקבילות להפעלת פונקציות
המשתמש שואל: "Check the weather in Paris and London". המודל מחזיר שתי קריאות לפונקציות בתשובה אחת.
// User Request (Sending Parallel Results) [ { "role": "user", "parts": [ { "text": "Check the weather in Paris and London." } ] }, { "role": "model", "parts": [ // 1. First Function Call has the signature { "functionCall": { "name": "check_weather", "args": { "city": "Paris" } }, "thoughtSignature": "<Signature_A>" }, // 2. Subsequent parallel calls DO NOT have signatures { "functionCall": { "name": "check_weather", "args": { "city": "London" } } } ] }, { "role": "user", "parts": [ // 3. Function Responses are grouped together in the next block { "functionResponse": { "name": "check_weather", "response": { "temp": "15C" } } }, { "functionResponse": { "name": "check_weather", "response": { "temp": "12C" } } } ] } ]
טקסט/הסקה בהקשר (ללא אימות)
המשתמש שואל שאלה שדורשת נימוק בהקשר ללא שימוש בכלים חיצוניים. החתימה לא עוברת אימות קפדני, אבל היא עוזרת למודל לשמור על שרשרת ההיגיון לשאלות המשך.
// User Request (Follow-up question) [ { "role": "user", "parts": [{ "text": "What are the risks of this investment?" }] }, { "role": "model", "parts": [ { "text": "I need to calculate the risk step-by-step. First, I'll look at volatility...", "thoughtSignature": "<Signature_C>" // Recommended to include } ] }, { "role": "user", "parts": [{ "text": "Summarize that in one sentence." }] } ]
יצירה ועריכה של תמונות
כשמדובר ביצירת תמונות, אנחנו בודקים את החתימות בקפדנות. הן מופיעות בחלק הראשון (טקסט או תמונה) ובכל חלקי התמונה הבאים. צריך להחזיר את כולם בתור הבא.
// Model Response (Turn 1) { "role": "model", "parts": [ // 1. First part ALWAYS has a signature (even if text) { "text": "I will generate a cyberpunk city...", "thoughtSignature": "<Signature_D>" }, // 2. ALL InlineData (Image) parts ALWAYS have signatures { "inlineData": { ... }, "thoughtSignature": "<Signature_E>" }, ] } // User Request (Turn 2 - Requesting an Edit) { "contents": [ // History must include ALL signatures received { "role": "user", "parts": [{ "text": "Generate a cyberpunk city" }] }, { "role": "model", "parts": [ { "text": "...", "thoughtSignature": "<Signature_D>" }, { "inlineData": "...", "thoughtSignature": "<Signature_E>" }, ] }, // New User Prompt { "role": "user", "parts": [{ "text": "Make it daytime." }] } ] }
מעבר ממודלים אחרים
אם מעבירים מעקב שיחה ממודל אחר (למשל, Gemini 2.5) או להזריק קריאה לפונקציה בהתאמה אישית שלא נוצרה על ידי Gemini 3, לא תהיה לכם חתימה תקפה.
כדי לעקוף את האימות המחמיר בתרחישים הספציפיים האלה, מאכלסים את השדה במחרוזת ה-placeholder הספציפית הזו: "thoughtSignature": "context_engineering_is_the_way_to_go"
פלט מובנה עם כלים
מודלים של Gemini 3 מאפשרים לכם לשלב פלט מובנה עם כלים מובנים, כולל Grounding עם חיפוש Google, הקשר של כתובת URL והרצת קוד.
Python
from google import genai
from google.genai import types
from pydantic import BaseModel, Field
from typing import List
class MatchResult(BaseModel):
winner: str = Field(description="The name of the winner.")
final_match_score: str = Field(description="The final match score.")
scorers: List[str] = Field(description="The name of the scorer.")
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Search for all details for the latest Euro.",
config={
"tools": [
{"google_search": {}},
{"url_context": {}}
],
"response_mime_type": "application/json",
"response_json_schema": MatchResult.model_json_schema(),
},
)
result = MatchResult.model_validate_json(response.text)
print(result)
JavaScript
import { GoogleGenAI } from "@google/genai";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";
const ai = new GoogleGenAI({});
const matchSchema = z.object({
winner: z.string().describe("The name of the winner."),
final_match_score: z.string().describe("The final score."),
scorers: z.array(z.string()).describe("The name of the scorer.")
});
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Search for all details for the latest Euro.",
config: {
tools: [
{ googleSearch: {} },
{ urlContext: {} }
],
responseMimeType: "application/json",
responseJsonSchema: zodToJsonSchema(matchSchema),
},
});
const match = matchSchema.parse(JSON.parse(response.text));
console.log(match);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Search for all details for the latest Euro."}]
}],
"tools": [
{"googleSearch": {}},
{"urlContext": {}}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseJsonSchema": {
"type": "object",
"properties": {
"winner": {"type": "string", "description": "The name of the winner."},
"final_match_score": {"type": "string", "description": "The final score."},
"scorers": {
"type": "array",
"items": {"type": "string"},
"description": "The name of the scorer."
}
},
"required": ["winner", "final_match_score", "scorers"]
}
}
}'
יצירת תמונות
Gemini 3 Pro Image מאפשר לכם ליצור ולערוך תמונות באמצעות הנחיות טקסט. הוא משתמש בהיגיון כדי "לחשוב" על ההנחיה, ויכול לאחזר נתונים בזמן אמת – כמו תחזיות מזג אוויר או תרשימי מניות – לפני שהוא משתמש בהארקה של חיפוש Google כדי ליצור תמונות באיכות גבוהה.
יכולות חדשות ומשופרות:
- רזולוציית 4K ועיבוד טקסט: יצירת טקסט ודיאגרמות חדים וקריאים ברזולוציות של עד 2K ו-4K.
- יצירה מבוססת-קרקע: אפשר להשתמש בכלי
google_searchכדי לאמת עובדות וליצור תמונות על סמך מידע מהעולם האמיתי. - עריכה באמצעות הנחיות: עריכת תמונות בכמה שלבים פשוט על ידי בקשת שינויים (לדוגמה, "Make the background a sunset" (צור רקע של שקיעה). תהליך העבודה הזה מסתמך על חתימות מחשבה כדי לשמור על ההקשר החזותי בין התורות.
פרטים מלאים על יחסי גובה-רוחב, תהליכי עריכה ואפשרויות הגדרה זמינים במדריך ליצירת תמונות.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="Generate an infographic of the current weather in Tokyo.",
config=types.GenerateContentConfig(
tools=[{"google_search": {}}],
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="4K"
)
)
)
image_parts = [part for part in response.parts if part.inline_data]
if image_parts:
image = image_parts[0].as_image()
image.save('weather_tokyo.png')
image.show()
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-image-preview",
contents: "Generate a visualization of the current weather in Tokyo.",
config: {
tools: [{ googleSearch: {} }],
imageConfig: {
aspectRatio: "16:9",
imageSize: "4K"
}
}
});
for (const part of response.candidates[0].content.parts) {
if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, "base64");
fs.writeFileSync("weather_tokyo.png", buffer);
}
}
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Generate a visualization of the current weather in Tokyo."}]
}],
"tools": [{"googleSearch": {}}],
"generationConfig": {
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "4K"
}
}
}'
דוגמה לתשובה

תשובות פונקציה מרובות מצבים
התכונה 'הפעלת פונקציות מרובות מצבים' מאפשרת למשתמשים לקבל תשובות לפונקציות שמכילות אובייקטים מרובי מצבים, וכך לשפר את השימוש ביכולות הפעלת הפונקציות של המודל. התכונה 'קריאה לפונקציה' הרגילה תומכת רק בתשובות לפונקציות שמבוססות על טקסט:
Python
from google import genai
from google.genai import types
import requests
client = genai.Client()
# This is a manual, two turn multimodal function calling workflow:
# 1. Define the function tool
get_image_declaration = types.FunctionDeclaration(
name="get_image",
description="Retrieves the image file reference for a specific order item.",
parameters={
"type": "object",
"properties": {
"item_name": {
"type": "string",
"description": "The name or description of the item ordered (e.g., 'instrument')."
}
},
"required": ["item_name"],
},
)
tool_config = types.Tool(function_declarations=[get_image_declaration])
# 2. Send a message that triggers the tool
prompt = "Show me the instrument I ordered last month."
response_1 = client.models.generate_content(
model="gemini-3-flash-preview",
contents=[prompt],
config=types.GenerateContentConfig(
tools=[tool_config],
)
)
# 3. Handle the function call
function_call = response_1.function_calls[0]
requested_item = function_call.args["item_name"]
print(f"Model wants to call: {function_call.name}")
# Execute your tool (e.g., call an API)
# (This is a mock response for the example)
print(f"Calling external tool for: {requested_item}")
function_response_data = {
"image_ref": {"$ref": "instrument.jpg"},
}
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
function_response_multimodal_data = types.FunctionResponsePart(
inline_data=types.FunctionResponseBlob(
mime_type="image/jpeg",
display_name="instrument.jpg",
data=image_bytes,
)
)
# 4. Send the tool's result back
# Append this turn's messages to history for a final response.
history = [
types.Content(role="user", parts=[types.Part(text=prompt)]),
response_1.candidates[0].content,
types.Content(
role="tool",
parts=[
types.Part.from_function_response(
name=function_call.name,
response=function_response_data,
parts=[function_response_multimodal_data]
)
],
)
]
response_2 = client.models.generate_content(
model="gemini-3-flash-preview",
contents=history,
config=types.GenerateContentConfig(
tools=[tool_config],
thinking_config=types.ThinkingConfig(include_thoughts=True)
),
)
print(f"\nFinal model response: {response_2.text}")
JavaScript
import { GoogleGenAI, Type } from '@google/genai';
const client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
// This is a manual, two turn multimodal function calling workflow:
// 1. Define the function tool
const getImageDeclaration = {
name: 'get_image',
description: 'Retrieves the image file reference for a specific order item.',
parameters: {
type: Type.OBJECT,
properties: {
item_name: {
type: Type.STRING,
description: "The name or description of the item ordered (e.g., 'instrument').",
},
},
required: ['item_name'],
},
};
const toolConfig = {
functionDeclarations: [getImageDeclaration],
};
// 2. Send a message that triggers the tool
const prompt = 'Show me the instrument I ordered last month.';
const response1 = await client.models.generateContent({
model: 'gemini-3-flash-preview',
contents: prompt,
config: {
tools: [toolConfig],
},
});
// 3. Handle the function call
const functionCall = response1.functionCalls[0];
const requestedItem = functionCall.args.item_name;
console.log(`Model wants to call: ${functionCall.name}`);
// Execute your tool (e.g., call an API)
// (This is a mock response for the example)
console.log(`Calling external tool for: ${requestedItem}`);
const functionResponseData = {
image_ref: { $ref: 'instrument.jpg' },
};
const imageUrl = "https://goo.gle/instrument-img";
const response = await fetch(imageUrl);
const imageArrayBuffer = await response.arrayBuffer();
const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');
const functionResponseMultimodalData = {
inlineData: {
mimeType: 'image/jpeg',
displayName: 'instrument.jpg',
data: base64ImageData,
},
};
// 4. Send the tool's result back
// Append this turn's messages to history for a final response.
const history = [
{ role: 'user', parts: [{ text: prompt }] },
response1.candidates[0].content,
{
role: 'tool',
parts: [
{
functionResponse: {
name: functionCall.name,
response: functionResponseData,
parts: [functionResponseMultimodalData],
},
},
],
},
];
const response2 = await client.models.generateContent({
model: 'gemini-3-flash-preview',
contents: history,
config: {
tools: [toolConfig],
thinkingConfig: { includeThoughts: true },
},
});
console.log(`\nFinal model response: ${response2.text}`);
REST
IMG_URL="https://goo.gle/instrument-img"
MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
MIME_TYPE="image/jpeg"
fi
# Check for macOS
if [[ "$(uname)" == "Darwin" ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
...,
{
"role": "user",
"parts": [
{
"functionResponse": {
"name": "get_image",
"response": {
"image_ref": {
"$ref": "instrument.jpg"
}
},
"parts": [
{
"inlineData": {
"displayName": "instrument.jpg",
"mimeType":"'"$MIME_TYPE"'",
"data": "'"$IMAGE_B64"'"
}
}
]
}
}
]
}
]
}'
העברה מ-Gemini 2.5
Gemini 3 היא קבוצת המודלים הכי מתקדמת שלנו עד היום, והיא מציעה שיפור הדרגתי בהשוואה ל-Gemini 2.5. כשמבצעים העברה, חשוב לקחת בחשבון את הנקודות הבאות:
- מצב Thinking: אם השתמשתם בעבר בהנדסת הנחיות מורכבת (כמו שרשרת מחשבות) כדי לגרום ל-Gemini 2.5 להסיק מסקנות, נסו את Gemini 3 עם
thinking_level: "high"והנחיות פשוטות יותר. - הגדרות הטמפרטורה: אם בקוד הקיים שלכם מוגדרת טמפרטורה באופן מפורש (במיוחד אם מדובר בערכים נמוכים של פלט דטרמיניסטי), מומלץ להסיר את הפרמטר הזה ולהשתמש בערך ברירת המחדל של Gemini 3, שהוא 1.0, כדי למנוע בעיות פוטנציאליות של לולאות או ירידה בביצועים במשימות מורכבות.
- הבנת מסמכים וקובצי PDF: הרזולוציה של ה-OCR שמוגדרת כברירת מחדל לקובצי PDF השתנתה. אם הסתמכתם על התנהגות ספציפית של ניתוח מסמכים צפופים, כדאי לבדוק את ההגדרה החדשה
media_resolution_highכדי לוודא שהדיוק נשמר. - צריכת אסימונים: המעבר לברירות המחדל של Gemini 3 עשוי להגדיל את השימוש באסימונים עבור קובצי PDF, אבל להקטין את השימוש באסימונים עבור סרטונים. אם הבקשות חורגות עכשיו מחלון ההקשר בגלל רזולוציות ברירת מחדל גבוהות יותר, מומלץ להקטין באופן מפורש את רזולוציית המדיה.
- פילוח תמונות: יכולות פילוח תמונות (החזרת מסכות ברמת הפיקסל לאובייקטים) לא נתמכות ב-Gemini 3 Pro או ב-Gemini 3 Flash. לסביבות עבודה שדורשות פילוח תמונות מקורי, מומלץ להמשיך להשתמש ב-Gemini 2.5 Flash עם השבתת המצב 'חשיבה' או ב-Gemini Robotics-ER 1.5.
- תמיכה בכלי: כלי ההארקה של מפות Google וכלי השימוש במחשב עדיין לא נתמכים במודלים של Gemini 3, ולכן הם לא יועברו. בנוסף, עדיין אין תמיכה בשילוב של כלים מובנים עם קריאה לפונקציות.
תאימות ל-OpenAI
למשתמשים שמשתמשים בשכבת התאימות של OpenAI, פרמטרים רגילים ממופים אוטומטית למקבילים ב-Gemini:
-
reasoning_effort(OAI) ממופה ל-thinking_level(Gemini). שימו לב שההגדרהreasoning_effortmedium (בינוני) תואמת להגדרהthinking_levelhigh (גבוה) ב-Gemini 3 Flash.
שיטות מומלצות לכתיבת הנחיות
Gemini 3 הוא מודל הסקת מסקנות, ולכן צריך לשנות את ההנחיות שנותנים לו.
- הוראות מדויקות: חשוב להקפיד על תמציתיות בהנחיות. כדי לקבל את התשובות הכי טובות מ-Gemini 3, מומלץ לתת הוראות ברורות וישירות. יכול להיות שהיא תנתח יתר על המידה טכניקות מפורטות או מורכבות מדי של הנדסת הנחיות שמשמשות מודלים ישנים יותר.
- פירוט הפלט: כברירת מחדל, Gemini 3 פחות מפורט ומעדיף לספק תשובות ישירות ויעילות. אם התרחיש לדוגמה שלכם דורש אישיות יותר שיחתית או "פטפטנית", אתם צריכים להנחות את המודל באופן מפורש בהנחיה (למשל, "תסביר את זה כמו עוזר ידידותי ופטפטן").
- ניהול הקשר: כשעובדים עם מערכי נתונים גדולים (למשל, ספרים שלמים, בסיסי קוד או סרטונים ארוכים), כדאי למקם את ההוראות או השאלות הספציפיות בסוף ההנחיה, אחרי הקשר של הנתונים. כדי להצמיד את ההיגיון של המודל לנתונים שסיפקתם, כדאי להתחיל את השאלה בניסוח כמו "על סמך המידע שלמעלה...".
מידע נוסף על אסטרטגיות לעיצוב הנחיות זמין במדריך להנדסת הנחיות.
שאלות נפוצות
מהו תאריך סיום הידע של Gemini 3? המידע במודלים של Gemini 3 מוגבל עד ינואר 2025. כדי לקבל מידע עדכני יותר, אפשר להשתמש בכלי הארקה של חיפוש.
מהן המגבלות של חלון ההקשר? מודלים של Gemini 3 תומכים בחלון הקשר של מיליון טוקנים של קלט ועד 64 אלף טוקנים של פלט.
יש רמת שימוש חינמית ב-Gemini 3? ל-Gemini 3 Flash
gemini-3-flash-previewיש רמת שימוש חינמית ב-Gemini API. אתם יכולים לנסות את Gemini 3 Pro ו-Flash בחינם ב-Google AI Studio, אבל נכון לעכשיו, אין רמת שימוש חינמית ל-gemini-3-pro-previewב-Gemini API.האם קוד
thinking_budgetהישן שלי ימשיך לפעול? כן, עדיין יש תמיכה ב-thinking_budgetלצורך תאימות לאחור, אבל מומלץ לעבור ל-thinking_levelכדי לקבל ביצועים צפויים יותר. אל תשתמשו בשניהם באותה בקשה.האם Gemini 3 תומך ב-Batch API? כן, Gemini 3 תומך ב-Batch API.
האם יש תמיכה בשמירת נתונים במטמון לפי הקשר? כן, שמירת ההקשר במטמון נתמכת ב-Gemini 3.
אילו כלים נתמכים ב-Gemini 3? Gemini 3 תומך בחיפוש Google, בחיפוש קבצים, בהרצת קוד ובהקשר של כתובת URL. הוא גם תומך בקריאה לפונקציה רגילה עבור כלים מותאמים אישית משלכם (אבל לא עם כלים מובנים). חשוב לזכור שכרגע אין תמיכה בהארקה באמצעות מפות Google ובשימוש במחשב.
השלבים הבאים
- איך מתחילים לעבוד עם Gemini 3 Cookbook
- במדריך הייעודי בנושא רמות חשיבה מוסבר איך עוברים מתקציב חשיבה לרמות חשיבה.