התכונה 'התאמה לנושא' בחיפוש Google מחברת את מודל Gemini לתוכן אינטרנט בזמן אמת, והיא פועלת בכל השפות הזמינות. כך Gemini יכול לספק תשובות מדויקות יותר ולציין מקורות מאומתים מעבר למגבלת הידע שלו.
הכלי הזה עוזר לכם ליצור אפליקציות שיכולות:
- שיפור הדיוק העובדתי: כדי לצמצם את ההזיות של המודלים, התשובות מבוססות על מידע מהעולם האמיתי.
- גישה למידע בזמן אמת: מענה על שאלות לגבי אירועים ונושאים שקרו לאחרונה.
ציון מקורות: כדי לעורר אמון בקרב המשתמשים, כדאי להציג את המקורות של ההצהרות של המודל.
Python
from google import genai
from google.genai import types
# Configure the client
client = genai.Client()
# Define the grounding tool
grounding_tool = types.Tool(
google_search=types.GoogleSearch()
)
# Configure generation settings
config = types.GenerateContentConfig(
tools=[grounding_tool]
)
# Make the request
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Who won the euro 2024?",
config=config,
)
# Print the grounded response
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
// Configure the client
const ai = new GoogleGenAI();
// Define the grounding tool
const groundingTool = {
googleSearch: {},
};
// Configure generation settings
const config = {
tools: [groundingTool],
};
// Make the request
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
contents: "Who won the euro 2024?",
config,
});
// Print the grounded response
console.log(response.text);
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"parts": [
{"text": "Who won the euro 2024?"}
]
}
],
"tools": [
{
"google_search": {}
}
]
}'
מידע נוסף זמין במחברות של כלי החיפוש.
איך פועלת האפשרות 'הסבר על הנושא' בחיפוש Google
כשמפעילים את הכלי google_search
, המודל מטפל באופן אוטומטי בכל תהליך העבודה של החיפוש, העיבוד והציטוט של המידע.
- הנחיה למשתמש: האפליקציה שולחת הנחיה של משתמש ל-Gemini API כשהכלי
google_search
מופעל. - ניתוח ההנחיה: המודל מנתח את ההנחיה ומחליט אם חיפוש ב-Google יכול לשפר את התשובה.
- חיפוש Google: אם יש צורך, המודל יוצר באופן אוטומטי שאילתת חיפוש אחת או יותר ומריץ אותן.
- עיבוד תוצאות החיפוש: המודלים מעבדים את תוצאות החיפוש, מסנתזים את המידע ומנסחים תשובה.
- תגובה מבוססת: ה-API מחזיר תשובה סופית ידידותית למשתמש שמבוססת על תוצאות החיפוש. התשובה הזו כוללת את התשובה בטקסט של המודל וגם
groundingMetadata
עם שאילתות החיפוש, תוצאות האינטרנט והציטוטים.
הסבר על תגובת ההארקה
כשתגובה מושתתת בהצלחה, היא כוללת את השדה groundingMetadata
. הנתונים המובְנים האלה חיוניים לאימות ההצהרות וליצירת חוויית שימוש עשירה בציטוטים באפליקציה.
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title."
}
],
"role": "model"
},
"groundingMetadata": {
"webSearchQueries": [
"UEFA Euro 2024 winner",
"who won euro 2024"
],
"searchEntryPoint": {
"renderedContent": "<!-- HTML and CSS for the search widget -->"
},
"groundingChunks": [
{"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "aljazeera.com"}},
{"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "uefa.com"}}
],
"groundingSupports": [
{
"segment": {"startIndex": 0, "endIndex": 85, "text": "Spain won Euro 2024, defeatin..."},
"groundingChunkIndices": [0]
},
{
"segment": {"startIndex": 86, "endIndex": 210, "text": "This victory marks Spain's..."},
"groundingChunkIndices": [0, 1]
}
]
}
}
]
}
ה-Gemini API מחזיר את המידע הבא באמצעות groundingMetadata
:
webSearchQueries
: מערך של שאילתות החיפוש שבהן נעשה שימוש. האפשרות הזו שימושית לניפוי באגים ולהבנת תהליך ההסקה של המודל.searchEntryPoint
: מכיל את ה-HTML וה-CSS להצגת ההצעות הנדרשות לחיפוש. הדרישות המלאות לשימוש מפורטות בתנאים וההגבלות.groundingChunks
: מערך של אובייקטים שמכיל את מקורות האינטרנט (uri
ו-title
).groundingSupports
: מערך קטעים שמקשר את התגובה של המודלtext
למקורות ב-groundingChunks
. כל מקטע מקשר טקסטsegment
(המוגדרת על ידיstartIndex
ו-endIndex
) ל-groundingChunkIndices
אחד או יותר. זהו המפתח ליצירת ציטוטים בגוף הטקסט.
אפשר להשתמש ב'התאמה לנתונים' בחיפוש Google גם בשילוב עם הכלי להקשר של כתובות URL כדי להתבסס בתשובות גם על נתונים גלויים באינטרנט וגם על כתובות ה-URL הספציפיות שסיפקתם.
שיוך מקורות באמצעות הפניות בתוך הטקסט
ה-API מחזיר נתוני ציטוט מובְנים, כך שיש לכם שליטה מלאה על אופן הצגת המקורות בממשק המשתמש. אפשר להשתמש בשדות groundingSupports
ו-groundingChunks
כדי לקשר את ההצהרות של המודל ישירות למקורות שלהן. לפניכם דפוס נפוץ לעיבוד המטא-נתונים ליצירת תגובה עם ציטוטים בתוך הטקסט שניתן ללחוץ עליהם.
Python
def add_citations(response):
text = response.text
supports = response.candidates[0].grounding_metadata.grounding_supports
chunks = response.candidates[0].grounding_metadata.grounding_chunks
# Sort supports by end_index in descending order to avoid shifting issues when inserting.
sorted_supports = sorted(supports, key=lambda s: s.segment.end_index, reverse=True)
for support in sorted_supports:
end_index = support.segment.end_index
if support.grounding_chunk_indices:
# Create citation string like [1](link1)[2](link2)
citation_links = []
for i in support.grounding_chunk_indices:
if i < len(chunks):
uri = chunks[i].web.uri
citation_links.append(f"[{i + 1}]({uri})")
citation_string = ", ".join(citation_links)
text = text[:end_index] + citation_string + text[end_index:]
return text
# Assuming response with grounding metadata
text_with_citations = add_citations(response)
print(text_with_citations)
JavaScript
function addCitations(response) {
let text = response.text;
const supports = response.candidates[0]?.groundingMetadata?.groundingSupports;
const chunks = response.candidates[0]?.groundingMetadata?.groundingChunks;
// Sort supports by end_index in descending order to avoid shifting issues when inserting.
const sortedSupports = [...supports].sort(
(a, b) => (b.segment?.endIndex ?? 0) - (a.segment?.endIndex ?? 0),
);
for (const support of sortedSupports) {
const endIndex = support.segment?.endIndex;
if (endIndex === undefined || !support.groundingChunkIndices?.length) {
continue;
}
const citationLinks = support.groundingChunkIndices
.map(i => {
const uri = chunks[i]?.web?.uri;
if (uri) {
return `[${i + 1}](${uri})`;
}
return null;
})
.filter(Boolean);
if (citationLinks.length > 0) {
const citationString = citationLinks.join(", ");
text = text.slice(0, endIndex) + citationString + text.slice(endIndex);
}
}
return text;
}
const textWithCitations = addCitations(response);
console.log(textWithCitations);
התגובה החדשה עם הפניות בתוך הטקסט תיראה כך:
Spain won Euro 2024, defeating England 2-1 in the final.[1](https:/...), [2](https:/...), [4](https:/...), [5](https:/...) This victory marks Spain's record-breaking fourth European Championship title.[5]((https:/...), [2](https:/...), [3](https:/...), [4](https:/...)
תמחור
כשמשתמשים ב-Grounding עם חיפוש Google, המערכת מחייבת את הפרויקט לפי בקשת API שכוללת את הכלי google_search
. אם המודל מחליט להריץ כמה שאילתות חיפוש כדי לענות להנחיה אחת (לדוגמה, חיפוש של "UEFA Euro 2024 winner"
ו-"Spain vs England Euro 2024 final score"
באותה קריאה ל-API), המערכת מחשיבה זאת כשימוש יחיד בכלי לחיוב עבור הבקשה הזו.
מידע מפורט על התמחור זמין בדף התמחור של Gemini API.
מודלים נתמכים
מודלים ניסיוניים ומודלים בתצוגה מקדימה לא נכללים. היכולות שלהם מפורטות בדף סקירה כללית של הדגם.
דגם | חיפוש עם עיגון בנתונים |
---|---|
Gemini 2.5 Pro | ✔️ |
Gemini 2.5 Flash | ✔️ |
Gemini 2.0 Flash | ✔️ |
Gemini 1.5 Pro | ✔️ |
Gemini 1.5 Flash | ✔️ |
חיבור לקרקע במודלים של Gemini 1.5 (דור קודם)
הכלי google_search
מומלץ ל-Gemini 2.0 ואילך, אבל ב-Gemini 1.5 יש תמיכה בכלי מדור קודם בשם google_search_retrieval
. הכלי הזה מספק מצב dynamic
שמאפשר למודל להחליט אם לבצע חיפוש על סמך רמת האמון שלו בכך שההנחיה מחייבת מידע עדכני. אם רמת הוודאות של המודל גבוהה מ-dynamic_threshold
שהגדרתם (ערך בין 0.0 ל-1.0), הוא יבצע חיפוש.
Python
# Note: This is a legacy approach for Gemini 1.5 models.
# The 'google_search' tool is recommended for all new development.
import os
from google import genai
from google.genai import types
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
retrieval_tool = types.Tool(
google_search_retrieval=types.GoogleSearchRetrieval(
dynamic_retrieval_config=types.DynamicRetrievalConfig(
mode=types.DynamicRetrievalConfigMode.MODE_DYNAMIC,
dynamic_threshold=0.7 # Only search if confidence > 70%
)
)
)
config = types.GenerateContentConfig(
tools=[retrieval_tool]
)
response = client.models.generate_content(
model='gemini-1.5-flash',
contents="Who won the euro 2024?",
config=config,
)
print(response.text)
if not response.candidates[0].grounding_metadata:
print("\nModel answered from its own knowledge.")
JavaScript
// Note: This is a legacy approach for Gemini 1.5 models.
// The 'googleSearch' tool is recommended for all new development.
import { GoogleGenAI, DynamicRetrievalConfigMode } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const retrievalTool = {
googleSearchRetrieval: {
dynamicRetrievalConfig: {
mode: DynamicRetrievalConfigMode.MODE_DYNAMIC,
dynamicThreshold: 0.7, // Only search if confidence > 70%
},
},
};
const config = {
tools: [retrievalTool],
};
const response = await ai.models.generateContent({
model: "gemini-1.5-flash",
contents: "Who won the euro 2024?",
config,
});
console.log(response.text);
if (!response.candidates?.[0]?.groundingMetadata) {
console.log("\nModel answered from its own knowledge.");
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{"parts": [{"text": "Who won the euro 2024?"}]}
],
"tools": [{
"google_search_retrieval": {
"dynamic_retrieval_config": {
"mode": "MODE_DYNAMIC",
"dynamic_threshold": 0.7
}
}
}]
}'
המאמרים הבאים
- כדאי לנסות את הכנה לקראת השימוש בחיפוש Google במדריך למתכונים של Gemini API.
- מידע על כלים זמינים אחרים, כמו קריאה לפונקציה
- בכלי להצגת הקשר של כתובות URL מוסבר איך להוסיף להנחיות כתובות URL ספציפיות.