생성 AI를 사용한 챗봇이 유명한 스프링 페트 클리닉 애플리케이션에 추가되었습니다. 이 버전은 Langchain4J 프로젝트를 사용하며 현재 LLM 제공 업체 로서 OpenAI 또는 Azure의 OpenAI를 지원합니다. 이것은 스프링 AI를 기반으로하는 스프링-페트 클리닉 -AI 의 포크입니다.
이 샘플은 Langchain4J를 사용하여 AI/LLM 기능을 Java 응용 프로그램에 쉽게 통합하는 방법을 보여줍니다. 이것은 다음 덕분에 달성 할 수 있습니다.
MessageWindowChatMemory 클래스의 사용 및 어시스턴트 인터페이스에서 @MemoryId 주석의 사용을 참조하십시오.@AiService 주석 사용을 참조하십시오.@SystemMessage 주석 사용량을보십시오.TokenStream 리턴 유형 및 Spring Server Sent Events가 지원할 때. AssistantController Rest Controller를 살펴보십시오@Tool 주석을 사용하여 기능을 선언합니다.EmbeddingModel , InMemoryEmbeddingStore 및 EmbeddingStoreContentRetriever Bean을 선언합니다. VetqueryRouter는 LLM이 주도하는 의사 결정과 함께 조건부 검색을 건너 뛰는 방법을 보여줍니다.Spring Petclinic은 자연어로 응용 프로그램과 상호 작용할 수있는 챗봇을 통합합니다. 다음은 다음과 같은 질문에 대한 몇 가지 예 입니다.

Spring Petclinic은 현재 OpenAI 또는 Azure의 OpenAI를 LLM 제공 업체로 지원합니다. spring-petlinic-langchain4j 시작하려면 다음 단계를 수행합니다.
langchain4j-open-ai-spring-boot-starter 의존성이 활성화됩니다. 선택한 빌드 도구에 따라 pom.xml 또는 build.gradle 의 langchain4j-azure-open-ai-spring-boot-starter 로 변경할 수 있습니다.demo 키를 임시로 사용할 수 있습니다. 이 demo 키에는 할당량이 있으며 GPT-4O- 미니 모델로 제한되며 데모 사용을위한 것입니다. 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을 사용하여 구축 된 스프링 부팅 애플리케이션입니다. JAR 파일을 작성하여 명령 줄에서 실행할 수 있습니다 (Java 17 또는 Newer에서도 잘 작동해야합니다).
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 빌드 플러그인을 사용하여 컨테이너 이미지 (Docker 데몬이있는 경우)를 빌드 할 수 있습니다.
./mvnw spring-boot:build-image당사의 문제 추적기는 여기에서 사용할 수 있습니다.
기본 구성에서 Petclinic은 데이터와 함께 스타트 업에서 채워진 메모리 데이터베이스 (H2)를 사용합니다. H2 콘솔은 http://localhost:8080/h2-console 에 노출되며 jdbc:h2:mem:<uuid> url을 사용하여 데이터베이스의 내용을 검사 할 수 있습니다. UUID는 스타트 업에서 콘솔로 인쇄됩니다.
영구 데이터베이스 구성이 필요한 경우 MySQL 및 PostgreSQL에 대해 유사한 설정이 제공됩니다. 데이터베이스 유형이 변경 될 때마다 앱은 MySQL의 경우 spring.profiles.active=mysql spring.profiles.active=postgres 하여 다른 프로파일로 실행해야합니다. 활성 프로파일을 설정하는 방법에 대한 자세한 내용은 Spring Boot 설명서를 참조하십시오.
OS에서 작동하거나 Docker를 사용하여 MySQL 또는 PostgreSQL을 로컬로 시작할 수 있습니다.
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에 대한 추가 문서가 제공됩니다.
바닐라 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 가 있습니다. petclinic.scss 소스에서 Bootstrap 라이브러리와 결합하여 생성되었습니다. 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 통해 프로젝트를 열면 복제 된 repo의 루트 디렉토리를 선택하십시오.
그런 다음 명령 줄을 빌드 ./mvnw generate-resources 하거나 Eclipse Launcher를 사용하여 (프로젝트를 마우스 오른쪽 버튼으로 클릭하고 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 .
최근 Ultimate 버전을 사용하는 경우 PetClinicApplication 이라는 실행 구성이 생성되어야합니다. 그렇지 않으면 PetClinicApplication 메인 클래스를 마우스 오른쪽 버튼으로 클릭하고 Run 'PetClinicApplication' 선택하여 응용 프로그램을 실행하십시오.
Petclinic으로 이동하십시오
브라우저에서 http : // localhost : 8080을 방문하십시오.
| 스프링 부팅 구성 | 클래스 또는 Java 속성 파일 |
|---|---|
| 메인 클래스 | petclinicapplication |
| 속성 파일 | application.properties |
| 캐싱 | Cacheconfiguration |
스프링 프로젝트 Github org의 스프링 Petclinic "Main"브랜치는 스프링 부팅 및 Thymeleaf를 기반으로 한 "표준"구현입니다. github org spring-petclinic에는 꽤 많은 포크가 있습니다. PET 클리닉을 구현하기 위해 다른 기술 스택을 사용하는 데 관심이 있으시면 커뮤니티에 가입하십시오.
Spring Petclinic Application에서 작업하는 데있어 가장 중요한 부분 중 하나는 많은 오픈 소스 프로젝트와 직접 접촉 할 수있는 기회가 있다는 것입니다. 우리는 스프링, 스프링 데이터, 콩 검증 및 Eclipse와 같은 다양한 주제에서 버그/제안 된 개선 사항을 발견했습니다! 대부분의 경우 며칠 만에 고정/구현되었습니다. 다음은 다음과 같은 목록입니다.
| 이름 | 문제 |
|---|---|
| Spring JDBC : PameParameterJdbctemplate의 사용법을 단순화합니다 | SPR-10256 및 SPR-10257 |
| Bean Validation / Hibernate Validator : Maven 종속성 및 후진 호환성 단순화 | HV-790 및 HV-792 |
| 스프링 데이터 : JPQL 쿼리로 작업 할 때 더 많은 유연성을 제공합니다. | DataJPA-292 |
문제 추적기는 버그 보고서, 기능 요청 및 풀 요청 제출에 선호하는 채널입니다.
풀 요청의 경우 편집기 선호도는 편집기 구성에서 공통 텍스트 편집기에서 쉽게 사용할 수 있도록 제공됩니다. 자세한 내용을 읽고 https://editorconfig.org에서 플러그인을 다운로드하십시오. 이전에 그렇게하지 않은 경우 기고자 라이센스 계약을 작성하여 제출하십시오.
Spring Petclinic 샘플 응용 프로그램은 Apache 라이센스의 버전 2.0에 따라 릴리스됩니다.