生成AIを使用したチャットボットが有名な春のペットクリニックアプリケーションに追加されました。このバージョンはLangchain4Jプロジェクトを使用しており、現在、 LLMプロバイダーとしてOpenaiまたはAzure's Openaiをサポートしています。これは、スプリングAIに基づくSpring-Petclinic-AIのフォークです。
このサンプルは、AI/LLM機能をLangChain4Jを使用してJavaアプリケーションに簡単に統合する方法を示しています。これは、次のおかげで達成できます。
MessageWindowChatMemoryクラスの使用と、アシスタントインターフェイスでの@MemoryIdアノテーションを参照してください。@AiServiceアノテーションの使用を参照してください。@SystemMessageアノテーションの使用法を見てください。TokenStreamリターンタイプとスプリングサーバーセントイベントのサポートを使用する場合、トークンごとにストリーミング応答がトークンします。 AssistantController RESTコントローラーをご覧ください@Toolアノテーションを使用して関数を宣言します。EmbeddingModel Model、 InMemoryEmbeddingStore 、およびEmbeddingStoreContentRetriever beansを宣言します。 VetqueryRouterは、LLMによって意思決定が推進され、条件付きで検索をスキップする方法を示しています。Spring Petclinicは、自然言語でアプリケーションと対話できるチャットボットを統合します。ここにあなたが尋ねることができるもののいくつかの例があります:

Spring Petclinicは現在、LLMプロバイダーとしてOpenaiまたはAzure's Openaiをサポートしています。 spring-petlinic-langchain4jを開始するために、次の手順を実行します。
langchain4j-open-ai-spring-boot-starter依存関係が有効になっています。選択したビルドツールに応じて、 pom.xmlまたはbuild.gradleのいずれかで、 langchain4j-azure-open-ai-spring-boot-starterに変更できます。demoキーを一時的に使用できます。これは、Demoaiがデモンストレーションの目的で無料で提供しています。このdemoにはクォータがあり、GPT-4O-MINIモデルに限定されており、デモンストレーションの使用のみを目的としています。 export OPENAI_API_KEY= " your_api_key_here " export AZURE_OPENAI_ENDPOINT= " https://your_resource.openai.azure.com "
export AZURE_OPENAI_KEY= " your_api_key_here "Spring Petclinicは、MavenまたはGradleを使用して構築されたSpring Bootアプリケーションです。 JARファイルを構築して、コマンドラインから実行できます(Java 17以降でも同様に機能するはずです):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarその後、http:// localhost:8080/でpetclinicにアクセスできます。

または、Spring Boot Mavenプラグインを使用して、Mavenから直接実行できます。これを行うと、プロジェクトで作成した変更がすぐにピックアップされます(Javaソースファイルの変更にもコンパイルが必要です - ほとんどの人はこれにIDEを使用します):
./mvnw spring-boot:run注:Gradleを使用する場合は、
./gradlew buildを使用してアプリを構築し、build/libsでJARファイルを探すことができます。
このプロジェクトにはDockerfileはありません。 Spring Boot Buildプラグインを使用して、コンテナ画像(Dockerデーモンがある場合)を構築できます。
./mvnw spring-boot:build-image問題トラッカーはこちらから入手できます。
デフォルトの構成では、PetClinicは、スタートアップでデータが入力されるインメモリデータベース(H2)を使用します。 H2コンソールはhttp://localhost:8080/h2-consoleに露出されており、 jdbc:h2:mem:<uuid> URLを使用してデータベースのコンテンツを調べることができます。 UUIDは、スタートアップでコンソールに印刷されています。
永続的なデータベース構成が必要な場合、MySQLとPostgreSQLに同様のセットアップが提供されます。データベースタイプが変更されるたびに、アプリは別のプロファイルで実行する必要があることに注意してください: spring.profiles.active=mysqlまたはspring.profiles.active=postgres 。アクティブプロファイルの設定方法の詳細については、Spring Bootドキュメントを参照してください。
OSで動作するインストーラーを使用して、MYSQLまたはPOSTGRESQLをローカルに起動するか、Dockerを使用できます。
docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:8.4または
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:16.3MySQLおよびPostgreSQLのさらなるドキュメントが提供されています。
Vanilla dockerの代わりに、提供されたdocker-compose.ymlファイルを使用してデータベースコンテナを起動することもできます。それぞれがスプリングプロファイルと同じようにプロファイルを持っています。
docker-compose --profile mysql upまたは
docker-compose --profile postgres up開発時には、 PetClinicIntegrationTests (デフォルトのH2データベースを使用し、Spring Boot DevToolsの追加)、 MySqlTestApplication 、およびPostgresIntegrationTestsのmain()メソッドとして設定されたテストアプリケーションを使用することをお勧めします。これらは、IDEでアプリを実行して高速フィードバックを取得し、それぞれのデータベースに対する統合テストと同じクラスを実行できるように設定されています。 MySQL統合テストでは、TestContainersを使用してDockerコンテナでデータベースを起動し、PostgresテストではDocker Composeが同じことを行います。
src/main/resources/static/resources/cssにはpetclinic.cssがあります。 Bootstrapライブラリと組み合わせて、 petclinic.scssソースから生成されました。 scssを変更したり、ブートストラップをアップグレードしたりする場合、Mavenプロファイル「CSS」、IE ./mvnw package -P cssを使用してCSSリソースを再コンパイルする必要があります。 GradleがCSSをコンパイルするためのビルドプロファイルはありません。
次のアイテムをシステムにインストールする必要があります。
Help -> AboutにM2アイコンがあります。 M2Eがそこにない場合は、こちらのインストールプロセスに従ってくださいコマンドラインで実行されます:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitEclipseまたはSTSの内部:
File -> Import -> Maven -> Existing Maven project 、次に、クローン化されたリポジトリのルートディレクトリを選択します。
次に、コマンドラインに基づいて構築されます./mvnw generate-resourcesまたはEclipseランチャー(プロジェクトを右クリックしてRun As -> Maven install )を使用してCSSを生成します。アプリケーションのメインメソッドを右クリックして、 Run As -> Java Applicationを選択して実行します。
内部Intellijのアイデア:
メインメニューで、 File -> Openを選択して[petclinic pom.xml]を選択します。 Openボタンをクリックします。
CSSファイルは、Mavenビルドから生成されます。コマンドラインでそれらを構築することができます./mvnw generate-resourcesか、 spring-petclinicプロジェクトを右クリックしてからMaven -> Generates sources and Update Folders 。
最近の究極のバージョンを使用している場合、 PetClinicApplicationという名前の実行構成が作成されるはずです。それ以外の場合は、 PetClinicApplicationメインクラスを右クリックしてRun 'PetClinicApplication'を選択してアプリケーションを実行します。
ペットクリニックに移動します
ブラウザのhttp:// localhost:8080にアクセスしてください。
| スプリングブート構成 | クラスまたはJavaプロパティファイル |
|---|---|
| メインクラス | petclinicApplication |
| プロパティファイル | Application.Properties |
| キャッシング | cacheconfiguration |
Spring-Projects Github組織のSpring Petclinicの「メイン」ブランチは、Spring BootとThymeleafに基づく「標準的な」実装です。 Github Org Spring-Petclinicにはかなりの数のフォークがあります。別のテクノロジースタックを使用してPETクリニックを実装することに興味がある場合は、そこでコミュニティに参加してください。
Spring Petclinicアプリケーションに取り組むことに関する最良の部分の1つは、多くのオープンソースプロジェクトと直接接触する機会があることです。 Spring、Spring Data、Bean検証、さらにはEclipseなど、さまざまなトピックのバグ/提案された改善が見つかりました!多くの場合、数日で修正/実装されています。これらのリストは次のとおりです。
| 名前 | 問題 |
|---|---|
| Spring JDBC:AndameParameterjdbctemplateの使用法を簡素化します | SPR-10256およびSPR-10257 |
| Bean Validation / Hibernate Validator:Maven依存関係と後方互換性を簡素化する | HV-790およびHV-792 |
| スプリングデータ:JPQLクエリを使用するときに、より柔軟性を提供します | dataJPA-292 |
問題トラッカーは、バグレポート、機能リクエスト、およびプルリクエストの送信用の優先チャネルです。
プルリクエストの場合、エディターの設定は、一般的なテキストエディターで簡単に使用できるエディター構成で利用できます。続きを読んで、https://editorconfig.orgでプラグインをダウンロードしてください。以前に行ったことがない場合は、貢献者ライセンス契約に記入して提出してください。
Spring Petclinic Sampleアプリケーションは、Apacheライセンスのバージョン2.0でリリースされます。