Tokëzimi me Google Search

Bazimi me Kërkimin në Google lidh modelin Gemini me përmbajtjen e uebit në kohë reale dhe funksionon me të gjitha gjuhët e disponueshme. Kjo i lejon Gemini të ofrojë përgjigje më të sakta dhe të citojë burime të verifikueshme përtej kufirit të njohurive të tij.

Grounding ju ndihmon të ndërtoni aplikacione që mund të:

  • Rrit saktësinë faktike: Zvogëlo halucinacionet e modelit duke i bazuar përgjigjet në informacione nga bota reale.
  • Qasuni në informacion në kohë reale: Përgjigjuni pyetjeve rreth ngjarjeve dhe temave të fundit.
  • Jepni citime: Ndërtoni besimin e përdoruesit duke treguar burimet për pretendimet e modelit.

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

PUSHTIM

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": {}
      }
    ]
  }'

Mund të mësoni më shumë duke provuar fletoren e mjetit të kërkimit .

Si funksionon bazamentimi me Kërkimin në Google

Kur aktivizoni mjetin google_search , modeli trajton automatikisht të gjithë rrjedhën e punës së kërkimit, përpunimit dhe citimit të informacionit.

përmbledhje e tokëzimit

  1. Kërkesa e përdoruesit: Aplikacioni juaj dërgon një kërkesë të përdoruesit te Gemini API me mjetin google_search të aktivizuar.
  2. Analiza e kërkesës: Modeli analizon kërkesën dhe përcakton nëse një Kërkim në Google mund ta përmirësojë përgjigjen.
  3. Kërkimi në Google: Nëse është e nevojshme, modeli gjeneron automatikisht një ose më shumë pyetje kërkimi dhe i ekzekuton ato.
  4. Përpunimi i Rezultateve të Kërkimit: Modeli përpunon rezultatet e kërkimit, sintetizon informacionin dhe formulon një përgjigje.
  5. Përgjigje e Bazuar: API kthen një përgjigje përfundimtare, miqësore për përdoruesit, e cila bazohet në rezultatet e kërkimit. Kjo përgjigje përfshin përgjigjen me tekst të modelit dhe groundingMetadata me pyetjet e kërkimit, rezultatet e uebit dhe citimet.

Kuptimi i përgjigjes së tokëzimit

Kur një përgjigje është bazuar me sukses, përgjigjja përfshin një fushë groundingMetadata . Këto të dhëna të strukturuara janë thelbësore për verifikimin e pretendimeve dhe ndërtimin e një përvoje të pasur me citime në aplikacionin tuaj.

{
  "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]
          }
        ]
      }
    }
  ]
}

API-ja Gemini kthen informacionin e mëposhtëm me groundingMetadata :

  • webSearchQueries : Matricë e pyetjeve të kërkimit të përdorura. Kjo është e dobishme për debugging dhe kuptimin e procesit të arsyetimit të modelit.
  • searchEntryPoint : Përmban HTML dhe CSS për të paraqitur Sugjerimet e Kërkimit të kërkuara. Kërkesat e plota të përdorimit janë të detajuara në Kushtet e Shërbimit .
  • groundingChunks : Matricë objektesh që përmbajnë burimet e uebit ( uri dhe title ).
  • groundingSupports : Matricë chunk-esh për të lidhur text e përgjigjes së modelit me burimet në groundingChunks . Çdo chunk lidh një segment teksti (të përcaktuar nga startIndex dhe endIndex ) me një ose më shumë groundingChunkIndices . Ky është çelësi për ndërtimin e citimeve brenda rreshtit.

Tokëzimi me Kërkimin në Google mund të përdoret gjithashtu në kombinim me mjetin e kontekstit të URL-së për të bazuar përgjigjet si në të dhënat publike të uebit ashtu edhe në URL-të specifike që ofroni.

Atribuimi i burimeve me citime të integruara

API-ja kthen të dhëna të strukturuara të citimeve, duke ju dhënë kontroll të plotë mbi mënyrën se si i shfaqni burimet në ndërfaqen tuaj të përdoruesit. Mund të përdorni fushat groundingSupports dhe groundingChunks për të lidhur deklaratat e modelit direkt me burimet e tyre. Ja një model i zakonshëm për përpunimin e meta të dhënave për të krijuar një përgjigje me citime të integruara dhe të klikueshme.

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

Përgjigja e re me citime të brendshme do të duket kështu:

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:/...)

Çmimet

Kur përdorni Grounding me Google Search, projekti juaj faturohet sipas kërkesës API që përfshin mjetin google_search . Nëse modeli vendos të ekzekutojë pyetje të shumëfishta kërkimi për t'iu përgjigjur një kërkese të vetme (për shembull, duke kërkuar për "UEFA Euro 2024 winner" dhe "Spain vs England Euro 2024 final score" brenda të njëjtës thirrje API), kjo llogaritet si një përdorim i vetëm i faturueshëm i mjetit për atë kërkesë.

Për informacion të detajuar mbi çmimet, shihni faqen e çmimeve të Gemini API .

Modelet e mbështetura

Modelet eksperimentale dhe ato të pamjes paraprake nuk përfshihen. Mund t’i gjeni aftësitë e tyre në faqen e përmbledhjes së modelit .

Model Bazë me Kërkimin në Google
Gemini 2.5 Pro ✔️
Binjakët 2.5 Flash ✔️
Gemini 2.5 Flash-Lite ✔️
Binjakët 2.0 Flash ✔️
Gemini 1.5 Pro ✔️
Binjakët 1.5 Flash ✔️

Kombinimet e mjeteve të mbështetura

Mund të përdorni Grounding me Google Search me mjete të tjera si ekzekutimi i kodit dhe konteksti i URL-së për të mundësuar raste përdorimi më komplekse.

Tokëzimi me modelet Gemini 1.5 (Legacy)

Ndërsa mjeti google_search rekomandohet për Gemini 2.0 dhe versionet më të reja, Gemini 1.5 mbështet një mjet të trashëguar të quajtur google_search_retrieval . Ky mjet ofron një modalitet dynamic që i lejon modelit të vendosë nëse do të kryejë një kërkim bazuar në besimin e tij se kërkesa kërkon informacion të ri. Nëse besimi i modelit është mbi një dynamic_threshold që keni vendosur (një vlerë midis 0.0 dhe 1.0), ai do të kryejë një kërkim.

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.");
}

PUSHTIM

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
        }
      }
    }]
  }'

Çfarë vjen më pas