Ein Chatbot, der generative KI mit der berühmten Spring Petclinic -Anwendung verwendet hat. Diese Version verwendet das Langchain4J -Projekt und unterstützt derzeit Openai oder Azure's Openai als LLM -Anbieter . Dies ist eine Gabel aus dem Spring-Petclinic-AI, der auf der Frühlings-KI basiert.
Diese Stichprobe zeigt, wie AI/LLM -Funktionen einfach in eine Java -Anwendung mit Langchain4J integriert werden können. Dies kann dank:
MessageWindowChatMemory -Klasse in AssistantConfiguration und der @MemoryId -Annotation in der Assistant -Schnittstelle.@AiService -Annotation in der Assistant -Schnittstelle.@SystemMessage Annotation -Nutzung in der Assistant -Schnittstelle an.TokenStream Rückgabetyps und der Spring Server-Sent-Ereignisse . Schauen Sie sich den AssistantController -REST -Controller an@Tool Annotation von Langchain4J.EmbeddingModel , InMemoryEmbeddingStore und EmbeddingStoreContentRetriever -Bohnen, während die Einbettungstoreinit -Klasse die Datenaufnahme von Tierärzten beim Start -up übernimmt. Der VetQueryRouter zeigt, wie das Abruf bedingt überspringt, wobei die Entscheidungsfindung von einem LLM angetrieben wird.Spring Petclinic integriert einen Chatbot, mit dem Sie mit der Anwendung in einer natürlichen Sprache interagieren können. Hier sind einige Beispiele für das, was Sie fragen könnten:

Spring Petclinic unterstützt derzeit Openai oder Azure's Openai als LLM -Anbieter. Um spring-petlinic-langchain4j zu starten, führen Sie die folgenden Schritte aus:
langchain4j-open-ai-spring-boot-starter aktiviert. Sie können es in langchain4j-azure-open-ai-spring-boot-starter in pom.xml oder in build.gradle abhängig von Ihrem Build-Tool Ihrer Wahl ändern.demo -Key, den OpenAI für Demonstrationszwecke kostenlos bietet, vorübergehend verwenden. Dieser demo -Schlüssel hat eine Quote, ist auf das GPT-4O-Mini-Modell beschränkt und ist ausschließlich für die Verwendung von Demonstrationen gedacht. 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 ist eine Federschuhanwendung, die mit Maven oder Gradle erstellt wurde. Sie können eine JAR -Datei erstellen und aus der Befehlszeile ausführen (sie sollte genauso gut mit Java 17 oder neuer funktionieren):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarSie können dann auf das PetClinic unter http: // localhost: 8080/zugreifen.

Oder Sie können es mit dem Spring Boot Maven -Plugin direkt von Maven ausführen. Wenn Sie dies tun, werden Änderungen abgenommen, die Sie im Projekt sofort vornehmen (Änderungen an Java -Quelldateien erfordern auch ein Kompilieren - die meisten Menschen verwenden dafür eine IDE):
./mvnw spring-boot:runHINWEIS: Wenn Sie es vorziehen, Gradle zu verwenden, können Sie die App mit
./gradlew builderstellen und nach der JAR -Datei inbuild/libssuchen.
In diesem Projekt gibt es keine Dockerfile . Sie können ein Containerbild (wenn Sie einen Docker -Daemon haben) mit dem Spring Start -Build -Plugin erstellen:
./mvnw spring-boot:build-imageUnser Ausgabe -Tracker ist hier verfügbar.
In seiner Standardkonfiguration verwendet PetClinic eine In-Memory-Datenbank (H2), die beim Start mit Daten besiedelt wird. Die H2-Konsole ist unter http://localhost:8080/h2-console freigelegt, und es ist möglich, den Inhalt der Datenbank mithilfe der jdbc:h2:mem:<uuid> -RUR zu überprüfen. Die UUID wird beim Start in die Konsole gedruckt.
Ein ähnliches Setup wird für MySQL und PostgreSQL bereitgestellt, wenn eine persistente Datenbankkonfiguration erforderlich ist. Beachten Sie, dass die App mit einem anderen Profil ausgeführt wird, wenn sich der Datenbanktyp ändert, mit einem anderen Profil ausgeführt werden: spring.profiles.active=mysql für MySQL oder spring.profiles.active=postgres für PostgreSQL. Weitere Informationen zum Einstellen des aktiven Profils finden Sie in der Spring -Boot -Dokumentation.
Sie können MySQL oder PostgreSQL lokal mit dem für Ihr Betriebssystem bearbeitenden Installateur starten oder Docker verwenden:
docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:8.4oder
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:16.3Weitere Dokumentationen für MySQL und Postgresql.
Anstelle von Vanilla docker können Sie auch die bereitgestellte Datei docker-compose.yml verwenden, um die Datenbankcontainer zu starten. Jeder hat ein Profil wie das Frühlingsprofil:
docker-compose --profile mysql upoder
docker-compose --profile postgres up Zum Entwicklungszeit empfehlen wir, die als main() -Methoden in PetClinicIntegrationTests eingerichteten Testanwendungen (mithilfe der Standard -H2 -Datenbank und Hinzufügen von Spring -Boot -Devtools), MySqlTestApplication und PostgresIntegrationTests zu verwenden. Diese sind so eingerichtet, dass Sie die Apps in Ihrer IDE ausführen können, um schnelles Feedback zu erhalten, und dieselben Klassen wie Integrationstests gegen die jeweilige Datenbank ausführen. Die MySQL -Integrationstests verwenden TestContainer, um die Datenbank in einem Docker -Container zu starten, und die Postgres -Tests verwenden Docker Compose, um dasselbe zu tun.
Es gibt einen petclinic.css in src/main/resources/static/resources/css . Es wurde aus der Quelle von petclinic.scss erzeugt, kombiniert mit der Bootstrap -Bibliothek. Wenn Sie Änderungen an den scss vornehmen oder Bootstrap aktualisieren, müssen Sie die CSS -Ressourcen mit dem Maven -Profil "CSS", dh ./mvnw package -P css , neu kompilieren. Es gibt kein Build -Profil, damit Gradle das CSS zusammenstellt.
Die folgenden Elemente sollten in Ihrem System installiert werden:
Help -> About den Dialog. Wenn M2E nicht vorhanden ist, befolgen Sie den Installationsprozess hierAuf dem Befehlszeilenlauf:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitInnerhalb Sonnenfinsternis oder STS:
Öffnen Sie das Projekt über File -> Import -> Maven -> Existing Maven project und wählen Sie dann das Stammverzeichnis des geklonten Repo aus.
Erstellen Sie dann entweder auf der Befehlszeile ./mvnw generate-resources oder verwenden Sie den Eclipse-Launcher (klicken Sie mit der rechten Maustaste auf das Projekt und Run As -> Maven install ), um die CSS zu generieren. Führen Sie die Hauptmethode der Anwendung aus, indem Sie mit der rechten Maustaste darauf klicken und Run As -> Java Application auswählen.
Intellij Idee:
Wählen Sie im Hauptmenü File -> Open und wählen Sie den Petclinic pom.xml. Klicken Sie auf die Schaltfläche Open .
CSS -Dateien werden aus dem Maven -Build generiert. Sie können sie in der Befehlszeile erstellen ./mvnw generate-resources oder klicken Sie mit der rechten Maustaste auf das spring-petclinic -Projekt, dann Maven -> Generates sources and Update Folders .
Eine Run -Konfiguration mit dem Namen PetClinicApplication sollte für Sie erstellt werden, wenn Sie eine aktuelle ultimative Version verwenden. Führen Sie die Anwendung ansonsten durch, indem Sie mit der rechten Maustaste auf die Hauptklasse PetClinicApplication klicken und Run 'PetClinicApplication' auswählen.
Navigieren Sie zum Petclinic
Besuchen Sie http: // localhost: 8080 in Ihrem Browser.
| Feder -Boot -Konfiguration | Klassen- oder Java -Eigenschaftsdateien |
|---|---|
| Die Hauptklasse | Petclinicapplication |
| Eigenschaftendateien | application.Properties |
| Ausschnitt | CacheConfiguration |
Der Spring Petclinic "Haupt" -Ast in den Spring-Projects Github Org ist die "kanonische" Implementierung basierend auf Spring Boot und Thymeleaf. Es gibt einige Gabeln im GitHub Org-Feder-Petclinic. Wenn Sie daran interessiert sind, einen anderen Technologie -Stack zur Implementierung der PET -Klinik zu verwenden, treten Sie dort in der Community bei.
Einer der besten Teile an der Arbeit an der Spring Petclinic -Anwendung ist, dass wir die Möglichkeit haben, in direktem Kontakt mit vielen Open -Source -Projekten zu arbeiten. Wir fanden Fehler/vorgeschlagene Verbesserungen zu verschiedenen Themen wie Frühling, Frühlingsdaten, Bean -Validierung und sogar Sonnenfinsternis! In vielen Fällen wurden sie in nur wenigen Tagen behoben/implementiert. Hier ist eine Liste von ihnen:
| Name | Ausgabe |
|---|---|
| Spring JDBC: Vereinfachen Sie die Verwendung von namerparameterjdbctemplate | SPR-10256 und SPR-10257 |
| Bean -Validierung / Hibernate -Validator: Vereinfachen Sie die Abhängigkeiten der Maven -Abhängigkeiten und Rückwärtskompatibilität | HV-790 und HV-792 |
| Federdaten: Bieten Sie mehr Flexibilität bei der Arbeit mit JPQL -Abfragen | DataJPA-292 |
Der Problem Tracker ist der bevorzugte Kanal für Fehlerberichte, Feature -Anfragen und Senden von Pull -Anfragen.
Für Pull -Anfragen sind die Editor -Einstellungen in der Editor -Konfiguration verfügbar, um sie bei gemeinsamen Texteditoren einfach zu verwenden. Lesen Sie mehr und laden Sie Plugins unter https://editorconfig.org herunter. Wenn Sie dies zuvor nicht getan haben, füllen Sie bitte die Lizenzvereinbarung aus und senden Sie dies ein.
Die Spring Petclinic -Probenanwendung wird unter Version 2.0 der Apache -Lizenz veröffentlicht.