زمینه سازی با جستجوی گوگل

اتصال به گوگل سرچ، مدل جمینی را به محتوای وب در لحظه متصل می‌کند و با تمام زبان‌های موجود کار می‌کند. این امر به جمینی اجازه می‌دهد تا پاسخ‌های دقیق‌تری ارائه دهد و فراتر از محدودیت دانش خود، به منابع قابل تأیید استناد کند.

اتصال به زمین به شما کمک می‌کند تا برنامه‌هایی بسازید که بتوانند:

  • افزایش دقت واقعی: با مبنا قرار دادن پاسخ‌ها بر اساس اطلاعات دنیای واقعی، توهمات مدل‌سازی را کاهش دهید.
  • دسترسی به اطلاعات در لحظه: به سوالات مربوط به رویدادها و موضوعات اخیر پاسخ دهید.
  • ارائه استناد: با نشان دادن منابع ادعاهای مدل، اعتماد کاربر را جلب کنید.

پایتون

from google import genai
from google.genai import types

client = genai.Client()

grounding_tool = types.Tool(
    google_search=types.GoogleSearch()
)

config = types.GenerateContentConfig(
    tools=[grounding_tool]
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Who won the euro 2024?",
    config=config,
)

print(response.text)

جاوا اسکریپت

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

const ai = new GoogleGenAI({});

const groundingTool = {
  googleSearch: {},
};

const config = {
  tools: [groundingTool],
};

const response = await ai.models.generateContent({
  model: "gemini-2.5-flash",
  contents: "Who won the euro 2024?",
  config,
});

console.log(response.text);

استراحت

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "contents": [
      {
        "parts": [
          {"text": "Who won the euro 2024?"}
        ]
      }
    ],
    "tools": [
      {
        "google_search": {}
      }
    ]
  }'

می‌توانید با امتحان کردن دفترچه ابزار جستجو، اطلاعات بیشتری کسب کنید.

نحوه اتصال به زمین با جستجوی گوگل

وقتی ابزار google_search را فعال می‌کنید، مدل کل گردش کار جستجو، پردازش و استناد به اطلاعات را به طور خودکار انجام می‌دهد.

مرور کلی اتصال به زمین

  1. اعلان کاربر: برنامه شما با فعال بودن ابزار google_search ، اعلان کاربر را به API Gemini ارسال می‌کند.
  2. تحلیل سریع: مدل، سوال را تحلیل می‌کند و تعیین می‌کند که آیا جستجوی گوگل می‌تواند پاسخ را بهبود بخشد یا خیر.
  3. جستجوی گوگل: در صورت نیاز، مدل به طور خودکار یک یا چند پرس و جوی جستجو تولید کرده و آنها را اجرا می‌کند.
  4. پردازش نتایج جستجو: مدل، نتایج جستجو را پردازش می‌کند، اطلاعات را ترکیب می‌کند و پاسخی را تدوین می‌کند.
  5. پاسخ پایه: API یک پاسخ نهایی و کاربرپسند را برمی‌گرداند که مبتنی بر نتایج جستجو است. این پاسخ شامل پاسخ متنی مدل و groundingMetadata با پرس‌وجوهای جستجو، نتایج وب و استنادها است.

درک پاسخ اتصال به زمین

وقتی یک پاسخ با موفقیت پایه‌گذاری می‌شود، پاسخ شامل یک فیلد groundingMetadata می‌شود. این داده‌های ساختاریافته برای تأیید ادعاها و ایجاد یک تجربه استناد غنی در برنامه شما ضروری است.

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title."
          }
        ],
        "role": "model"
      },
      "groundingMetadata": {
        "webSearchQueries": [
          "UEFA Euro 2024 winner",
          "who won euro 2024"
        ],
        "searchEntryPoint": {
          "renderedContent": "<!-- HTML and CSS for the search widget -->"
        },
        "groundingChunks": [
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "aljazeera.com"}},
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "uefa.com"}}
        ],
        "groundingSupports": [
          {
            "segment": {"startIndex": 0, "endIndex": 85, "text": "Spain won Euro 2024, defeatin..."},
            "groundingChunkIndices": [0]
          },
          {
            "segment": {"startIndex": 86, "endIndex": 210, "text": "This victory marks Spain's..."},
            "groundingChunkIndices": [0, 1]
          }
        ]
      }
    }
  ]
}

API مربوط به Gemini اطلاعات زیر را به همراه groundingMetadata برمی‌گرداند:

  • webSearchQueries : آرایه‌ای از کوئری‌های جستجوی استفاده شده. این برای اشکال‌زدایی و درک فرآیند استدلال مدل مفید است.
  • searchEntryPoint : شامل HTML و CSS برای ارائه پیشنهادات جستجوی مورد نیاز است. الزامات کامل استفاده در شرایط خدمات به تفصیل شرح داده شده است.
  • groundingChunks : آرایه‌ای از اشیاء حاوی منابع وب ( uri و title ).
  • groundingSupports : آرایه‌ای از تکه‌ها برای اتصال text پاسخ مدل به منابع موجود در groundingChunks . هر تکه، یک segment متنی (تعریف شده توسط startIndex و endIndex ) را به یک یا چند groundingChunkIndices پیوند می‌دهد. این کلید ساخت ارجاعات درون‌خطی است.

همچنین می‌توان از Grounding with Google Search در ترکیب با ابزار URL context برای Grounding پاسخ‌ها در داده‌های وب عمومی و URLهای خاصی که ارائه می‌دهید، استفاده کرد.

انتساب منابع با استناد درون‌خطی

این API داده‌های استناد ساختاریافته را برمی‌گرداند و به شما کنترل کاملی بر نحوه نمایش منابع در رابط کاربری‌تان می‌دهد. می‌توانید از فیلدهای groundingSupports و groundingChunks برای پیوند مستقیم عبارات مدل به منابع آنها استفاده کنید. در اینجا یک الگوی رایج برای پردازش فراداده‌ها برای ایجاد پاسخی با استنادهای درون‌خطی و قابل کلیک ارائه شده است.

پایتون

def add_citations(response):
    text = response.text
    supports = response.candidates[0].grounding_metadata.grounding_supports
    chunks = response.candidates[0].grounding_metadata.grounding_chunks

    # Sort supports by end_index in descending order to avoid shifting issues when inserting.
    sorted_supports = sorted(supports, key=lambda s: s.segment.end_index, reverse=True)

    for support in sorted_supports:
        end_index = support.segment.end_index
        if support.grounding_chunk_indices:
            # Create citation string like [1](link1)[2](link2)
            citation_links = []
            for i in support.grounding_chunk_indices:
                if i < len(chunks):
                    uri = chunks[i].web.uri
                    citation_links.append(f"[{i + 1}]({uri})")

            citation_string = ", ".join(citation_links)
            text = text[:end_index] + citation_string + text[end_index:]

    return text

# Assuming response with grounding metadata
text_with_citations = add_citations(response)
print(text_with_citations)

جاوا اسکریپت

function addCitations(response) {
    let text = response.text;
    const supports = response.candidates[0]?.groundingMetadata?.groundingSupports;
    const chunks = response.candidates[0]?.groundingMetadata?.groundingChunks;

    // Sort supports by end_index in descending order to avoid shifting issues when inserting.
    const sortedSupports = [...supports].sort(
        (a, b) => (b.segment?.endIndex ?? 0) - (a.segment?.endIndex ?? 0),
    );

    for (const support of sortedSupports) {
        const endIndex = support.segment?.endIndex;
        if (endIndex === undefined || !support.groundingChunkIndices?.length) {
        continue;
        }

        const citationLinks = support.groundingChunkIndices
        .map(i => {
            const uri = chunks[i]?.web?.uri;
            if (uri) {
            return `[${i + 1}](${uri})`;
            }
            return null;
        })
        .filter(Boolean);

        if (citationLinks.length > 0) {
        const citationString = citationLinks.join(", ");
        text = text.slice(0, endIndex) + citationString + text.slice(endIndex);
        }
    }

    return text;
}

const textWithCitations = addCitations(response);
console.log(textWithCitations);

پاسخ جدید با استنادهای درون‌خطی به این شکل خواهد بود:

Spain won Euro 2024, defeating England 2-1 in the final.[1](https:/...), [2](https:/...), [4](https:/...), [5](https:/...) This victory marks Spain's record-breaking fourth European Championship title.[5]((https:/...), [2](https:/...), [3](https:/...), [4](https:/...)

قیمت‌گذاری

وقتی از Grounding با جستجوی گوگل استفاده می‌کنید، هزینه پروژه شما بر اساس درخواست API که شامل ابزار google_search است، محاسبه می‌شود. اگر مدل تصمیم بگیرد چندین درخواست جستجو را برای پاسخ به یک درخواست واحد اجرا کند (برای مثال، جستجوی "UEFA Euro 2024 winner" و "Spain vs England Euro 2024 final score" در همان فراخوانی API)، این به عنوان یک استفاده قابل پرداخت از ابزار برای آن درخواست محسوب می‌شود.

برای اطلاعات دقیق در مورد قیمت‌گذاری، به صفحه قیمت‌گذاری Gemini API مراجعه کنید.

مدل‌های پشتیبانی‌شده

مدل‌های آزمایشی و پیش‌نمایش شامل نمی‌شوند. می‌توانید قابلیت‌های آنها را در صفحه نمای کلی مدل پیدا کنید.

مدل اتصال به زمین با جستجوی گوگل
جمینی ۲.۵ پرو ✔️
فلش جمینی ۲.۵ ✔️
جمینی ۲.۵ فلش-لایت ✔️
فلش جمینی ۲.۰ ✔️
جمینی ۱.۵ پرو ✔️
فلش جمینی ۱.۵ ✔️

ترکیب ابزارهای پشتیبانی شده

شما می‌توانید از Grounding with Google Search به همراه ابزارهای دیگری مانند اجرای کد و زمینه URL برای تقویت موارد استفاده پیچیده‌تر استفاده کنید.

اتصال به زمین با مدل‌های Gemini 1.5 (Legacy)

اگرچه ابزار google_search برای Gemini 2.0 و بالاتر توصیه می‌شود، Gemini 1.5 از ابزاری قدیمی به نام google_search_retrieval پشتیبانی می‌کند. این ابزار یک حالت dynamic ارائه می‌دهد که به مدل اجازه می‌دهد بر اساس اطمینان خود مبنی بر اینکه اعلان به اطلاعات جدید نیاز دارد، تصمیم بگیرد که آیا جستجو را انجام دهد یا خیر. اگر اطمینان مدل بالاتر از dynamic_threshold تنظیم شده توسط شما (مقداری بین 0.0 و 1.0) باشد، جستجو را انجام می‌دهد.

پایتون

# Note: This is a legacy approach for Gemini 1.5 models.
# The 'google_search' tool is recommended for all new development.
import os
from google import genai
from google.genai import types

client = genai.Client()

retrieval_tool = types.Tool(
    google_search_retrieval=types.GoogleSearchRetrieval(
        dynamic_retrieval_config=types.DynamicRetrievalConfig(
            mode=types.DynamicRetrievalConfigMode.MODE_DYNAMIC,
            dynamic_threshold=0.7 # Only search if confidence > 70%
        )
    )
)

config = types.GenerateContentConfig(
    tools=[retrieval_tool]
)

response = client.models.generate_content(
    model='gemini-1.5-flash',
    contents="Who won the euro 2024?",
    config=config,
)
print(response.text)
if not response.candidates[0].grounding_metadata:
  print("\nModel answered from its own knowledge.")

جاوا اسکریپت

// Note: This is a legacy approach for Gemini 1.5 models.
// The 'googleSearch' tool is recommended for all new development.
import { GoogleGenAI, DynamicRetrievalConfigMode } from "@google/genai";

const ai = new GoogleGenAI({});

const retrievalTool = {
  googleSearchRetrieval: {
    dynamicRetrievalConfig: {
      mode: DynamicRetrievalConfigMode.MODE_DYNAMIC,
      dynamicThreshold: 0.7, // Only search if confidence > 70%
    },
  },
};

const config = {
  tools: [retrievalTool],
};

const response = await ai.models.generateContent({
  model: "gemini-1.5-flash",
  contents: "Who won the euro 2024?",
  config,
});

console.log(response.text);
if (!response.candidates?.[0]?.groundingMetadata) {
  console.log("\nModel answered from its own knowledge.");
}

استراحت

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \

  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "contents": [
      {"parts": [{"text": "Who won the euro 2024?"}]}
    ],
    "tools": [{
      "google_search_retrieval": {
        "dynamic_retrieval_config": {
          "mode": "MODE_DYNAMIC",
          "dynamic_threshold": 0.7
        }
      }
    }]
  }'

قدم بعدی چیست؟