Google Gemini

Gemini (Web API)

概要

Gemini は Google が提供する生成AI(generative AI) である。大規模言語モデル(LLM)に基づいている。 ソフトウェアから Web API (Webサービス) として利用することができる。

アカウント作成とAPIキーの生成

Gemini の Web API を利用するには Google のアカウントを用いる。

  1. Google アカウントを持っていない場合には作成する。 Gmail を使っていたり、Android のスマートフォンを使っている人はすでにアカウントがあるので それを使えばよいが、新たに作成してもよい。
  2. Google AI Studio にアクセスする。Google アカウントでサインインしていない場合は、 「Go to Google AI Studio」ボタンを押して、 使用する Google アカウントでサインインする。 必要に応じて本人確認が行われる。
  3. 「It's time to build」というメッセージが表示される。 「Get API key」というボタンを押す。
  4. 利用規約に同意する場合はその項目をチェックし「同意する」ボタンを押す。
  5. APIキーのページになり、右上に「APIキーを作成」ボタンがあるが、 先に Google Cloud のプロジェクトを作成する必要がある。 よって、 Google Cloud にアクセスする。
  6. Google Cloud を使ったことがない場合には、 ここで Google Cloud Platform の規約等に同意する必要がある。 「同意して続行」ボタンを押す。
  7. 「新しいプロジェクト」のページになる。 プロジェクト名を適宜設定し、「作成」ボタンを押す。
  8. APIキーのページ に戻り、右上の「APIキーを作成」ボタンを押す。 先ほど作成したプロジェクトを選択し、「既存のプロジェクトでAPIキーを作成」ボタンを押す。
  9. 「APIキーが生成されました」というメッセージが表示され、生成されたキーがコピーできる状態になっている。 キーをコピーし、どこかに記録しておく。

プログラムの作成

Gemini の API は REST であり外部ライブラリを使わなくても使用できるが、 ここでは公式の Java用のライブラリを利用する。

Maven の利用

pom.xml の dependencies 要素の中に以下を追記する。

    <dependency>
        <groupId>com.google.genai</groupId>
        <artifactId>google-genai</artifactId>
        <version>1.5.0</version>
    </dependency>

サンプルプログラムの GeminiJson では ライブラリ Jackson も使用するので、以下も追記する。

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.0</version>
  </dependency>

Gemini クライアントの初期化と使用

Gemini との通信は Gemini クライアントである Client クラスを用いて行う。 ここでは、Gemini クライアントの生成時に APIキー (apiKey) を渡すことにする。

// Gemini クライアントをインスタンス化
Client client = Client.builder().apiKey(apiKey).build();

Gemini との会話は Models クラスの generateContent メソッドを用いて行う。

// Gemini に text を送り、返答 response を得る
GenerateContentResponse response =
  client.models.generateContent(model, text, config);

model はモデル名を表す文字列で、"gemini-2.0-flash" などとする。 text は文字列で Gemini に話しかける内容である。 config は設定内容を表す GenerateContentConfig クラスのオブジェクトであるが、 特別な設定をしない場合には null でよい。

返答は GenerateContentResponse オブジェクトの形で得られる。 色々な情報を含んでいるが、テキストだけを得たいのであれば text() メソッドを用いる。

// 返答のテキスト部分を text() で取得して表示
System.out.println("返答: " + response.text());

サンプルコード

定数 apiKey には自分のAPIキーを記入する。

シンプル

特別な設定はせず、デフォルトの設定で動かす例。

GeminiSimple.java

Google検索の使用

モデルのみを利用する場合には最新のニュースなどに対する質問に答えられないため、 Google 検索を実行し、それを踏まえた返答を生成させる。 内容が最新になるだけでなく、説明が詳しくなるなど内容が変化することもある。 なお、返答までの時間は長くなる。

GeminiSearch.java

出力を JSON 形式に変更

情報を抽出したり整理したりさせる場合、出力形式が文章だと都合が悪いことがある。 生成AIは出力形式を指示することができるが、ここでは JSON で返答するよう指示する。 返答の構造も指示することができるが、この例では Gemini に任せている。

ここでは JSON を扱うライブラリとして、 「データエンジニアリング」で学んだ Jackson を使っている。

GeminiJson.java