Um chatbot usando IA generativo foi adicionado ao famoso aplicativo PetClinic de primavera. Esta versão usa o projeto Langchain4J e atualmente suporta o OpenAI ou o Azure's Openai como o provedor LLM . Este é um garfo do Spring-Petclinic-AI baseado na IA da primavera.
Esta amostra demonstra como integrar facilmente os recursos de AI/LLM em um aplicativo Java usando Langchain4J . Isso pode ser alcançado graças a:
MessageWindowChatMemory no AssistantConfiguration e a anotação @MemoryId na interface do assistente.@AiService na interface do assistente.@SystemMessage na interface do assistente.TokenStream e os eventos de Spring Server-Insent Supports. Dê uma olhada no controlador de repouso do AssistantController@Tool do Langchain4J.EmbeddingModel , InMemoryEmbeddingStore e EmbeddingStoreContentRetriever Beans, enquanto a classe IncleddingStoreinit lida com a ingestão de dados veterinários na inicialização. O VetQueryRouter demonstra como pular a recuperação condicionalmente, com a tomada de decisão impulsionada por um LLM.O Spring PetClinic integra um chatbot que permite interagir com o aplicativo em uma linguagem natural. Aqui estão alguns exemplos do que você poderia perguntar:

Atualmente, a Spring PetClinic suporta o Openai ou o Azure's Openai como o provedor da LLM. Para iniciar spring-petlinic-langchain4j execute as etapas a seguir:
langchain4j-open-ai-spring-boot-starter está ativada. Você pode alterá-lo para langchain4j-azure-open-ai-spring-boot-starter em pom.xml ou em build.gradle , dependendo da sua ferramenta de construção de escolha.demo , que o OpenAI fornece gratuitamente para fins de demonstração. Essa chave demo tem uma cota, é limitada ao modelo GPT-4O-Mini e destina-se apenas ao uso da demonstração. 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 "O Spring PetClinic é um aplicativo de inicialização de primavera criado usando Maven ou Gradle. Você pode construir um arquivo JAR e executá -lo na linha de comando (ele deve funcionar tão bem com o Java 17 ou mais recente):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarVocê pode acessar o PetClinic em http: // localhost: 8080/.

Ou você pode executá -lo do MAVEN diretamente usando o plug -in do Spring Boot Maven. Se você fizer isso, ele fará alterações que você faz no projeto imediatamente (alterações nos arquivos de origem Java também exigem uma compilação - a maioria das pessoas usa um IDE para isso):
./mvnw spring-boot:runNOTA: Se você preferir usar o gradle, pode criar o aplicativo usando
./gradlew builde procurar o arquivo jar nobuild/libs.
Não há Dockerfile neste projeto. Você pode construir uma imagem de contêiner (se tiver um daemon do Docker) usando o plug -in de construção de inicialização da mola:
./mvnw spring-boot:build-imageNosso rastreador de problemas está disponível aqui.
Em sua configuração padrão, a PetClinic usa um banco de dados em memória (H2) que é preenchido na inicialização com dados. O console H2 é exposto em http://localhost:8080/h2-console , e é possível inspecionar o conteúdo do banco de dados usando o jdbc:h2:mem:<uuid> URL. O UUID é impresso na inicialização do console.
Uma configuração semelhante é fornecida para MySQL e PostgreSQL se for necessária uma configuração persistente de banco de dados. Observe que sempre que o tipo de banco de dados altera, o aplicativo precisa ser executado com um perfil diferente: spring.profiles.active=mysql para mysql ou spring.profiles.active=postgres para postgreSQL. Consulte a documentação da inicialização da primavera para obter mais detalhes sobre como definir o perfil ativo.
Você pode iniciar o MySQL ou o PostgreSQL localmente com qualquer instalador que funcione para o seu sistema operacional ou use 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.3Documentação adicional é fornecida para MySQL e PostgreSQL.
Em vez do docker de baunilha, você também pode usar o arquivo fornecido docker-compose.yml para iniciar os contêineres do banco de dados. Cada um tem um perfil como o perfil da primavera:
docker-compose --profile mysql upou
docker-compose --profile postgres up No momento do desenvolvimento, recomendamos que você use os aplicativos de teste configurados como métodos main() no PetClinicIntegrationTests (usando o banco de dados H2 padrão e também a adição de Spring Boot DevTools), MySqlTestApplication e PostgresIntegrationTests . Eles são configurados para que você possa executar os aplicativos no seu IDE para obter feedback rápido e também executar as mesmas classes que os testes de integração em relação ao respectivo banco de dados. Os testes de integração do MySQL usam o TestContainers para iniciar o banco de dados em um contêiner do Docker, e os testes do Postgres usam o Docker Compõe para fazer a mesma coisa.
Existe um petclinic.css em src/main/resources/static/resources/css . Foi gerado a partir da fonte petclinic.scss , combinada com a Biblioteca de Bootstrap. Se você fizer alterações no scss ou atualizar o bootstrap, precisará recompensar os recursos CSS usando o perfil Maven "CSS", ou seja ./mvnw package -P css . Não há perfil de construção para a Gradle compilar o CSS.
Os seguintes itens devem ser instalados em seu sistema:
Help -> About a caixa de diálogo. Se o M2E não estiver lá, siga o processo de instalação aquiNa linha de comando executar:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitEclipse dentro ou STS:
Abra o projeto via File -> Import -> Maven -> Existing Maven project e selecione o diretório raiz do repositório clonado.
Em seguida, construa na linha de comando ./mvnw generate-resources ou use o lançador Eclipse (clique com o botão direito do mouse no projeto e Run As -> Maven install ) para gerar o CSS. Execute o método principal do aplicativo clicando com o botão direito do mouse e escolhendo Run As -> Java Application .
Intellij Idea:
No menu principal, escolha File -> Open e selecione o PetClinic Pom.xml. Clique no botão Open .
Os arquivos CSS são gerados a partir da construção do Maven. Você pode construí-los na linha de comando ./mvnw generate-resources ou clicar com o botão direito do mouse no projeto spring-petclinic e depois Maven -> Generates sources and Update Folders .
Uma configuração de execução chamada PetClinicApplication deveria ter sido criada para você se você estiver usando uma versão final recente. Caso contrário, execute o aplicativo clicando com o botão direito do mouse na classe principal PetClinicApplication e escolhendo Run 'PetClinicApplication' .
Navegue até o petclinic
Visite http: // localhost: 8080 no seu navegador.
| Configuração da inicialização da primavera | Classe ou arquivos de propriedade Java |
|---|---|
| A classe principal | PetClinicApplication |
| Arquivos de propriedades | Application.Properties |
| Cache | CacheConfiguration |
O ramo "principal" da primavera no Github Org é a implementação "canônica" com base na bota de primavera e nos times. Existem alguns garfos no Github Org Spring-PetClinic. Se você estiver interessado em usar uma pilha de tecnologia diferente para implementar a clínica de animais de estimação, junte -se à comunidade lá.
Uma das melhores partes sobre o trabalho na aplicação da primavera PetClinic é que temos a oportunidade de trabalhar em contato direto com muitos projetos de código aberto. Encontramos bugs/melhorias sugeridas em vários tópicos, como primavera, dados da primavera, validação de feijão e até eclipse! Em muitos casos, eles foram corrigidos/implementados em apenas alguns dias. Aqui está uma lista deles:
| Nome | Emitir |
|---|---|
| Spring JDBC: Simplifique o uso de nome deparameterjdbctemplate | SPR-10256 e SPR-10257 |
| Validação de Bean / Validador de Hibernato: Simplifique as dependências do Maven e a compatibilidade com versões anteriores | HV-790 e HV-792 |
| Dados da mola: forneça mais flexibilidade ao trabalhar com consultas JPQL | Datajpa-292 |
O rastreador de problemas é o canal preferido para relatórios de bugs, solicitações de recursos e envio de solicitações de puxar.
Para solicitações de tração, as preferências do editor estão disponíveis na configuração do editor para facilitar o uso em editores de texto comuns. Leia mais e baixe plugins em https://editorconfig.org. Se você não o fez anteriormente, preencha e envie o contrato de licença do colaborador.
O aplicativo de amostra PetClinic Spring é liberado na versão 2.0 da licença Apache.