使用 Google 搜索建立依据

本页介绍了如何使用 Google 搜索(它使用公开的网络数据)为模型的回答建立依据。

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

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

支持的模型

本部分列出了支持使用 Google 搜索进行接地的模型。

支持的语言

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

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

注意事项

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

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

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

控制台

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

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

    进入 Vertex AI Studio

  2. 点击Freeform标签页。
  3. 在侧边栏中,点击对模型回答进行归因切换开关。
  4. 点击自定义,并将 Google 搜索设置为来源。
  5. 在文本框中输入提示,然后点击提交

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

Gen AI SDK for 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.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

了解如何安装或更新 Gen AI SDK for 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?"},
		}},
	}
	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

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

  • LOCATION:处理请求的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL_ID:多模态模型的模型 ID。 Gemini 2.0 模型不支持动态检索。
  • TEXT:要包含在提示中的文本说明。
  • DYNAMIC_THRESHOLD:可选字段,用于设置调用动态检索配置的阈值。该值是一个介于 [0,1] 范围内的浮点值。如果您未设置 dynamicThreshold 字段,则阈值默认为 0.7。

HTTP 方法和网址:

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

请求 JSON 正文:

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

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

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

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

理解回答

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

接地支持

建议您显示接地支持,因为这有助于您验证发布商的回答,并为您提供更多学习途径。

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

接地支持示例

使用备用搜索引擎选项

客户使用“与 Google 搜索一起使用”功能并不妨碍客户提供备选搜索引擎选项、将备选搜索选项设为客户应用的默认选项,或在客户应用中显示自己的搜索建议或搜索结果或第三方搜索结果,前提是任何此类非 Google 搜索服务或关联结果都与基于 Google 搜索的结果和搜索建议分开显示,并且无法合理归因于 Google 或与 Google 提供的结果混淆。

将“依托 Google 搜索进行接地”作为工具

借助依托 Google 搜索进行接地,您可以向模型提供最新且准确的信息,以改进模型的回答。Gemini 2.0 及更高版本的模型可以通过以下方式将 Google 搜索用作工具:

  • 模型可以决定何时使用 Google 搜索。
  • 您可以启用多轮搜索和多工具查询。

以下示例展示了如何将 Google 搜索配置为工具。

  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)

优势

使用 Google 搜索作为工具,您可以完成以下需要规划、推理和思考的复杂问题和工作流:

  • 您可以提供背景信息,以确保回答是根据最新、最准确的信息给出的。
  • 您可以从 Web 检索工件以进行分析。
  • 您可以查找相关图片、视频或其他媒体,以协助进行多模态推理或任务生成。
  • 您可以执行编码、技术问题排查和其他专门任务。
  • 您可以查找特定于某个区域的信息,或协助准确翻译内容。
  • 您可以查找相关网站进行浏览。

后续步骤

  • 如需详细了解接地,请参阅接地概览
  • 如需了解如何发送聊天提示请求,请参阅多回合聊天
  • 如需了解 Responsible AI 最佳实践和 Vertex AI 的安全过滤条件,请参阅安全最佳实践