Un chatbot utilisant une IA générative a été ajouté à la célèbre application Spring Petclinic. Cette version utilise le projet Langchain4j et prend actuellement en charge OpenAI ou OpenAI d'Azure en tant que fournisseur LLM . Il s'agit d'une fourche du printemps-Petclinic-AI basée sur l'IA de printemps.
Cet échantillon montre comment intégrer facilement les capacités AI / LLM dans une application Java à l'aide de Langchain4j . Cela peut être réalisé grâce à:
MessageWindowChatMemory dans AssistantConfiguration et de l'annotation @MemoryId dans l'interface assistant.@AiService dans l'interface assistant.@SystemMessage dans l'interface assistant.TokenStream et des événements Spring Server-Sent . Jetez un œil au contrôleur de repos AssistantController@Tool de Langchain4j.EmbeddingModel , InMemoryEmbeddingStore et EmbeddingStoreContentRetriever tandis que la classe EmbeddingStoreInit gère l'ingestion de données sur les vétérinaires au démarrage. Le VetQueryRouter montre comment sauter conditionnellement la récupération, avec une prise de décision motivée par un LLM.Spring Petclinic intègre un chatbot qui vous permet d'interagir avec l'application en langue naturelle. Voici quelques exemples de ce que vous pourriez demander:

Spring Petclinic prend actuellement en charge Openai ou Azure's Openai en tant que fournisseur LLM. Afin de commencer spring-petlinic-langchain4j effectuez les étapes suivantes:
langchain4j-open-ai-spring-boot-starter est activée. Vous pouvez le changer en langchain4j-azure-open-ai-spring-boot-starter dans pom.xml ou dans build.gradle , selon votre outil de construction de choix.demo , qu'OpenAI fournit gratuitement à des fins de démonstration. Cette clé demo a un quota, est limitée au modèle GPT-4O-MINI et est destinée uniquement à une utilisation de démonstration. 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 est une application Spring Boot construite à l'aide de Maven ou Gradle. Vous pouvez construire un fichier JAR et l'exécuter à partir de la ligne de commande (cela devrait aussi bien fonctionner avec Java 17 ou plus récent):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarVous pouvez ensuite accéder au PetClinic sur http: // localhost: 8080 /.

Ou vous pouvez l'exécuter à partir de Maven directement à l'aide du plugin Spring Boot Maven. Si vous faites cela, il ramassera les modifications que vous apportez dans le projet immédiatement (les modifications des fichiers source Java nécessitent également une compilation - la plupart des gens utilisent un IDE pour cela):
./mvnw spring-boot:runRemarque: Si vous préférez utiliser Gradle, vous pouvez créer l'application en utilisant
./gradlew buildet recherchez le fichier JAR dansbuild/libs.
Il n'y a pas Dockerfile dans ce projet. Vous pouvez construire une image de conteneur (si vous avez un démon docker) en utilisant le plugin de construction de démarrage Spring:
./mvnw spring-boot:build-imageNotre tracker de numéro est disponible ici.
Dans sa configuration par défaut, PetClinic utilise une base de données en mémoire (H2) qui est remplie au démarrage avec des données. La console H2 est exposée à http://localhost:8080/h2-console , et il est possible d'inspecter le contenu de la base de données à l'aide du jdbc:h2:mem:<uuid> URL. L'UUID est imprimé au démarrage de la console.
Une configuration similaire est fournie pour MySQL et PostgreSQL si une configuration de base de données persistante est nécessaire. Notez que chaque fois que le type de base de données change, l'application doit s'exécuter avec un profil différent: spring.profiles.active=mysql pour mysql ou spring.profiles.active=postgres pour PostgreSQL. Voir la documentation Spring Boot pour plus de détails sur la façon de définir le profil actif.
Vous pouvez démarrer MySQL ou PostgreSQL localement avec tout ce qui fonctionne pour votre système d'exploitation ou utilisez 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.4ou
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:16.3Une documentation supplémentaire est fournie pour MySQL et PostgreSQL.
Au lieu de Vanilla docker vous pouvez également utiliser le fichier docker-compose.yml fourni pour démarrer les conteneurs de base de données. Chacun a un profil tout comme le profil de printemps:
docker-compose --profile mysql upou
docker-compose --profile postgres up Au moment du développement, nous vous recommandons d'utiliser les applications de test configurées comme méthodes main() dans PetClinicIntegrationTests (en utilisant la base de données H2 par défaut et ajoutant également Spring Boot Devtools), MySqlTestApplication et PostgresIntegrationTests . Ceux-ci sont configurés afin que vous puissiez exécuter les applications dans votre IDE pour obtenir des commentaires rapides et également exécuter les mêmes classes que les tests d'intégration par rapport à la base de données respective. Les tests d'intégration MySQL utilisent des TestContainers pour démarrer la base de données dans un conteneur Docker, et les tests Postgres utilisent Docker Compose pour faire la même chose.
Il existe un petclinic.css dans src/main/resources/static/resources/css . Il a été généré à partir de la source petclinic.scss , combinée avec la bibliothèque bootstrap. Si vous apportez des modifications au scss ou améliorez Bootstrap, vous devrez recompiler les ressources CSS à l'aide du profil Maven "CSS", c'est-à-dire ./mvnw package -P css . Il n'y a pas de profil de construction pour Gradle pour compiler le CSS.
Les éléments suivants doivent être installés dans votre système:
Help -> About la boîte de dialogue. Si m2e n'est pas là, suivez le processus d'installation iciSur la ligne de commande RUN:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitInside Eclipse ou STS:
Ouvrez le projet via File -> Import -> Maven -> Existing Maven project , puis sélectionnez le répertoire racine du repo cloné.
Ensuite, construisez sur la ligne de commande ./mvnw generate-resources ou utilisez le lanceur Eclipse (clic droit sur le projet et Run As -> Maven install ) pour générer le CSS. Exécutez la méthode principale de l'application en cliquant avec le bouton droit sur celui-ci et en choisissant Run As -> Java Application .
Inside Intellij Idea:
Dans le menu principal, choisissez File -> Open et sélectionnez le PetClinic Pom.xml. Cliquez sur le bouton Open .
Les fichiers CSS sont générés à partir de la construction Maven. Vous pouvez les construire sur la ligne de commande ./mvnw generate-resources ou Cliquez avec le bouton droit sur le projet spring-petclinic puis Maven -> Generates sources and Update Folders .
Une configuration d'exécution nommée PetClinicApplication aurait dû être créée pour vous si vous utilisez une version ultime récente. Sinon, exécutez l'application en cliquant avec le bouton droit sur la classe principale PetClinicApplication et en choisissant Run 'PetClinicApplication' .
Accédez à la Petclinic
Visitez http: // localhost: 8080 dans votre navigateur.
| Configuration de démarrage de printemps | Fichiers de propriété de classe ou Java |
|---|---|
| La classe principale | PETCLINICAPPLICATION |
| Fichiers de propriétés | application.properties |
| Mise en cache | Cacheconfiguration |
La branche "Main" Petclinic Spring dans l'organisation de Spring-Projects GitHub est l'implémentation "canonique" basée sur le démarrage de printemps et le thymeleaf. Il y a pas mal de fourches dans le spring-petclinique de GitHub Org. Si vous êtes intéressé à utiliser une pile de technologie différente pour mettre en œuvre la clinique PET, veuillez y rejoindre la communauté.
L'une des meilleures parties pour travailler sur l'application Spring Petclinic est que nous avons la possibilité de travailler en contact direct avec de nombreux projets open source. Nous avons trouvé des bugs / améliorations suggérées sur divers sujets tels que le printemps, les données de printemps, la validation des haricots et même l'éclipse! Dans de nombreux cas, ils ont été fixés / mis en œuvre en quelques jours seulement. Voici une liste d'entre eux:
| Nom | Problème |
|---|---|
| Spring JDBC: Simplifiez l'utilisation de NamedParameterJDBCTemplate | SPR-10256 et SPR-10257 |
| Validation de la validation des haricots / Hibernate: simplifiez les dépendances Maven et la compatibilité arrière | HV-790 et HV-792 |
| Données de printemps: offrez plus de flexibilité lorsque vous travaillez avec des requêtes JPQL | Datajpa-292 |
Le tracker de problèmes est le canal préféré des rapports de bogues, les demandes de fonctionnalités et la soumission des demandes de traction.
Pour les demandes de traction, les préférences de l'éditeur sont disponibles dans la configuration de l'éditeur pour une utilisation facile dans les éditeurs de texte communs. Lisez la suite et téléchargez des plugins sur https://editorconfig.org. Si vous ne l'avez pas fait auparavant, veuillez remplir et soumettre le contrat de licence de contributeur.
L'application Spring Petclinic Exemple est publiée sous la version 2.0 de la licence Apache.