Argumentimi me "Kërko në Google"

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

Argumentimi të ndihmon të ndërtosh aplikacione që mund:

  • Rrit saktësinë faktike: Zvogëlo halucinacionet e modelit duke i bazuar përgjigjet në informacione të botës reale.
  • Qasu te informacionet në kohë reale: Përgjigju pyetjeve për ngjarjet dhe temat e fundit.
  • Ofro citime: Ndërto besimin e përdoruesit duke shfaqur burimet për pretendimet e modelit.

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Who won the euro 2024?",
    tools=[{"type": "google_search"}]
)

print(interaction.output_text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3.8-flash",
    input: "Who won the euro 2024?",
    tools: [{ type: "google_search" }]
});

console.log(interaction.output_text);

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.GoogleSearch;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.Arrays;

Client client = new Client();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.of("Who won the euro 2024?"))
        .tools(Arrays.asList(GoogleSearch.builder().build()))
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    resp, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(
            interactions.CreateModelInteraction{
                Model: interactions.Model("gemini-3.8-flash"),
                Input: interactions.NewInteractionsInput("Who won the euro 2024?"),
                Tools: []interactions.Tool{
                    interactions.NewTool(interactions.GoogleSearch{}),
                },
            },
        ),
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(resp.Interaction.GetOutputText())
}

QETËSI

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash",
    "input": "Who won the euro 2024?",
    "tools": [{"type": "google_search"}]
  }'

Si funksionon argumentimi me "Kërko në Google"

Kur aktivizon veglën "google_search", modeli menaxhon të gjithë fluksin e punës për kërkimin, përpunimin dhe citimin e informacioneve në mënyrë automatike.

përmbledhja e argumentimit

  1. Kërkesa e përdoruesit: Aplikacioni yt dërgon një kërkesë të përdoruesit te Gemini API me veglën google_search të aktivizuar.
  2. Analiza e kërkesës: Modeli analizon kërkesën dhe përcakton nëse "Kërko në Google" mund ta përmirësojë përgjigjen.
  3. "Kërko në Google": Nëse është e nevojshme, modeli gjeneron automatikisht një ose disa kërkesa kërkimi dhe i ekzekuton ato.
  4. Përpunimi i rezultateve të kërkimit: Modeli përpunon rezultatet e kërkimit, sintetizon informacionet dhe formulon një përgjigje.
  5. Përgjigje e bazuar: API-ja kthen një përgjigje përfundimtare dhe të përshtatshme për përdoruesin që bazohet në rezultatet e kërkimit. Kjo përgjigje përfshin përgjigjen me tekst të modelit me annotations të ndërfutur që përmban citimet, si dhe google_search_call dhe google_search_result hapa me kërkesat e kërkimit dhe sugjerimet e kërkimit.

Kuptimi i përgjigjes së bazuar

Kur një përgjigje është e bazuar me sukses, dalja e tekstit të modelit përfshin annotations të integruar drejtpërdrejt në bllokun e përmbajtjes me tekst. Këto shënime ofrojnë informacione citimi që lidhin pjesë të përgjigjes me burimet e tyre.

{
  "steps": [
    {
      "type": "thought",
      "summary": [
        {
          "type": "text",
          "text": "The user is asking for the winner of Euro 2024. I need to search for the result of the Euro 2024 final."
        }
      ],
      "signature": "CoMDAXLI2nynRYojJIy6B1Jh9os2crpWLfB0..."
    },
    {
      "type": "google_search_call",
      "arguments": {
        "queries": ["UEFA Euro 2024 winner"]
      }
    },
    {
      "type": "google_search_result",
      "call_id": "search_001",
      "result": [
        {
          "search_suggestions": "<!-- HTML and CSS for the search widget -->"
        }
      ]
    },
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title.",
          "annotations": [
            {
              "type": "url_citation",
              "url": "https://www.aljazeera.com/sports/euro-2024-final",
              "title": "aljazeera.com",
              "start_index": 0,
              "end_index": 56
            },
            {
              "type": "url_citation",
              "url": "https://www.uefa.com/euro2024/news/spain-wins-euro-2024",
              "title": "uefa.com",
              "start_index": 57,
              "end_index": 124
            }
          ]
        }
      ]
    }
  ]
}

Fushat kryesore në përgjigje:

  • google_search_call : Përmban kërkimin queries që ka ekzekutuar modeli.
  • google_search_result : Përmban search_suggestions, një fragment HTML për paraqitjen e sugjerimeve të kërkimit në ndërfaqen tënde të përdoruesit. Kërkesat e plota për përdorimin janë të detajuara te Kushtet e shërbimit.
  • text me annotations : Përgjigjja e sintetizuar e modelit me citime të integruara. Çdo shënim url_citation lidh një segment teksti (të përcaktuar nga start_index dhe end_index) me një URL burimi. Ky është çelësi për ndërtimin e citimeve të integruara.

"Bazimi me 'Kërko në Google'" mund të përdoret gjithashtu në kombinim me veglën e kontekstit të URL-së për të bazuar përgjigjet në të dhënat publike të uebit dhe në URL-të specifike që ti jep.

Atribuimi i burimeve me citime të ndërfutura

API-ja kthen shënime të integruara url_citation në bllokun e përmbajtjes së tekstit, duke të të dhënë kontroll të plotë mbi mënyrën se si i shfaq burimet në ndërfaqen tënde të përdoruesit. Çdo shënim përfshin start_index dhe end_index për të identifikuar se cilën pjesë të tekstit citon. Ja se si t'i nxjerrësh dhe t'i shfaqësh ato.

Python

for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)
                if content_block.annotations:
                    print("\nCitations:")
                    for annotation in content_block.annotations:
                        if annotation.type == "url_citation":
                            cited_text = content_block.text[annotation.start_index:annotation.end_index]
                            print(f"  [{annotation.title}]({annotation.url})")
                            print(f"    Cited text: \"{cited_text}\"")

JavaScript

for (const step of interaction.steps) {
  if (step.type === 'model_output') {
    for (const contentBlock of step.content) {
      if (contentBlock.type === 'text') {
        console.log(contentBlock.text);
        if (contentBlock.annotations) {
          console.log("\nCitations:");
          for (const annotation of contentBlock.annotations) {
            if (annotation.type === 'url_citation') {
              const citedText = contentBlock.text.slice(annotation.startIndex, annotation.endIndex);
              console.log(`  [${annotation.title}](${annotation.url})`);
              console.log(`    Cited text: "${citedText}"`);
            }
          }
        }
      }
    }
  }
}

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.Annotation;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.GoogleSearch;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ModelOutputStep;
import com.google.genai.gaos.models.interactions.Step;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.interactions.URLCitation;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.Arrays;

Client client = new Client();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.of("Who won the euro 2024?"))
        .tools(Arrays.asList(GoogleSearch.builder().build()))
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

if (interaction.steps().isPresent()) {
  for (Step step : interaction.steps().get()) {
    if (step instanceof ModelOutputStep) {
      ModelOutputStep outputStep = (ModelOutputStep) step;
      if (outputStep.content().isPresent()) {
        for (Content contentBlock : outputStep.content().get()) {
          if (contentBlock instanceof TextContent) {
            TextContent textContent = (TextContent) contentBlock;
            String text = textContent.text().orElse("");
            System.out.println(text);
            if (textContent.annotations().isPresent()
                && !textContent.annotations().get().isEmpty()) {
              System.out.println("\nCitations:");
              for (Annotation annotation : textContent.annotations().get()) {
                if (annotation instanceof URLCitation) {
                  URLCitation citation = (URLCitation) annotation;
                  int start = citation.startIndex().orElse(0);
                  int end = citation.endIndex().orElse(0);
                  String citedText =
                      (start >= 0 && end <= text.length() && start <= end)
                          ? text.substring(start, end)
                          : "";
                  System.out.printf(
                      "  [%s](%s)%n", citation.title().orElse(""), citation.url().orElse(""));
                  System.out.printf("    Cited text: \"%s\"%n", citedText);
                }
              }
            }
          }
        }
      }
    }
  }
}

Go

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    resp, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(
            interactions.CreateModelInteraction{
                Model: interactions.Model("gemini-3.8-flash"),
                Input: interactions.NewInteractionsInput("Who won the euro 2024?"),
                Tools: []interactions.Tool{
                    interactions.NewTool(interactions.GoogleSearch{}),
                },
            },
        ),
    })
    if err != nil {
        log.Fatal(err)
    }

    for _, step := range resp.Interaction.Steps {
        if step.ModelOutputStep != nil {
            for _, content := range step.ModelOutputStep.Content {
                if content.TextContent != nil {
                    text := content.TextContent.Text
                    fmt.Println(text)
                    if len(content.TextContent.Annotations) > 0 {
                        fmt.Println("\nCitations:")
                        for _, annotation := range content.TextContent.Annotations {
                            if annotation.URLCitation != nil {
                                c := annotation.URLCitation
                                start := 0
                                if c.StartIndex != nil {
                                    start = *c.StartIndex
                                }
                                end := 0
                                if c.EndIndex != nil {
                                    end = *c.EndIndex
                                }
                                citedText := ""
                                if start >= 0 && end <= len(text) && start <= end {
                                    citedText = text[start:end]
                                }
                                title := ""
                                if c.Title != nil {
                                    title = *c.Title
                                }
                                url := ""
                                if c.URL != nil {
                                    url = *c.URL
                                }
                                fmt.Printf("  [%s](%s)\n", title, url)
                                fmt.Printf("    Cited text: %q\n", citedText)
                            }
                        }
                    }
                }
            }
        }
    }
}

Rezultati do të shfaqë tekstin e ndjekur nga citimet e tij:

Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title.

Citations:
  [aljazeera.com](https://www.aljazeera.com/sports/euro-2024-final)
    Cited text: "Spain won Euro 2024, defeating England 2-1 in the final."
  [uefa.com](https://www.uefa.com/euro2024/news/spain-wins-euro-2024)
    Cited text: "This victory marks Spain's record fourth European Championship title."

Çmimet

Kur përdor "Argumentimin me 'Kërko në Google'" me Gemini 3 dhe modele më të reja, projekti yt faturohet për çdo kërkesë kërkimi që modeli vendos të ekzekutojë. Ky model faturimi për çdo kërkesë përfshin 5000 kërkesa falas për kërkim në muaj të ndara në të gjitha modelet Gemini 3 dhe më të reja dhe më pas kushton 14 USD për 1000 kërkesa për kërkim.

Për shembull, nëse modeli vendos të ekzekutojë disa kërkesa kërkimi për t'iu përgjigjur një kërkese të vetme (p.sh. kërkimi për "UEFA Euro 2024 winner" dhe "Spain vs England Euro 2024 final score" brenda të njëjtit telefonatë API), kjo llogaritet si dy përdorime të faturueshme të veglës për atë kërkesë. Për qëllime faturimi, ne i shpërfillim kërkesat boshe të kërkimit në ueb kur numërojmë kërkesat unike.

Kur përdor argumentimin e kërkimit me Gemini 2.5 ose modele më të vjetra, projekti yt faturohet për çdo kërkesë.

Për informacione të detajuara për çmimet, shiko faqen e çmimeve të Gemini API.

Modelet e mbështetura

Mund t'i gjesh aftësitë e plota në faqen e përmbledhjes së modelit.

Modeli Argumentimi me "Kërko në Google"
Gemini 3.8 Flash ✔️
Gemini 3.6 Flash ✔️
Gemini 3.5 Flash-Lite ✔️
Pamja paraprake e imazhit të Gemini 3.1 Flash ✔️
Gemini 3.1 Pro Preview ✔️
Pamja paraprake e imazheve me Gemini 3 Pro ✔️
Pamja paraprake e Gemini 3 Flash ✔️
Gemini 2.5 Pro ✔️
Gemini 2.5 Flash ✔️
Gemini 2.5 Flash-Lite ✔️
Gemini 2.0 Flash ✔️

Kombinimet e mbështetura të veglave

Mund ta përdorësh Grounding me "Kërko në Google" me vegla të tjera si ekzekutimi i kodit, konteksti i URL-së dhe Grounding me Google Maps (mbështetur në Gemini 3.5 Flash-Lite dhe modelet e mëvonshme) për të mundësuar raste përdorimi më kompleks. Modelet e Gemini 3 mbështesin gjithashtu kombinimin e këtyre veglave të integruara me vegla të personalizuara (thirrja e funksioneve). Mëso më shumë në faqen e kombinimeve të veglave.

Çfarë ka më pas