Grounding با جستجوی Google، مدل Gemini را به محتوای وب همزمان متصل میکند و با همه زبانهای موجود کار میکند. این به Gemini اجازه می دهد تا پاسخ های دقیق تری ارائه دهد و منابع قابل تأیید را فراتر از حد دانش خود استناد کند.
Grounding به شما کمک می کند تا برنامه هایی بسازید که می توانند:
- افزایش دقت واقعی: با استناد به پاسخها بر اساس اطلاعات دنیای واقعی، توهمات مدل را کاهش دهید.
- دسترسی به اطلاعات بلادرنگ: به سؤالات مربوط به رویدادها و موضوعات اخیر پاسخ دهید.
ارائه استناد: با نشان دادن منابع ادعاهای مدل، اعتماد کاربر را ایجاد کنید.
پایتون
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)
جاوا اسکریپت
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);
استراحت
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
را فعال میکنید، مدل به طور خودکار کل گردش کار جستجو، پردازش و استناد به اطلاعات را انجام میدهد.
- درخواست کاربر: برنامه شما درخواست کاربر را با فعال بودن ابزار
google_search
به Gemini API ارسال می کند. - تجزیه و تحلیل سریع: مدل درخواست را تجزیه و تحلیل می کند و تعیین می کند که آیا جستجوی 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
برای پیوند مستقیم عبارات مدل به منابع آنها استفاده کنید. در اینجا یک الگوی رایج برای پردازش فراداده برای ایجاد پاسخ با نقلقولهای درون خطی و قابل کلیک وجود دارد.
پایتون
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)
جاوا اسکریپت
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 مراجعه کنید.
مدل های پشتیبانی شده
مدل های آزمایشی و پیش نمایش گنجانده نشده است. می توانید قابلیت های آنها را در صفحه نمای کلی مدل بیابید.
مدل | زمینه سازی با جستجوی گوگل |
---|---|
جمینی 2.5 پرو | ✔️ |
فلش جمینی 2.5 | ✔️ |
فلش جمینی 2.0 | ✔️ |
جمینی 1.5 پرو | ✔️ |
فلش جمینی 1.5 | ✔️ |
زمینگیری با مدلهای Gemini 1.5 (میراث)
در حالی که ابزار google_search
برای Gemini 2.0 و جدیدتر توصیه می شود، Gemini 1.5 از یک ابزار قدیمی به نام google_search_retrieval
پشتیبانی می کند. این ابزار یک حالت dynamic
فراهم می کند که به مدل اجازه می دهد تا بر اساس اطمینان از اینکه درخواست به اطلاعات تازه نیاز دارد، تصمیم بگیرد که آیا جستجو را انجام دهد یا خیر. اگر اطمینان مدل بالاتر از dynamic_threshold
باشد که شما تعیین کرده اید (مقداری بین 0.0 و 1.0)، جستجو را انجام می دهد.
پایتون
# 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.")
جاوا اسکریپت
// 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.");
}
استراحت
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
}
}
}]
}'
بعدش چی
- Grounding با جستجوی Google را در کتاب آشپزی Gemini API امتحان کنید.
- درباره سایر ابزارهای موجود، مانند Function Calling اطلاعات کسب کنید.
- بیاموزید که چگونه با استفاده از ابزار زمینه URL، درخواست ها را با URL های خاص تقویت کنید.