使用 Google 搜索建立依据

本页介绍了如何使用 Google 搜索(使用公开提供的 Web 数据)为模型回答建立依据。此外,还说明了响应中包含的搜索建议。

如果您想将模型与世界知识、各种可能的主题或互联网上的最新信息相关联,请使用“依托 Google 搜索进行接地”功能。

如需详细了解 Vertex AI 中的模型接地功能,请参阅接地概览

支持的模型

本部分列出了支持通过 Google 搜索进行接地操作的模型。

支持的语言

如需查看支持的语言列表,请参阅语言

按照以下说明借助公开提供的网络数据让模型接地。

注意事项

  • 如需使用“依托 Google 搜索进行接地”,您必须启用 Google 搜索建议。如需了解详情,请参阅使用 Google 搜索建议

  • 为了获得理想的结果,请使用 1.0 温度。如需详细了解如何设置此配置,请参阅模型参考文档中的 Gemini API 请求正文

  • “借助 Google 搜索接地”功能的查询次数上限为每天 100 万次。如果您需要更多查询,请与Google Cloud 支持团队联系以寻求帮助。

控制台

如需将“使用 Google 搜索建立依据”与 Vertex AI Studio 搭配使用,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Vertex AI Studio 页面。

    进入 Vertex AI Studio

  2. 点击自由形式标签页。
  3. 在侧边栏中,点击根据模型回答问题切换开关。
  4. 点击自定义,并将 Google 搜索设置为来源。
  5. 在文本框中输入提示,然后点击提交

您的提示回答现在会以 Google 搜索为基础。

Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 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=global
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.5-flash",
    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 ...'

Go

了解如何安装或更新 Go

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 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=global
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?"},
		},
			Role: "user"},
	}
	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 := resp.Text()

	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

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:处理请求的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL_ID:多模态模型的模型 ID。
  • TEXT:要包含在提示中的文本说明。

HTTP 方法和网址:

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

请求 JSON 正文:

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "googleSearch": {}
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "The weather in Chicago this weekend, will be partly cloudy. The temperature will be between 49°F (9°C) and 55°F (13°C) on Saturday and between 51°F (11°C) and 56°F (13°C) on Sunday. There is a slight chance of rain on both days.\n"
          }
        ]
      },
      "finishReason": "STOP",
      "groundingMetadata": {
        "webSearchQueries": [
          "weather in Chicago this weekend"
        ],
        "searchEntryPoint": {
          "renderedContent": "..."
        },
        "groundingChunks": [
          {
            "web": {
              "uri": "https://www.google.com/search?q=weather+in+Chicago,+IL",
              "title": "Weather information for locality: Chicago, administrative_area: IL",
              "domain": "google.com"
            }
          },
          {
            "web": {
              "uri": "...",
              "title": "weatherbug.com",
              "domain": "weatherbug.com"
            }
          }
        ],
        "groundingSupports": [
          {
            "segment": {
              "startIndex": 85,
              "endIndex": 214,
              "text": "The temperature will be between 49°F (9°C) and 55°F (13°C) on Saturday and between 51°F (11°C) and 56°F (13°C) on Sunday."
            },
            "groundingChunkIndices": [
              0
            ],
            "confidenceScores": [
              0.8662828
            ]
          },
          {
            "segment": {
              "startIndex": 215,
              "endIndex": 261,
              "text": "There is a slight chance of rain on both days."
            },
            "groundingChunkIndices": [
              1,
              0
            ],
            "confidenceScores": [
              0.62836814,
              0.6488607
            ]
          }
        ],
        "retrievalMetadata": {}
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 98,
    "totalTokenCount": 108,
    "trafficType": "ON_DEMAND",
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 10
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 98
      }
    ]
  },
  "modelVersion": "gemini-2.0-flash",
  "createTime": "2025-05-19T14:42:55.000643Z",
  "responseId": "b0MraIMFoqnf-Q-D66G4BQ"
}

理解回答

如果您的模型提示从 Vertex AI Studio 或 API 成功连接到 Google 搜索,则回答会包含带有来源链接(网址)的元数据。不过,有多种原因可能会导致此元数据无法提供,并且提示回答不会落地。这些原因包括模型回答中的来源相关性低或信息不完整。

标准答案关联支持

建议显示事实依据支持,因为这有助于您验证发布方的回答,并为用户提供更多学习途径。

对来自 Google 搜索来源的回答的接地支持应以内嵌和汇总形式显示。例如,请参阅下图,了解如何执行此操作。

接地支持示例

使用备用搜索引擎选项

使用“依托 Google 搜索进行接地”时,客户应用可以:

  • 提供备用搜索引擎选项,
  • 将其他搜索引擎设为默认选项,
  • 展示自有或第三方搜索建议或搜索结果,但前提是:任何非 Google 结果都必须与 Google 的 Grounded Results 和搜索建议分开展示,并且展示方式不会让用户感到困惑,也不会暗示这些结果来自 Google。

优势

当您将 Google 搜索用作工具时,可以执行以下需要规划、推理和思考的复杂提示和工作流:

  • 您可以进行接地,以帮助确保回答基于最新且最准确的信息。
  • 您可以从 Web 检索制品以进行分析。
  • 您可以找到相关图片、视频或其他媒体,以帮助进行多模态推理或生成任务。
  • 您可以执行编码、技术问题排查和其他专业任务。
  • 查找特定于某个区域的信息或协助准确翻译内容。
  • 您可以找到相关网站以供浏览。

使用 Google 搜索建议

使用“依托 Google 搜索进行接地”时,如果您在响应中收到搜索建议,则必须在生产环境和应用中显示搜索建议。

如需详细了解如何依托 Google 搜索进行接地,请参阅依托 Google 搜索进行接地

具体而言,您必须显示有依据的回答的元数据中包含的搜索查询。回答包括:

  • "content":LLM 生成的回答。
  • "webSearchQueries":用于搜索建议的查询。

例如,在以下代码段中,Gemini 会回答 Google 搜索连接提示,该提示询问一种热带植物。

"predictions": [
  {
    "content": "Monstera is a type of vine that thrives in bright indirect light…",
    "groundingMetadata": {
      "webSearchQueries": ["What's a monstera?"],
    }
  }
]

您可以使用搜索建议获取此输出并进行显示。

搜索建议的要求

以下是建议的要求:

要求 说明
正确做法
  • 在遵守显示要求的前提下,完全按照所提供的方式显示搜索建议,不进行任何更改。
  • 当您与搜索建议互动时,系统会直接将您带到搜索结果页 (SRP)。
错误做法:
  • 在用户点按与 SRP 显示之间包含任何屏幕或其他步骤。
  • 在搜索建议或关联的接地 LLM 回答旁边显示任何其他搜索结果或建议。

显示要求

以下是展示要求:

  • 完全按照所提供的方式显示搜索建议,不对颜色、字体或外观进行任何修改。确保搜索建议按照以下模拟中指定的方式进行渲染,包括针对浅色和深色模式:

  • 每当显示接地回答时,其相应的搜索建议都应保持可见。
  • 在品牌塑造方面,您必须严格遵循 Google 的指南(第三方使用 Google 品牌特征时适用),详见欢迎访问我们的品牌资源中心
  • 使用“依托 Google 搜索进行接地”时,系统会显示搜索建议条状标签。包含建议块的字段必须与 LLM 提供的连接回答宽度相同。

点按时的行为

用户点按条状标签后,会直接前往条状标签中显示的搜索字词的对应搜索结果页 (SRP)。SRP 可以在应用内浏览器或单独的浏览器应用中打开。请务必不要以任何方式最小化、移除或遮挡 SRP 的显示内容。以下动画模拟展示了点按与 SRP 的交互。

应用/桌面示例

实现搜索建议的代码

当您使用 API 为搜索响应建立依据时,模型响应会在 renderedContent 字段中提供合规的 HTML 和 CSS 样式,您可以实现该字段以在应用中显示搜索建议。如需查看 API 响应示例,请参阅使用搜索建立依据中的响应部分。

后续步骤