はじめに
Spring AI を使うと、Spring Boot アプリケーションから各種 LLM を驚くほど少ないコードで呼び出せます。
今回はその第一歩として、Google の Gemini モデルを ChatClient 経由で呼び出す最小構成を作ってみました。
「とりあえず Spring AI で LLM と会話してみたい」という方向けの、環境構築〜動作確認までの手順です。
今回の環境
- Eclipse Version: 2025-12 (4.38.0)(Spring Tools がインストール済み)
- JDK 21
- Spring Boot 4.1.1 / Spring AI 2.0.1
- ビルドツール:Gradle
1. APIキーの取得
① Google AI Studio にアクセスします
② 画面右上の「APIキーを作成」を押します
③ プロジェクトを選択するか新しく作成して、APIキー(AIzaSy... から始まるキー)を発行し、コピーします
APIキーは第三者に見られると悪用されるおそれがあります。GitHub 等に誤ってコミットしないよう、後述の
application.propertiesの扱いには注意してください。
2. プロジェクトの作成
今回は Eclipse を使用します。
① Eclipse の「Spring スターター・プロジェクト」を選択します
② 「名前」をつけて「次へ」に進みます
今回は「SpringAISample01」という名前にします。
③ 「Google GenAI」にチェックを入れ、「完了」します
それ以外はデフォルトのままで問題ありません。
④ 以下のようなプロジェクトが作成されます
3. application.properties の編集
以下を追加します。
-
spring.ai.google.genai.api-key
- 手順1で取得した
AIza...から始まるAPIキーを貼り付けます
- 手順1で取得した
-
spring.ai.google.genai.chat.model
- 使用するモデルを指定します。今回は
gemini-3.1-flash-liteを使用します
- 使用するモデルを指定します。今回は
spring.application.name=SpringAISample01
spring.ai.google.genai.api-key={手順1で取得したAIza...から始まるAPIキー}
spring.ai.google.genai.chat.model=gemini-3.1-flash-lite
Tips:APIキーを直接書き込むと誤ってGit管理下に入れてしまうリスクがあります。実運用では環境変数(例:
${GEMINI_API_KEY})経由で読み込む形にするのがおすすめです。
4. コードの追加
Gemini とやり取りをするための SpringAiSample01Controller クラスを作成します。
package com.example.springaisample;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SpringAiSample01Controller {
private final ChatClient chatClient;
public SpringAiSample01Controller(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
@GetMapping("/sampleAi")
public String chat(@RequestParam(value = "message", defaultValue = "こんにちは!自己紹介をしてください。") String message) {
// 💡 Spring AI 2.0 の ChatClient を使った呼び出し方
return this.chatClient.prompt()
.user(message)
.call()
.content();
}
}
コードの解説
このコントローラーで行っていることは、大きく分けて次の3つです。
① ChatClient の準備(コンストラクタインジェクション)
private final ChatClient chatClient;
public SpringAiSample01Controller(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
spring-ai-starter-model-google-genai を依存関係に含めておくと、application.properties の設定値(APIキーやモデル名)を読み込んだ ChatClient.Builder が Spring によって自動構成され、DIコンテナに登録されます。
このコントローラーでは、そのBuilderをコンストラクタで受け取り、build() して ChatClient インスタンスを作成しているだけです。自分で RestTemplate を組んだり、Gemini APIのエンドポイントやリクエスト形式を意識したりする必要はありません。
② リクエストの受け口(@GetMapping / @RequestParam)
@GetMapping("/sampleAi")
public String chat(@RequestParam(value = "message", defaultValue = "こんにちは!自己紹介をしてください。") String message) {
/sampleAi へのGETリクエストを受け付けます。クエリパラメータ message の値をそのままユーザーの発言として扱う、シンプルな作りです。
defaultValue を指定しているため、message パラメータを省略してアクセスした場合は「こんにちは!自己紹介をしてください。」という発言をしたことになります。
③ Gemini への問い合わせ(Fluent API)
return this.chatClient.prompt()
.user(message)
.call()
.content();
ChatClient はメソッドチェーンでリクエストを組み立てる、いわゆる Fluent API になっています。それぞれの意味は以下の通りです。
| メソッド | 役割 |
|---|---|
prompt() |
プロンプトの組み立てを開始する |
.user(message) |
ユーザー発言としてメッセージを設定する |
.call() |
設定済みのモデル(gemini-3.1-flash-lite)に対して実際にリクエストを送信する |
.content() |
レスポンスからテキスト本文だけを取り出す |
.call() の戻り値は ChatResponse のような詳細情報を持つオブジェクトになっていますが、今回は本文のテキストだけ得られれば十分なので .content() で文字列に変換して返却しています。
このように、モデルへの接続情報は application.properties に、会話のロジックはコントローラーに、ときれいに責務が分かれているのが Spring AI の特徴です。
ソースコードは下記を参照してください。
5. 実行
Eclipse より「Spring Boot アプリケーション」を実行してください。
成功すると、コンソールに以下のように表示されます。
Webブラウザより http://localhost:8080/sampleAi にアクセスすると、以下のように表示されます。
http://localhost:8080/sampleAi?message=犬がおなかを見せるのはなぜ?
のようにメッセージを追加すると、以下のように表示されます。
まとめ
今回は、Spring AI の ChatClient を使って Gemini と会話する最小構成を作成しました。
ポイントは以下の3つです。
- Google AI Studio でAPIキーを発行するだけで利用を開始できる
-
application.propertiesにキーとモデル名を書くだけでChatClientが自動構成される - コントローラー側は
chatClient.prompt().user(message).call().content()の数行で会話が完結する








