Gemini は Google が提供する生成AI(generative AI) である。大規模言語モデル(LLM)に基づいている。 ソフトウェアから Web API (Webサービス) として利用することができる。
Gemini の Web API を利用するには Google のアカウントを用いる。
Gemini の API は REST であり外部ライブラリを使わなくても使用できるが、 ここでは公式の Java用のライブラリを利用する。
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 クライアントである 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キーを記入する。
特別な設定はせず、デフォルトの設定で動かす例。
モデルのみを利用する場合には最新のニュースなどに対する質問に答えられないため、 Google 検索を実行し、それを踏まえた返答を生成させる。 内容が最新になるだけでなく、説明が詳しくなるなど内容が変化することもある。 なお、返答までの時間は長くなる。
情報を抽出したり整理したりさせる場合、出力形式が文章だと都合が悪いことがある。 生成AIは出力形式を指示することができるが、ここでは JSON で返答するよう指示する。 返答の構造も指示することができるが、この例では Gemini に任せている。
ここでは JSON を扱うライブラリとして、 「データエンジニアリング」で学んだ Jackson を使っている。