Grounding with Google Search

En esta página, se explica cómo fundamentar las respuestas de un modelo con la Búsqueda de Google, que usa datos web disponibles públicamente.

Si deseas conectar tu modelo con el conocimiento mundial, una amplia variedad de temas posibles o información actualizada en Internet, usa la Fundamentación con la Búsqueda de Google.

Para obtener más información sobre los fundamentos de modelos en Vertex AI, consulta la descripción general de Grounding.

Modelos compatibles

En esta sección, se enumeran los modelos que admiten la fundamentación con la Búsqueda.

Idiomas compatibles

Para obtener una lista de los idiomas admitidos, consulta Idiomas.

Usa las siguientes instrucciones para fundamentar un modelo con datos web disponibles públicamente.

Consideraciones

  • Para usar la fundamentación con la Búsqueda de Google, debes habilitar las sugerencias de la Búsqueda de Google. Obtén más información en Cómo usar las sugerencias de la Búsqueda de Google.

  • Para obtener resultados ideales, usa una temperatura de 0.0. Para obtener más información sobre cómo establecer esta configuración, consulta el cuerpo de la solicitud a la API de Gemini de la referencia del modelo.

  • La verificación de la conexión a tierra con la Búsqueda de Google tiene un límite de un millón de consultas por día. Si necesitas realizar más consultas, comunícate con el equipo de asistencia deGoogle Cloud para obtener ayuda.

Console

Para usar Grounding with Google Search con Vertex AI Studio, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Generative AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en la pestaña Freeform.
  3. En el panel lateral, haz clic en el botón de activación Fundamentar las respuestas del modelo.
  4. Haz clic en Personalizar y establece la Búsqueda de Google como la fuente.
  5. Ingresa el mensaje en el cuadro de texto y haz clic en Enviar.

Tus respuestas a las instrucciones ahora se basan en la Búsqueda de Google.

Gen AI SDK for Python

Instalar

pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    GoogleSearch,
    HttpOptions,
    Tool,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents="When is the next total solar eclipse in the United States?",
    config=GenerateContentConfig(
        tools=[
            # Use Google Search Tool
            Tool(google_search=GoogleSearch())
        ],
    ),
)

print(response.text)
# Example response:
# 'The next total solar eclipse in the United States will occur on ...'

Gen AI SDK for Go

Obtén información para instalar o actualizar Gen AI SDK for Go.

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithGoogleSearch shows how to generate text using Google Search.
func generateWithGoogleSearch(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.0-flash-001"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "When is the next total solar eclipse in the United States?"},
		}},
	}
	config := &genai.GenerateContentConfig{
		Tools: []*genai.Tool{
			{GoogleSearch: &genai.GoogleSearch{}},
		},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText, err := resp.Text()
	if err != nil {
		return fmt.Errorf("failed to convert model response to text: %w", err)
	}
	fmt.Fprintln(w, respText)

	// Example response:
	// The next total solar eclipse in the United States will occur on March 30, 2033, but it will only ...

	return nil
}

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: La región para procesar la solicitud.
  • PROJECT_ID: El ID del proyecto.
  • MODEL_ID: El ID del modelo multimodal. Los modelos de Gemini 2.0 no admiten la recuperación dinámica.
  • TEXT: Las instrucciones de texto que se incluirán en el mensaje.
  • DYNAMIC_THRESHOLD: Es un campo opcional para establecer el umbral para invocar la configuración de recuperación dinámica. Es un valor de punto flotante en el rango [0,1]. Si no estableces el campo dynamicThreshold, el valor del umbral predeterminado es 0.7.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent

Cuerpo JSON de la solicitud:

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "googleSearchRetrieval": {
      "dynamicRetrievalConfig": {
        "mode": "MODE_DYNAMIC",
        "dynamicThreshold": DYNAMIC_THRESHOLD
      }
    }
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
   "candidates": [
     {
       "content": {
         "role": "model",
         "parts": [
           {
             "text": "Chicago weather changes rapidly, so layers let you adjust easily. Consider a base layer, a warm mid-layer (sweater-fleece), and a weatherproof outer layer."
           }
         ]
       },
       "finishReason": "STOP",
       "safetyRatings":[
       "..."
    ],
       "groundingMetadata": {
         "webSearchQueries": [
           "What's the weather in Chicago this weekend?"
         ],
         "searchEntryPoint": {
            "renderedContent": "....................."
         }
         "groundingSupports": [
            {
              "segment": {
                "startIndex": 0,
                "endIndex": 65,
                "text": "Chicago weather changes rapidly, so layers let you adjust easily."
              },
              "groundingChunkIndices": [
                0
              ],
              "confidenceScores": [
                0.99
              ]
            },
          ]
          "retrievalMetadata": {
              "webDynamicRetrievalScore": 0.96879
            }
       }
     }
   ],
   "usageMetadata": { "..."
   }
 }

Comprende tu respuesta

Si la instrucción de tu modelo se fundamenta correctamente en la Búsqueda de Google desde Vertex AI Studio o desde la API, las respuestas incluirán metadatos con vínculos de origen (URLs web). Sin embargo, existen varios motivos por los que es posible que no se proporcionen estos metadatos, y la respuesta a la instrucción no se basará en ellos. Entre estos motivos, se incluyen la baja relevancia de la fuente o la información incompleta en la respuesta del modelo.

Compatibilidad con puesta a tierra

Se recomienda mostrar la compatibilidad con la conexión a tierra, ya que te ayuda a validar las respuestas de los publicadores y agrega vías para obtener más información.

La compatibilidad con la fundamentación de las respuestas de las fuentes de la Búsqueda de Google debe mostrarse intercalada y de manera no individualizada. Por ejemplo, consulta la siguiente imagen como sugerencia para hacerlo.

Ejemplos de asistencia de puesta a tierra

Uso de opciones de motores de búsqueda alternativos

El uso de la vinculación con la Búsqueda de Google por parte del Cliente no le impide ofrecer opciones alternativas de motor de búsqueda, establecerlas como la opción predeterminada para las Aplicaciones del Cliente o mostrar sus propias sugerencias de búsqueda o resultados de búsqueda de terceros en las Aplicaciones del Cliente, siempre que dichos servicios o resultados asociados que no sean de la Búsqueda de Google se muestren por separado de los Resultados Vinculados y las Sugerencias de Búsqueda, y no se puedan atribuir de manera razonable a Google ni confundirse con los resultados que proporciona Google.

Usa la Fundamentación con la Búsqueda de Google como herramienta

La fundamentación con la Búsqueda de Google te permite proporcionar la información más actualizada y precisa a tu modelo para mejorar sus respuestas. Gemini 2.0 y los modelos posteriores pueden usar la Búsqueda de Google como herramienta de las siguientes maneras:

  • El modelo puede decidir cuándo usar la Búsqueda de Google.
  • Puedes habilitar búsquedas de varios turnos y consultas de varias herramientas, como combinar la vinculación con la Búsqueda de Google y la ejecución de código.

En el siguiente ejemplo, se muestra cómo configurar la Búsqueda de Google como una herramienta.

  from google import genai
  from google.genai.types import Tool, GenerateContentConfig, GoogleSearch

  client = genai.Client()
  model_id = "gemini-2.0-flash-001"

  google_search_tool = Tool(
      google_search = GoogleSearch()
  )

  response = client.models.generate_content(
      model=model_id,
      contents="When is the next total solar eclipse in the United States?",
      config=GenerateContentConfig(
          tools=[google_search_tool],
          response_modalities=[text="TEXT"],
      )
)

for each in response.candidates[0].content.parts:
    print(each.text)
# Example response:
# The next total solar eclipse visible in the contiguous United States will be on ...

# To get grounding metadata as web content. This also includes Search Suggestions
print(response.candidates[0].grounding_metadata.search_entry_point.rendered_content)

Beneficios

Cuando usas la Búsqueda de Google como herramienta, puedes realizar las siguientes indicaciones y flujos de trabajo complejos que requieren planificación, razonamiento y pensamiento:

  • Puedes fundamentar la información para asegurarte de que las respuestas se basen en la información más reciente y precisa.
  • Puedes recuperar artefactos de la Web para realizar análisis.
  • Puedes encontrar imágenes, videos y otros elementos multimedia relevantes para ayudar en el razonamiento multimodal o la generación de tareas.
  • Puedes realizar tareas de programación, solución de problemas técnicos y otras tareas especializadas.
  • Puedes encontrar información específica de la región o ayudar a traducir el contenido con precisión.
  • Puedes encontrar sitios web relevantes para navegar.

¿Qué sigue?