chatbot ที่ใช้ AI Generative ถูกเพิ่มเข้าไปในแอปพลิเคชัน Petclinic ที่มีชื่อเสียง รุ่นนี้ใช้ โครงการ Langchain4J และปัจจุบันรองรับ OpenAI หรือ Azure ของ OpenAI ในฐานะ ผู้ให้บริการ LLM นี่คือส้อมจาก Spring-Petclinic-AI บนพื้นฐานของฤดูใบไม้ผลิ AI
ตัวอย่างนี้แสดงให้เห็นถึงวิธี การรวมความสามารถของ AI/LLM เข้ากับแอปพลิเคชัน Java โดยใช้ Langchain4J สามารถทำได้ขอบคุณ:
MessageWindowChatMemory ใน AssistantConfiguration และ @MemoryId Annotation ในอินเทอร์เฟซผู้ช่วย@AiService ในส่วนประกอบผู้ช่วย@SystemMessage ในอินเทอร์เฟซผู้ช่วยTokenStream Return และ เหตุการณ์ Server-Server-sent รองรับ ลองดูที่ผู้ช่วย REST AssistantController@Tool จาก langchain4jEmbeddingModel , InMemoryEmbeddingStore และ EmbeddingStoreContentRetriever Beans ในขณะที่ EmbeddingStoreInit จัดการกับการบริโภคข้อมูลสัตวแพทย์เมื่อเริ่มต้น VetQueryRouter แสดงให้เห็นถึงวิธีการข้ามการดึงข้อมูลอย่างมีเงื่อนไขด้วยการตัดสินใจที่ขับเคลื่อนโดย LLMSpring Petclinic รวม chatbot ที่ช่วยให้คุณสามารถโต้ตอบกับแอปพลิเคชันในภาษาธรรมชาติ นี่คือ ตัวอย่าง ของสิ่งที่คุณถามได้:

Spring Petclinic ปัจจุบันรองรับ OpenAI หรือ Azure ของ OpenAI ในฐานะผู้ให้บริการ LLM เพื่อเริ่ม spring-petlinic-langchain4j ทำตามขั้นตอนต่อไปนี้:
langchain4j-open-ai-spring-boot-starter ถูกเปิดใช้งาน คุณสามารถเปลี่ยนเป็น langchain4j-azure-open-ai-spring-boot-starter ทั้งใน pom.xml หรือใน build.gradle ขึ้นอยู่กับเครื่องมือสร้างที่คุณเลือกdemo ได้ชั่วคราวซึ่ง OpenAI มอบให้ฟรีเพื่อการสาธิต คีย์ demo นี้มีโควต้า จำกัด เฉพาะโมเดล GPT-4O-MINI และมีไว้สำหรับการใช้การสาธิตเท่านั้น 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 หรือใหม่กว่า):
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.git
cd spring-petclinic
./mvnw package
java -jar target/ * .jarจากนั้นคุณสามารถเข้าถึง petclinic ได้ที่ http: // localhost: 8080/

หรือคุณสามารถเรียกใช้จาก Maven โดยตรงโดยใช้ปลั๊กอินสปริงบูต Maven หากคุณทำเช่นนี้มันจะรับการเปลี่ยนแปลงที่คุณทำในโครงการทันที (การเปลี่ยนแปลงไฟล์ต้นฉบับ Java ต้องมีการรวบรวมเช่นกัน - คนส่วนใหญ่ใช้ IDE สำหรับสิ่งนี้):
./mvnw spring-boot:runหมายเหตุ: หากคุณต้องการใช้ Gradle คุณสามารถสร้างแอพโดยใช้
./gradlew buildและค้นหาไฟล์ jar ในbuild/libs
ไม่มี Dockerfile ในโครงการนี้ คุณสามารถสร้างอิมเมจคอนเทนเนอร์ (ถ้าคุณมี Docker daemon) โดยใช้ปลั๊กอิน Boot Spring Boot:
./mvnw spring-boot:build-imageตัวติดตามปัญหาของเรามีอยู่ที่นี่
ในการกำหนดค่าเริ่มต้น PetClinic ใช้ฐานข้อมูลในหน่วยความจำ (H2) ซึ่งได้รับการเติมเมื่อเริ่มต้นด้วยข้อมูล คอนโซล H2 ถูกเปิดเผยที่ http://localhost:8080/h2-console และเป็นไปได้ที่จะตรวจสอบเนื้อหาของฐานข้อมูลโดยใช้ jdbc:h2:mem:<uuid> url UUID ถูกพิมพ์เมื่อเริ่มต้นไปยังคอนโซล
มีการตั้งค่าที่คล้ายกันสำหรับ MySQL และ PostgreSQL หากจำเป็นต้องมีการกำหนดค่าฐานข้อมูลแบบถาวร โปรดทราบว่าเมื่อใดก็ตามที่ประเภทฐานข้อมูลเปลี่ยนไปแอปจะต้องทำงานด้วยโปรไฟล์อื่น: spring.profiles.active=mysql สำหรับ MySQL หรือ spring.profiles.active=postgres สำหรับ PostgreSQL ดูเอกสารประกอบสปริงสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการตั้งค่าโปรไฟล์ที่ใช้งานอยู่
คุณสามารถเริ่ม MySQL หรือ postgreSQL ในเครื่องด้วยตัวติดตั้งใด ๆ ที่ใช้งานได้สำหรับระบบปฏิบัติการของคุณหรือใช้ 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.4หรือ
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:16.3มีการจัดทำเอกสารเพิ่มเติมสำหรับ MySQL และ PostgreSQL
แทนที่จะเป็น Vanilla docker คุณยังสามารถใช้ไฟล์ docker-compose.yml ที่ให้ไว้เพื่อเริ่มต้นคอนเทนเนอร์ฐานข้อมูล แต่ละคนมีโปรไฟล์เช่นเดียวกับโปรไฟล์สปริง:
docker-compose --profile mysql upหรือ
docker-compose --profile postgres up ในเวลาพัฒนาเราขอแนะนำให้คุณใช้แอปพลิเคชันทดสอบที่ตั้งค่าเป็นวิธีการ main() ใน PetClinicIntegrationTests (ใช้ฐานข้อมูล H2 เริ่มต้นและยังเพิ่ม Spring Boot Devtools), MySqlTestApplication และ PostgresIntegrationTests สิ่งเหล่านี้ถูกตั้งค่าเพื่อให้คุณสามารถเรียกใช้แอพใน IDE ของคุณเพื่อรับข้อเสนอแนะที่รวดเร็วและเรียกใช้คลาสเดียวกันกับการทดสอบการรวมกับฐานข้อมูลที่เกี่ยวข้อง การทดสอบการรวม MySQL ใช้ testContainers เพื่อเริ่มฐานข้อมูลในคอนเทนเนอร์ Docker และการทดสอบ Postgres ใช้ Docker เขียนเพื่อทำสิ่งเดียวกัน
มี petclinic.css ใน src/main/resources/static/resources/css มันถูกสร้างขึ้นจากแหล่ง petclinic.scss รวมกับไลบรารี bootstrap หากคุณทำการเปลี่ยนแปลง scss หรืออัพเกรด bootstrap คุณจะต้องคอมไพล์ทรัพยากร CSS อีกครั้งโดยใช้โปรไฟล์ Maven "CSS" เช่น ./mvnw package -P css ไม่มีโปรไฟล์การสร้างสำหรับ Gradle เพื่อรวบรวม CSS
ควรติดตั้งรายการต่อไปนี้ในระบบของคุณ:
Help -> About กล่องโต้ตอบ หาก M2E ไม่อยู่ที่นั่นให้ทำตามกระบวนการติดตั้งที่นี่บนบรรทัดคำสั่งเรียกใช้:
git clone https://github.com/spring-petclinic/spring-petclinic-langchain4j.gitภายใน eclipse หรือ STS:
เปิดโครงการผ่าน File -> Import -> Maven -> Existing Maven project จากนั้นเลือกไดเรกทอรีรูทของ repo ที่ถูกโคลน
จากนั้นสร้างขึ้นบนบรรทัดคำสั่ง ./mvnw generate-resources หรือใช้ตัวเรียกใช้ Eclipse (คลิกขวาในโครงการและ Run As -> Maven install ) เพื่อสร้าง CSS เรียกใช้วิธีหลักของแอปพลิเคชันโดยคลิกขวาที่มันและเลือก Run As -> Java Application
Inside Intellij Idea:
ในเมนูหลักเลือก File -> Open และเลือก petclinic pom.xml คลิกที่ปุ่ม Open
ไฟล์ CSS ถูกสร้างขึ้นจาก Maven Build คุณสามารถสร้างพวกเขาในบรรทัดคำสั่ง ./mvnw generate-resources หรือคลิกขวาในโครงการ spring-petclinic จากนั้น Maven -> Generates sources and Update Folders
การกำหนดค่าการเรียกใช้ชื่อ PetClinicApplication ควรถูกสร้างขึ้นสำหรับคุณหากคุณใช้เวอร์ชัน Ultimate ล่าสุด มิฉะนั้นให้เรียกใช้แอปพลิเคชันโดยคลิกขวาที่คลาส Main PetClinicApplication และเลือก Run 'PetClinicApplication'
นำทางไปยัง petclinic
เยี่ยมชม http: // localhost: 8080 ในเบราว์เซอร์ของคุณ
| การกำหนดค่าสปริงบูต | ไฟล์คลาสหรือ Java คุณสมบัติ |
|---|---|
| คลาสหลัก | Petclinicapplication |
| ไฟล์คุณสมบัติ | Application.properties |
| การแคช | cacheconfiguration |
สาขา Spring Petclinic "Main" ในโครงการฤดูใบไม้ผลิ GitHub org คือการใช้งาน "Canonical" โดยใช้สปริงบูตและ thymeleaf มีส้อมไม่กี่แห่งใน GitHub org Spring-Petclinic หากคุณสนใจที่จะใช้สแต็กเทคโนโลยีที่แตกต่างกันเพื่อใช้งานคลินิกสัตว์เลี้ยงโปรดเข้าร่วมชุมชนที่นั่น
หนึ่งในส่วนที่ดีที่สุดเกี่ยวกับการทำงานกับแอปพลิเคชัน Spring Petclinic คือเรามีโอกาสทำงานติดต่อโดยตรงกับโครงการโอเพ่นซอร์สหลายโครงการ เราพบข้อบกพร่อง/การปรับปรุงที่แนะนำในหัวข้อต่าง ๆ เช่นฤดูใบไม้ผลิข้อมูลฤดูใบไม้ผลิการตรวจสอบถั่วและแม้แต่คราส! ในหลายกรณีพวกเขาได้รับการแก้ไข/นำไปใช้ในเวลาเพียงไม่กี่วัน นี่คือรายการของพวกเขา:
| ชื่อ | ปัญหา |
|---|---|
| Spring JDBC: ลดความซับซ้อนของการใช้งานของ parameterjdbctemplate | SPR-10256 และ SPR-10257 |
| การตรวจสอบความถูกต้องของถั่ว / hibernate ตรวจสอบ: ทำให้การพึ่งพา maven ง่ายขึ้นและความเข้ากันได้ย้อนหลัง | HV-790 และ HV-792 |
| ข้อมูลฤดูใบไม้ผลิ: ให้ความยืดหยุ่นมากขึ้นเมื่อทำงานกับคิวรี JPQL | datajpa-292 |
ตัวติดตามปัญหาเป็นช่องทางที่ต้องการสำหรับรายงานข้อผิดพลาดคำขอคุณสมบัติและการส่งคำขอดึง
สำหรับคำขอดึงการตั้งค่าตัวแก้ไขมีอยู่ในตัวแก้ไขการกำหนดค่าเพื่อใช้งานง่ายในตัวแก้ไขข้อความทั่วไป อ่านเพิ่มเติมและดาวน์โหลดปลั๊กอินได้ที่ https://editorconfig.org หากคุณยังไม่เคยทำมาก่อนโปรดกรอกและส่งข้อตกลงใบอนุญาตผู้สนับสนุน
แอปพลิเคชันตัวอย่าง Spring Petclinic ถูกปล่อยออกมาภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0