Google Arama ile bağlama uydurma, Gemini modelini gerçek zamanlı web içeriğine bağlar ve mevcut tüm dillerde çalışır. Bu sayede Gemini, daha doğru yanıtlar verebilir ve bilgi kesme tarihinin ötesinde doğrulanabilir kaynaklardan alıntı yapabilir.
Temellendirme, aşağıdaki işlemleri yapabilen uygulamalar oluşturmanıza yardımcı olur:
- Doğruluğu artırın: Yanıtları gerçek dünyadaki bilgilere dayandırarak model halüsinasyonlarını azaltın.
- Anlık bilgilere erişme: Güncel olaylar ve konularla ilgili soruları yanıtlama.
Alıntı ekleyin: Modelin iddialarının kaynaklarını göstererek kullanıcıların güvenini kazanın.
Python
from google import genai
from google.genai import types
client = genai.Client()
grounding_tool = types.Tool(
google_search=types.GoogleSearch()
)
config = types.GenerateContentConfig(
tools=[grounding_tool]
)
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Who won the euro 2024?",
config=config,
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const groundingTool = {
googleSearch: {},
};
const config = {
tools: [groundingTool],
};
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
contents: "Who won the euro 2024?",
config,
});
console.log(response.text);
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"parts": [
{"text": "Who won the euro 2024?"}
]
}
],
"tools": [
{
"google_search": {}
}
]
}'
Arama aracı not defterini deneyerek daha fazla bilgi edinebilirsiniz.
Google Arama ile temellendirme nasıl çalışır?
google_search aracını etkinleştirdiğinizde model, arama, işleme ve bilgi alıntılamayla ilgili tüm iş akışını otomatik olarak yönetir.

- Kullanıcı istemi: Uygulamanız, kullanıcının istemini
google_searcharacı etkinleştirilmiş şekilde Gemini API'ye gönderiyor. - İstem Analizi: Model, istemi analiz eder ve Google Arama'nın yanıtı iyileştirip iyileştiremeyeceğini belirler.
- Google Arama: Gerekirse model, otomatik olarak bir veya daha fazla arama sorgusu oluşturup bunları yürütür.
- Arama Sonuçlarını İşleme: Model, arama sonuçlarını işler, bilgileri sentezler ve bir yanıt oluşturur.
- Temellendirilmiş Yanıt: API, arama sonuçlarına dayalı, son ve kullanıcı dostu bir yanıt döndürür. Bu yanıtta, modelin metin yanıtı ve arama sorguları, web sonuçları ve alıntılarla birlikte
groundingMetadatayer alır.
Temellendirme yanıtını anlama
Bir yanıt başarıyla temellendirildiğinde yanıtta groundingMetadata alanı bulunur. Bu yapılandırılmış veriler, hak taleplerini doğrulamak ve uygulamanızda zengin bir alıntı deneyimi oluşturmak için gereklidir.
{
"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 ile birlikte aşağıdaki bilgileri döndürür:
webSearchQueries: Kullanılan arama sorgularının dizisi. Bu, hata ayıklama ve modelin muhakeme sürecini anlamak için yararlıdır.searchEntryPoint: Gerekli arama önerilerini oluşturmak için HTML ve CSS'yi içerir. Kullanımla ilgili tüm şartlar Hizmet Şartları'nda ayrıntılı olarak açıklanmıştır.groundingChunks: Web kaynaklarını (urivetitle) içeren nesne dizisi.groundingSupports: Model yanıtıtextilegroundingChunksiçindeki kaynakları bağlamak için kullanılan parçalar dizisi. Her parça, bir metnisegment(startIndexveendIndexile tanımlanır) bir veya daha fazlagroundingChunkIndicesile bağlar. Bu, metin içi alıntılar oluşturmanın anahtarıdır.
Google Arama ile temellendirme, yanıtları hem herkese açık web verileri hem de sağladığınız belirli URL'lerle temellendirmek için URL bağlam aracı ile birlikte de kullanılabilir.
Satır içi alıntılarla kaynaklara atıfta bulunma
API, yapılandırılmış alıntı verileri döndürerek kaynakları kullanıcı arayüzünüzde nasıl göstereceğiniz konusunda size tam kontrol sağlar. Modelin ifadelerini doğrudan kaynaklarına bağlamak için groundingSupports ve groundingChunks alanlarını kullanabilirsiniz. Meta verileri işleyerek satır içi, tıklanabilir alıntılar içeren bir yanıt oluşturmak için kullanılan yaygın bir kalıbı aşağıda bulabilirsiniz.
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);
Satır içi alıntı içeren yeni yanıt şu şekilde görünür:
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:/...)
Fiyatlandırma
Google Arama ile Temellendirme'yi kullandığınızda projeniz, google_search aracını içeren her API isteği için faturalandırılır. Model, tek bir isteme yanıt vermek için birden fazla arama sorgusu yürütmeye karar verirse (örneğin, aynı API çağrısında "UEFA Euro 2024 winner" ve "Spain vs England Euro 2024 final score" için arama yapma), bu, söz konusu istek için aracın tek bir faturalandırılabilir kullanımı olarak kabul edilir.
Ayrıntılı fiyatlandırma bilgileri için Gemini API fiyatlandırma sayfasını inceleyin.
Desteklenen modeller
Deneysel ve önizleme modelleri dahil değildir. Bu modellerin özelliklerini Modele genel bakış sayfasında bulabilirsiniz.
| Model | Google Arama ile temellendirme |
|---|---|
| Gemini 2.5 Pro | ✔️ |
| Gemini 2.5 Flash | ✔️ |
| Gemini 2.5 Flash-Lite | ✔️ |
| Gemini 2.0 Flash | ✔️ |
| Gemini 1.5 Pro | ✔️ |
| Gemini 1.5 Flash | ✔️ |
Desteklenen araç kombinasyonları
Daha karmaşık kullanım alanlarını desteklemek için Google Arama ile Temellendirme'yi kod yürütme ve URL bağlamı gibi diğer araçlarla birlikte kullanabilirsiniz.
Gemini 1.5 modelleriyle temellendirme (Eski)
google_search aracı Gemini 2.0 ve sonraki sürümler için önerilse de Gemini 1.5, google_search_retrieval adlı eski bir aracı destekler. Bu araç, modelin istemin yeni bilgi gerektirdiğine dair güvenine bağlı olarak arama yapıp yapmayacağına karar vermesini sağlayan bir dynamic modu sunar. Modelin güven düzeyi, belirlediğiniz dynamic_threshold değerinin (0,0 ile 1,0 arasında bir değer) üzerindeyse arama yapılır.
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()
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({});
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" \
-H "x-goog-api-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
}
}
}]
}'
Sırada ne var?
- Gemini API çözüm kitabında Google Arama ile Temellendirme bölümünü deneyin.
- İşlev Çağırma gibi diğer araçlar hakkında bilgi edinin.
- URL bağlamı aracını kullanarak istemleri belirli URL'lerle nasıl zenginleştireceğinizi öğrenin.