Функция Grounding with Google Search в Gemini API и AI Studio может использоваться для повышения точности и новизны ответов модели. В дополнение к более фактическим ответам, когда включена функция Grounding with Google Search, Gemini API возвращает источники заземления (встроенные вспомогательные ссылки) и предложения поиска Google вместе с содержанием ответа. Предложения поиска направляют пользователей к результатам поиска, соответствующим обоснованному ответу.
Это руководство поможет вам начать работу с Grounding with Google Search.
Прежде чем начать
Перед вызовом API Gemini убедитесь, что у вас установлен нужный вам SDK , а также настроен и готов к использованию ключ API Gemini .
Предложения поиска Google
Чтобы использовать Grounding with Google Search, вам необходимо отобразить Google Search Suggestions, которые являются предлагаемыми запросами, включенными в метаданные обоснованного ответа. Чтобы узнать больше о требованиях к отображению, см. Use Google Search Suggestions .
Поиск Google
Динамический поиск
Некоторые запросы, вероятно, выиграют больше от Grounding with Google Search, чем другие. Функция динамического поиска дает вам дополнительный контроль над тем, когда использовать Grounding with Google Search.
Если режим динамического поиска не указан, всегда запускается заземление с помощью поиска Google. Если режим установлен на динамический, модель решает, когда использовать заземление, на основе порогового значения, которое вы можете настроить. Пороговое значение представляет собой значение с плавающей точкой в диапазоне [0,1] и по умолчанию равно 0,3. Если пороговое значение равно 0, ответ всегда заземлен с помощью поиска Google; если оно равно 1, то никогда.
Как работает динамический поиск
Вы можете использовать динамический поиск в своем запросе, чтобы выбрать, когда включать Grounding with Google Search. Это полезно, когда запрос не требует ответа, основанного на Google Search, и модель может предоставить ответ на основе собственных знаний без заземления. Это помогает вам эффективнее управлять задержкой, качеством и стоимостью.
Прежде чем использовать конфигурацию динамического извлечения в своем запросе, ознакомьтесь со следующей терминологией:
Оценка прогноза : когда вы запрашиваете обоснованный ответ, Gemini присваивает подсказке оценку прогноза . Оценка прогноза — это значение с плавающей точкой в диапазоне [0,1]. Ее значение зависит от того, может ли подсказка извлечь выгоду из обоснования ответа самой актуальной информацией из поиска Google. Таким образом, если подсказка требует ответа, основанного на самых последних фактах в Интернете, она имеет более высокую оценку прогноза. Подсказка, для которой достаточно ответа, сгенерированного моделью, имеет более низкую оценку прогноза.
Вот примеры некоторых подсказок и их прогнозные баллы.
Быстрый Прогнозируемый счет Комментарий «Напиши стихотворение о пионах» 0,13 Модель может полагаться на свои знания, и ответ не требует обоснования. «Посоветуйте игрушку для ребенка 2 лет» 0,36 Модель может полагаться на свои знания, и ответ не требует обоснования. «Можете ли вы дать рецепт гуакамоле в азиатском стиле?» 0,55 Поиск Google может дать обоснованный ответ, но обоснование не является строго обязательным; знания модели может быть достаточно. «Что такое Agent Builder? Как в Agent Builder рассчитывается заземление?» 0,72 Для получения обоснованного ответа требуется поиск Google. «Кто выиграл последний Гран-при Формулы-1?» 0,97 Для получения обоснованного ответа требуется поиск Google. Threshold : В вашем запросе API вы можете указать конфигурацию динамического поиска с порогом. Порог — это значение с плавающей точкой в диапазоне [0,1] и по умолчанию равно 0,3. Если пороговое значение равно нулю, ответ всегда основан на Google Search. Для всех других значений порога применимо следующее:
- Если оценка прогноза больше или равна пороговому значению, ответ основан на Google Search. Более низкий порог подразумевает, что больше подсказок имеют ответы, которые сгенерированы с использованием Grounding with Google Search.
- Если оценка прогноза меньше порогового значения, модель все равно может сгенерировать ответ, но он не будет основан на результатах поиска Google.
Чтобы узнать, как установить порог динамического извлечения с помощью SDK или REST API, ознакомьтесь с соответствующим примером кода .
Чтобы найти хороший порог, который соответствует потребностям вашего бизнеса, вы можете создать репрезентативный набор запросов, с которыми вы ожидаете столкнуться. Затем вы можете отсортировать запросы в соответствии с прогнозируемой оценкой в ответе и выбрать хороший порог для вашего варианта использования.
Обоснованный ответ
Если ваш запрос успешно заземляется на Google Search, ответ будет включать groundingMetadata
. Заземленный ответ может выглядеть примерно так (части ответа были опущены для краткости):
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships. He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall. \n"
}
],
"role": "model"
},
...
"groundingMetadata": {
"searchEntryPoint": {
"renderedContent": "\u003cstyle\u003e\n.container {\n align-items: center;\n border-radius: 8px;\n display: flex;\n font-family: Google Sans, Roboto, sans-serif;\n font-size: 14px;\n line-height: 20px;\n padding: 8px 12px;\n}\n.chip {\n display: inline-block;\n border: solid 1px;\n border-radius: 16px;\n min-width: 14px;\n padding: 5px 16px;\n text-align: center;\n user-select: none;\n margin: 0 8px;\n -webkit-tap-highlight-color: transparent;\n}\n.carousel {\n overflow: auto;\n scrollbar-width: none;\n white-space: nowrap;\n margin-right: -12px;\n}\n.headline {\n display: flex;\n margin-right: 4px;\n}\n.gradient-container {\n position: relative;\n}\n.gradient {\n position: absolute;\n transform: translate(3px, -9px);\n height: 36px;\n width: 9px;\n}\n@media (prefers-color-scheme: light) {\n .container {\n background-color: #fafafa;\n box-shadow: 0 0 0 1px #0000000f;\n }\n .headline-label {\n color: #1f1f1f;\n }\n .chip {\n background-color: #ffffff;\n border-color: #d2d2d2;\n color: #5e5e5e;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #f2f2f2;\n }\n .chip:focus {\n background-color: #f2f2f2;\n }\n .chip:active {\n background-color: #d8d8d8;\n border-color: #b6b6b6;\n }\n .logo-dark {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #fafafa 15%, #fafafa00 100%);\n }\n}\n@media (prefers-color-scheme: dark) {\n .container {\n background-color: #1f1f1f;\n box-shadow: 0 0 0 1px #ffffff26;\n }\n .headline-label {\n color: #fff;\n }\n .chip {\n background-color: #2c2c2c;\n border-color: #3c4043;\n color: #fff;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #353536;\n }\n .chip:focus {\n background-color: #353536;\n }\n .chip:active {\n background-color: #464849;\n border-color: #53575b;\n }\n .logo-light {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #1f1f1f 15%, #1f1f1f00 100%);\n }\n}\n\u003c/style\u003e\n\u003cdiv class=\"container\"\u003e\n \u003cdiv class=\"headline\"\u003e\n \u003csvg class=\"logo-light\" width=\"18\" height=\"18\" viewBox=\"9 9 35 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42.8622 27.0064C42.8622 25.7839 42.7525 24.6084 42.5487 23.4799H26.3109V30.1568H35.5897C35.1821 32.3041 33.9596 34.1222 32.1258 35.3448V39.6864H37.7213C40.9814 36.677 42.8622 32.2571 42.8622 27.0064V27.0064Z\" fill=\"#4285F4\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 43.8555C30.9659 43.8555 34.8687 42.3195 37.7213 39.6863L32.1258 35.3447C30.5898 36.3792 28.6306 37.0061 26.3109 37.0061C21.8282 37.0061 18.0195 33.9811 16.6559 29.906H10.9194V34.3573C13.7563 39.9841 19.5712 43.8555 26.3109 43.8555V43.8555Z\" fill=\"#34A853\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.6559 29.8904C16.3111 28.8559 16.1074 27.7588 16.1074 26.6146C16.1074 25.4704 16.3111 24.3733 16.6559 23.3388V18.8875H10.9194C9.74388 21.2072 9.06992 23.8247 9.06992 26.6146C9.06992 29.4045 9.74388 32.022 10.9194 34.3417L15.3864 30.8621L16.6559 29.8904V29.8904Z\" fill=\"#FBBC05\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 16.2386C28.85 16.2386 31.107 17.1164 32.9095 18.8091L37.8466 13.8719C34.853 11.082 30.9659 9.3736 26.3109 9.3736C19.5712 9.3736 13.7563 13.245 10.9194 18.8875L16.6559 23.3388C18.0195 19.2636 21.8282 16.2386 26.3109 16.2386V16.2386Z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003csvg class=\"logo-dark\" width=\"18\" height=\"18\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003ccircle cx=\"24\" cy=\"23\" fill=\"#FFF\" r=\"22\"/\u003e\n \u003cpath d=\"M33.76 34.26c2.75-2.56 4.49-6.37 4.49-11.26 0-.89-.08-1.84-.29-3H24.01v5.99h8.03c-.4 2.02-1.5 3.56-3.07 4.56v.75l3.91 2.97h.88z\" fill=\"#4285F4\"/\u003e\n \u003cpath d=\"M15.58 25.77A8.845 8.845 0 0 0 24 31.86c1.92 0 3.62-.46 4.97-1.31l4.79 3.71C31.14 36.7 27.65 38 24 38c-5.93 0-11.01-3.4-13.45-8.36l.17-1.01 4.06-2.85h.8z\" fill=\"#34A853\"/\u003e\n \u003cpath d=\"M15.59 20.21a8.864 8.864 0 0 0 0 5.58l-5.03 3.86c-.98-2-1.53-4.25-1.53-6.64 0-2.39.55-4.64 1.53-6.64l1-.22 3.81 2.98.22 1.08z\" fill=\"#FBBC05\"/\u003e\n \u003cpath d=\"M24 14.14c2.11 0 4.02.75 5.52 1.98l4.36-4.36C31.22 9.43 27.81 8 24 8c-5.93 0-11.01 3.4-13.45 8.36l5.03 3.85A8.86 8.86 0 0 1 24 14.14z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003cdiv class=\"gradient-container\"\u003e\u003cdiv class=\"gradient\"\u003e\u003c/div\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class=\"carousel\"\u003e\n \u003ca class=\"chip\" href=\"https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4x8Epe-gzpwRBvp7o3RZh2m1ygq1EHktn0OWCtvTXjad4bb1zSuqfJd6OEuZZ9_SXZ_P2SvCpJM7NaFfQfiZs6064MeqXego0vSbV9LlAZoxTdbxWK1hFeqTG6kA13YJf7Fbu1SqBYM0cFM4zo0G_sD9NKYWcOCQMvDLDEJFhjrC9DM_QobBIAMq-gWN95G5tvt6_z6EuPN8QY=\"\u003ewho won wimbledon 2024\u003c/a\u003e\n \u003c/div\u003e\n\u003c/div\u003e\n"
},
"groundingChunks": [
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4whET1ta3sDETZvcicd8FeNe4z0VuduVsxrT677KQRp2rYghXI0VpfYbIMVI3THcTuMwggRCbFXS_wVvW0UmGzMe9h2fyrkvsnQPJyikJasNIbjJLPX0StM4Bd694-ZVle56MmRA4YiUvwSqad1w6O2opmWnw==",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wR1M-9-yMPUr_KdHlnoAmQ8ZX90DtQ_vDYTjtP2oR5RH4tRP04uqKPLmesvo64BBkPeYLC2EpVDxv9ngO3S1fs2xh-e78fY4m0GAtgNlahUkm_tBm_sih5kFPc7ill9u2uwesNGUkwrQlmP2mfWNU5lMMr23HGktr6t0sV0QYlzQq7odVoBxYWlQ_sqWFH",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wsDmROzbP-tmt8GdwCW_pqISTZ4IRbBuoaMyaHfcQg8WW-yKRQQvMDTPAuLxJh-8_U8_iw_6JKFbQ8M9oVYtaFdWFK4gOtL4RrC9Jyqc5BNpuxp6uLEKgL5-9TggtNvO97PyCfziDFXPsxylwI1HcfQdrz3Jy7ZdOL4XM-S5rC0lF2S3VWW0IEAEtS7WX861meBYVjIuuF_mIr3spYPqWLhbAY2Spj-4_ba8DjRvmevIFUhRuESTKvBfmpxNSM",
"title": "cbssports.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4yzjLkorHiUKjhOPkWaZ9b4cO-cLG-02vlEl6xTBjMUjyhK04qSIclAa7heR41JQ6AAVXmNdS3WDrLOV4Wli-iezyzW8QPQ4vgnmO_egdsuxhcGk3-Fp8-yfqNLvgXFwY5mPo6QRhvplOFv0_x9mAcka18QuAXtj0SPvJfZhUEgYLCtCrucDS5XFc5HmRBcG1tqFdKSE1ihnp8KLdaWMhrUQI21hHS9",
"title": "jagranjosh.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4y9L4oeNGWCatFz63b9PpP3ys-Wi_zwnkUT5ji9lY7gPUJQcsmmE87q88GSdZqzcx5nZG9usot5FYk2yK-FAGvCRE6JsUQJB_W11_kJU2HVV1BTPiZ4SAgm8XDFIxpCZXnXmEx5HUfRqQm_zav7CvS2qjA2x3__qLME6Jy7R5oza1C5_aqjQu422le9CaigThS5bvJoMo-ZGcXdBUCj2CqoXNVjMA==",
"title": "apnews.com"
}
}
],
"groundingSupports": [
{
"segment": {
"endIndex": 85,
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships."
},
"groundingChunkIndices": [
0,
1,
2,
3
],
"confidenceScores": [
0.97380733,
0.97380733,
0.97380733,
0.97380733
]
},
{
"segment": {
"startIndex": 86,
"endIndex": 210,
"text": "He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall."
},
"groundingChunkIndices": [
1,
0,
4
],
"confidenceScores": [
0.96145374,
0.96145374,
0.96145374
]
}
],
"webSearchQueries": [
"who won wimbledon 2024"
]
}
}
],
...
}
Если ответ не включает groundingMetadata
, это означает, что ответ не был успешно заземлен. Существует несколько причин, по которым это могло произойти, включая низкую релевантность источника или неполную информацию в ответе модели.
При генерации обоснованного результата метаданные содержат URI, которые перенаправляют издателям контента, который использовался для генерации обоснованного результата. Эти URI содержат поддомен vertexaisearch
, как в этом усеченном примере: https://vertexaisearch.cloud.google.com/grounding-api-redirect/...
. Метаданные также содержат домены издателей. Предоставленные URI остаются доступными в течение 30 дней после генерации обоснованного результата.
Поле renderedContent
в searchEntryPoint
— это предоставленный код для реализации Google Search Suggestions. Подробнее см. в разделе Использование Google Search Suggestions .
Инструмент контекста URL
Инструмент контекста URL позволяет вам дополнять ваши подсказки URL-адресами, которые предоставляют больше контекста и подробностей для модели о задаче, которую вы хотите выполнить. При использовании вместе с Grounding with Google Search он упрощает рабочий процесс для задач, требующих как широкого исследования, так и глубокого понимания. Вы можете предоставить инструкции в своей подсказке, и модель может выполнить поиск Google, проанализировать найденные сайты и использовать этот анализ для выполнения задачи, указанной в вашей подсказке.
Более подробную информацию и примеры кода см. на странице обзора инструмента контекста URL .