Se ha agregado un chatbot usando IA generativo a la famosa aplicación de petclinic de primavera. Esta versión utiliza el proyecto LangChain4J y actualmente admite OpenAI o Azure's OpenAI como proveedor de LLM . Esta es una bifurcación del Spring-Petclinic-AI basado en la IA de primavera.
Esta muestra demuestra cómo integrar fácilmente las capacidades AI/LLM en una aplicación Java usando Langchain4j . Esto se puede lograr gracias a:
MessageWindowChatMemory en Asistente Configuración y la anotación @MemoryId en la interfaz de asistente.@AiService en la interfaz de asistente.@SystemMessage en la interfaz de asistente.TokenStream y los eventos de Spring Servidor se admiten. Eche un vistazo al controlador de descanso Asistente Controller@Tool de Langchain4j.EmbeddingModel , InMemoryEmbeddingStore y EmbeddingStoreContentRetriever mientras que la clase Incredding Storeinit maneja la ingestión de datos de los veterinarios al inicio. El VetQueryRouter demuestra cómo omitir condicionalmente la recuperación, con la toma de decisiones impulsada por un LLM.Spring Petclinic integra un chatbot que le permite interactuar con la aplicación en un lenguaje natural. Aquí hay algunos ejemplos de lo que podría preguntar:

Spring Petclinic actualmente es compatible con OpenAi o Azure's OpenAI como proveedor de LLM. Para comenzar spring-petlinic-langchain4j realice los siguientes pasos:
langchain4j-open-ai-spring-boot-starter está habilitada. Puede cambiarlo a langchain4j-azure-open-ai-spring-boot-starter en pom.xml o en build.gradle , dependiendo de su herramienta de compilación de elección.demo , que OpenAI proporciona gratuitamente para fines de demostración. Esta clave demo tiene una cuota, se limita al modelo GPT-4O-Mini y está destinada únicamente al uso de demostración. 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 es una aplicación de arranque de primavera construida con Maven o Gradle. Puede crear un archivo jar y ejecutarlo desde la línea de comando (debería funcionar igual de bien con Java 17 o más nuevo):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarLuego puede acceder al Petclinic en http: // localhost: 8080/.

O puede ejecutarlo desde Maven directamente usando el complemento Maven Boot Spring. Si hace esto, recogerá los cambios que realiza en el proyecto de inmediato (los cambios en los archivos fuente de Java también requieren una compilación: la mayoría de las personas usan un IDE para esto):
./mvnw spring-boot:runNota: Si prefiere usar Gradle, puede construir la aplicación usando
./gradlew buildy buscar el archivo JAR enbuild/libs.
No hay Dockerfile en este proyecto. Puede construir una imagen de contenedor (si tiene un Docker Daemon) usando el complemento de compilación de arranque de Spring:
./mvnw spring-boot:build-imageNuestro rastreador de problemas está disponible aquí.
En su configuración predeterminada, PetClinic utiliza una base de datos en memoria (H2) que se pobla al inicio con los datos. La consola H2 está expuesta en http://localhost:8080/h2-console , y es posible inspeccionar el contenido de la base de datos utilizando el jdbc:h2:mem:<uuid> URL. El UUID se imprime al inicio de la consola.
Se proporciona una configuración similar para MySQL y PostgreSQL si se necesita una configuración de base de datos persistente. Tenga en cuenta que cada vez que cambia el tipo de base de datos, la aplicación debe ejecutarse con un perfil diferente: spring.profiles.active=mysql para mysql o spring.profiles.active=postgres para postgresql. Consulte la documentación de arranque de primavera para obtener más detalles sobre cómo establecer el perfil activo.
Puede iniciar MySQL o PostgreSQL localmente con cualquier instalador que funcione para su sistema operativo o usar 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.4o
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:16.3Se proporciona una documentación adicional para MySQL y PostgreSQL.
En lugar de Vanilla docker , también puede usar el archivo docker-compose.yml proporcionado para iniciar los contenedores de la base de datos. Cada uno tiene un perfil como el perfil de primavera:
docker-compose --profile mysql upo
docker-compose --profile postgres up En el momento de desarrollo, le recomendamos que use las aplicaciones de prueba configuradas como métodos main() en PetClinicIntegrationTests (utilizando la base de datos H2 predeterminada y también agregue los devitos de arranque de Spring), MySqlTestApplication y PostgresIntegrationTests . Estos están configurados para que pueda ejecutar las aplicaciones en su IDE para obtener comentarios rápidos y también ejecutar las mismas clases que las pruebas de integración en la base de datos respectiva. Las pruebas de integración de MySQL usan TestContainers para iniciar la base de datos en un contenedor Docker, y las pruebas de Postgres usan Docker componen para hacer lo mismo.
Hay un petclinic.css en src/main/resources/static/resources/css . Se generó a partir de la fuente petclinic.scss , combinada con la biblioteca de bootstrap. Si realiza cambios en el scss o actualiza Bootstrap, deberá volver a compilar los recursos CSS utilizando el perfil de Maven "CSS", es decir, ./mvnw package -P css . No hay perfil de compilación para Gradle para compilar el CSS.
Los siguientes elementos deben instalarse en su sistema:
Help -> About del cuadro de diálogo. Si M2E no está allí, siga el proceso de instalación aquíEn la línea de comando ejecutar:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitInside Eclipse o STS:
Abra el proyecto a través File -> Import -> Maven -> Existing Maven project , luego seleccione el directorio raíz del repositorio clonado.
Luego construya en la línea de comandos ./mvnw generate-resources o use el lanzador de eclipse (haga clic con el botón derecho en el proyecto y Run As -> Maven install ) para generar el CSS. Ejecute el método principal de la aplicación haciendo clic derecho en él y eligiendo Run As -> Java Application .
IDEA DE INTRELACIÓN DEL INTERNEL:
En el menú principal, elija File -> Open y seleccione el pom.xml petclinic. Haga clic en el botón Open .
Los archivos CSS se generan a partir de la compilación Maven. Puede construirlos en la línea de comandos ./mvnw generate-resources o hacer clic derecho en el proyecto spring-petclinic y luego Maven -> Generates sources and Update Folders .
Una configuración de ejecución llamada PetClinicApplication debería haber sido creada para usted si está utilizando una versión Ultimate reciente. De lo contrario, ejecute la solicitud haciendo clic derecho en la clase principal PetClinicApplication y eligiendo Run 'PetClinicApplication' .
Navegar al petclinic
Visite http: // localhost: 8080 en su navegador.
| Configuración de arranque de primavera | Archivos de propiedad de clase o Java |
|---|---|
| La clase principal | Petclinicapplication |
| Archivos de propiedades | Aplicación. Properties |
| Almacenamiento en caché | Condición de caché |
La rama de Spring Petclinic "principal" en la organización de GitHub de primavera es la implementación "canónica" basada en el arranque de primavera y el thymeleaf. Hay bastantes tenedores en el GitHub org-Petclinic. Si está interesado en utilizar una pila de tecnología diferente para implementar la clínica de mascotas, únase a la comunidad allí.
Una de las mejores partes sobre trabajar en la aplicación Spring Petclinic es que tenemos la oportunidad de trabajar en contacto directo con muchos proyectos de código abierto. ¡Encontramos errores/mejoras sugeridas en varios temas como Spring, Spring Data, Bean Validation e incluso Eclipse! En muchos casos, se han solucionado/implementado en solo unos días. Aquí hay una lista de ellos:
| Nombre | Asunto |
|---|---|
| Spring JDBC: Simplifique el uso de NamedParameterJDBCTemplate | SPR-10256 y SPR-10257 |
| Validación de Bean / Validador de Hibernate: Simplifique las dependencias de Maven y la compatibilidad hacia atrás | HV-790 y HV-792 |
| Datos de resorte: proporcione más flexibilidad cuando se trabaje con consultas JPQL | DataJPA-292 |
El rastreador de problemas es el canal preferido para informes de errores, solicitudes de funciones y envío de solicitudes de extracción.
Para las solicitudes de extracción, las preferencias del editor están disponibles en la configuración del editor para usar fácilmente en editores de texto comunes. Lea más y descargue complementos en https://editorconfig.org. Si no lo ha hecho anteriormente, complete y envíe el acuerdo de licencia de contribuyente.
La aplicación Spring Petclinic Sample se lanza bajo la versión 2.0 de la licencia Apache.