Gemini API で Google検索を用いたグラウンディング（Gemini 2.5 Flash で試す）【Node.js】


## はじめに

今回の記事は、Gemini API で Google検索を用いたグラウンディングを試してみる話です。

●Google 検索によるグラウンディング  |  Gemini API  |  Google AI for Developers
　https://ai.google.dev/gemini-api/docs/grounding?hl=ja&lang=javascript

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/db1199a8-2b2b-4939-8e01-0613961088ba.png)

グラウンディングというのは、LLM の出力を検証可能な情報源（今回の場合は Google検索の結果）に結びつけて回答の正確さを高めたり、最新の情報を扱えたりする仕組みのようです。
また、[リリースされたのは昨年10月](https://developers.googleblog.com/ja/gemini-api-and-ai-studio-now-offer-grounding-with-google-search/)だったようです。


### Gemini 2.5 Flash で試す

それを、以下の記事を書いた時にも使っていた「Gemini 2.5 Flash」でやってみました。

●Gemini 2.5 Flash の情報を見てみて API からの利用を少し試す - Qiita
　https://qiita.com/youtoy/items/e5bc98c12aeffd26b7bb


### 【余談】 検索絡みで以前試したこと

少し本題とずれるかもしれないですが、今回の内容と「検索」というキーワードで少しつながりがあるかもしれない内容を、前に試して以下の記事に書いてみています。

●Tavily Search による API経由での検索を JavaScript SDK で試す - Qiita
　https://qiita.com/youtoy/items/8133a9a11fd190b8a2f0

とある背景があって、検索絡みのお試しを少しやってみていたりします。


## 公式情報を見てみる ＆ 実際に試していく

まずは、もう少し公式の情報を見てみます。

### Vertex AI の場合

以下は「Vertex AI」のページですが、こちらでは複数のグラウンディングの項目が記載されています。

●Grounding overview  |  Generative AI on Vertex AI  |  Google Cloud
　https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/overview

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a4fef9d2-c8e5-4a95-b1b6-502b3f7f1cf8.png)

書き出してみたものが以下になります。

- [Grounding with Google Search](https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-search)
- [Grounding with Google Maps in Vertex AI](https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-maps)
- [Grounding with your data](https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-your-data)
- [Grounding with Elasticsearch](https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-elasticsearch)
- [Web Grounding for Enterprise](https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/web-grounding-enterprise)


自分の場合、Gemini API をよく使うので、上記は参考程度として Gemini API を使う話の内容を見ていきます。


### Gemini API の場合

Gemini API のドキュメントだと、冒頭にも掲載した以下のドキュメントが出てきました。

●Google 検索によるグラウンディング  |  Gemini API  |  Google AI for Developers
　https://ai.google.dev/gemini-api/docs/grounding?hl=ja&lang=javascript

[Configure Search Grounding（検索グラウンディングを構成する）
](https://ai.google.dev/gemini-api/docs/grounding?lang=javascript#configure-search) という部分などに Gemini API を利用した JavaScript のサンプルのコードもあります。


![2025-05-16_12-36-23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/3b55c9ee-d825-4bab-995c-fda9d4148b91.jpeg)


#### 試したコードと実行結果


サンプルコードをもとにした、以下の内容を試してみることにしました。

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

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-2.5-flash-preview-04-17",
    // model: "gemini-2.0-flash",
    contents: "直近1週間の生成AIに関する話題は？箇条書きで示して。",
    config: {
      tools: [{ googleSearch: {} }],
    },
  });
  console.log(response.text);
  console.log(
    response.candidates[0].groundingMetadata.searchEntryPoint.renderedContent
  );
}

main();
```

環境変数 GEMINI_API_KEY に APIキーをセットして、[@google/genai - npm](https://www.npmjs.com/package/@google/genai) をインストールしてから、上記を実行します。


得られた結果は以下です。
1つ目は利用したモデルがサンプルそのままの「gemini-2.0-flash」で、2つ目は利用するモデルを「gemini-2.5-flash-preview-04-17」に変えて試したものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f33e0835-9dde-45f5-b2ba-10e3e8471f33.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bf388f9f-9967-47cb-bbcd-b815625c1260.png)

それぞれ、検索した情報を含むと思われる結果を得ることができました。


#### モデルの情報の参照元

なお、利用したモデルの名前に関して以下を参照しました。

●Gemini models  |  Gemini API  |  Google AI for Developers
　https://ai.google.dev/gemini-api/docs/models

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/cc8d0294-a82e-4b84-955f-29d2fb4f069b.png)