Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sampel Spring PetClinic adalah aplikasi referensi klasik yang menunjukkan penggunaan Spring Boot dengan Java. Tutorial ini menampilkan versi yang disempurnakan AI yang dibangun di Azure Container Apps yang memperluas sistem manajemen PetClinic tradisional dengan kemampuan AI modern.
Aplikasi yang Anda buat dalam tutorial ini adalah asisten obrolan AI yang menggunakan Retrieval Augmented Generation (RAG). Untuk menyambungkan ke Azure OpenAI Service, aplikasi menggunakan Spring AI SDK untuk mendukung aplikasi web. Untuk informasi selengkapnya tentang RAG, lihat Menerapkan Retrieval Augmented Generation (RAG) dengan Azure OpenAI Service.
Aplikasi ini menampilkan berbagai layanan yang bekerja sama untuk memperkenalkan fitur terkait AI ke sampel Spring PetClinic.
Arsitektur aplikasi AI di Azure Container Apps
Diagram berikut menunjukkan arsitektur aplikasi AI di Azure Container Apps:
Gateway API aplikasi, yang dihosting di lingkungan Azure Container Apps, berfungsi sebagai titik masuk pusat untuk semua permintaan eksternal.
Gateway ini melakukan fungsi berikut:
- Merutekan dan mengelola komunikasi antar komponen aplikasi.
- Mengautentikasi pengguna melalui ID Microsoft Entra.
- Mengamankan akses ke Azure Container Registry dan layanan kognitif menggunakan identitas terkelola.
- Menangani semua permintaan pengguna eksternal yang masuk.
Gateway beroperasi dalam jaringan virtual khusus, memastikan komunikasi yang aman dan terisolasi antara aplikasi dan sistem eksternal.
Tabel berikut menjelaskan komponen dan layanan utama yang ditampilkan dalam aplikasi:
| Layanan atau fitur | Deskripsi |
|---|---|
| Azure Container Apps | Platform kontainer tanpa server yang dikelola sepenuhnya untuk membangun dan menyebarkan aplikasi modern. Menangani penskalaan otomatis, pemisahan lalu lintas, dan manajemen revisi aplikasi kontainer. |
| Lingkungan Azure Container Apps | Batas aman di sekitar sekelompok aplikasi kontainer yang berbagi konfigurasi jaringan, penskalaan, dan manajemen. Menyediakan runtime dasar untuk penyebaran aplikasi kontainer. |
| Layanan Azure OpenAI | Menyediakan akses REST API ke ChatGPT OpenAI, fitur embedding, dan model bahasa yang canggih seperti GPT-4. Memungkinkan kemampuan AI dengan fitur keamanan dan kepatuhan tingkat perusahaan. |
| Azure Container Registry | Layanan registri Docker privat untuk menyimpan dan mengelola gambar kontainer. Mendukung build kontainer otomatis, pemindaian kerentanan, dan replikasi geografis. |
| Managed Identity | Menyediakan layanan Azure dengan identitas yang dikelola secara otomatis di Azure AD. Menghilangkan kebutuhan akan manajemen kredensial dengan mengizinkan autentikasi layanan-ke-layanan yang aman tanpa menyimpan kredensial dalam kode. |
| AI Musim Semi | Kerangka kerja spring untuk rekayasa AI yang menerapkan prinsip desain AI ke ekosistem Spring. Atau, Langchain4j adalah kerangka kerja AI lain dengan sampel PetClinic sendiri di spring-petclinic-langchain4j. Untuk informasi selengkapnya, lihat Chat Client API. |
Untuk informasi selengkapnya tentang elemen infrastruktur sebagai kode dari aplikasi, lihat bicep scripts di repositori Bring your first AI app in Azure Container Apps.
Implementasi kode
Bagian berikut memberikan pengenalan kode untuk membantu Anda memahami alur aplikasi AI pertama ini.
Melakukan panggilan REST
Pengontrol ChatClient bertanggung jawab untuk berkomunikasi dengan antarmuka klien chat. Sintaks untuk mengirimkan perintah di PetclinicChatClient.java menyertakan objek chatClient untuk mengirimkan input pengguna.
return this.chatClient.prompt().user(u -> u.text(query)).call().content();
Kustomisasi obrolan
Kelas ChatConfiguration menyesuaikan permintaan yang dikirim ke chatClient. Daftar berikut menjelaskan beberapa pengaturan konfigurasi utama dari chatClient:
- Autentikasi koneksi: Klien tersambung ke Azure OpenAI. Autentikasi kunci API dan autentikasi identitas terkelola didukung.
- Lokasi pengaturan konfigurasi: Untuk
ChatModel, penyebarangpt-4odan suhu0.7diatur dalam file konfigurasi. - Database vektor: Database vektor menyimpan representasi matematika dokumen sumber, yang dikenal sebagai penyematan. Data vektor digunakan oleh API obrolan untuk menemukan dokumen yang relevan dengan pertanyaan pengguna.
- Permintaan sistem: Sesuaikan perilaku AI dan tingkatkan performa.
- Titik akhir API: Aplikasi ini menampilkan titik akhir Azure Functions yang disesuaikan sehingga OpenAI dapat berinteraksi dengan aplikasi.
- Advisors: Advisor menyediakan cara yang fleksibel dan kuat untuk mencegat, memodifikasi, dan meningkatkan interaksi berbasis AI di aplikasi Spring Anda.
Contoh
Contoh kode berikut menunjukkan bagaimana ChatClientCustomizer kelas memuat informasi konfigurasi:
@Bean
public ChatClientCustomizer chatClientCustomizer(VectorStore vectorStore, ChatModel model) {
ChatMemory chatMemory = new InMemoryChatMemory();
return b -> b.defaultSystem(systemResource)
.defaultFunctions("listOwners", "listVets", "addPetToOwner", "addOwnerToPetclinic")
.defaultAdvisors(new PromptChatMemoryAdvisor(chatMemory),
new ModeledQuestionAnswerAdvisor(vectorStore, SearchRequest.defaults(), model));
}
Titik akhir API
Bean yang didefinisikan di bawah java.util.Function adalah komponen yang ditentukan dalam konteks aplikasi. Fungsi-fungsi ini adalah antarmuka antara model AI dan aplikasi PetClinic.
Ada fungsi sampel di AIFunctionConfiguration.java yang berkomunikasi dengan aplikasi PetClinic. Perlu diingat detail berikut tentang fungsi-fungsi ini:
- Anotasi
@Descriptionke fungsi membantu model AI memahami fungsi dalam bahasa alami. - Isi fungsi bervariasi, tergantung pada kebutuhan bisnis Anda.
Penasihat
Advisor adalah komponen yang memodifikasi atau meningkatkan perintah AI, yang bertindak sebagai middleware untuk pemrosesan yang cepat.
Aplikasi ini menggunakan dua penasihat berbeda:
-
QuestionAnswerAdvisormemanggil model AI untuk menghasilkan kueri pengguna baru yang menyertakan hasil dari vektor pencarian, sebelum menyelesaikan perintah. -
PromptChatMemoryAdvisormenambahkan memori obrolan ke dalam perintah dan menyediakan riwayat percakapan ke model obrolan. Dengan konteks ini, model AI dapat mengingat konteks obrolan dan meningkatkan kualitas obrolan.
Untuk informasi selengkapnya, lihat Advisors API.