Java PetClinic AI-minta a Container Appsben – áttekintés

A Spring PetClinic minta egy klasszikus referenciaalkalmazás, amely bemutatja a Spring Boot és a Java használatát. Ez az oktatóanyag az Azure Container Appsre épülő AI-továbbfejlesztett verzióval rendelkezik, amely a hagyományos PetClinic felügyeleti rendszert modern AI-képességekkel bővíti.

Az oktatóanyagban szereplő alkalmazás egy AI-csevegősegéd, amely a Retrieveal Augmented Generation (RAG) szolgáltatást használja. Az Azure OpenAI Szolgáltatáshoz való csatlakozáshoz az alkalmazás Spring AI SDK-kkal támogatja a webalkalmazást. További információért a RAG-ról lásd az Azure OpenAI szolgáltatással megvalósított retrieval augmented generation (RAG) implementálása című részben.

Az alkalmazás számos különböző szolgáltatást tartalmaz, amelyek együttműködve mutatják be az AI-hoz kapcsolódó funkciókat a Spring PetClinic-mintában.

Az AI-alkalmazás architektúrája az Azure Container Appsben

Az alábbi ábra az AI-alkalmazás architektúráját mutatja be az Azure Container Appsben:

Az AI-alkalmazás architektúrájának diagramja, amely magában foglalja a Container Apps-környezetet, az API-átjárót, a hitelesítés Entra-azonosítóját és egyéb összetevőket.

Az alkalmazás AZURE Container Apps-környezetben üzemeltetett API-átjárója az összes külső kérés központi belépési pontja.

Ez az átjáró a következő funkciókat hajtja végre:

  • Az alkalmazásösszetevők közötti kommunikáció irányítása és kezelése.
  • A felhasználók hitelesítése a Microsoft Entra-azonosítón keresztül.
  • Felügyelt identitásokkal biztosítja az Azure Container Registryhez és a kognitív szolgáltatásokhoz való hozzáférést.
  • Kezeli az összes bejövő külső felhasználói kérést.

Az átjáró egy dedikált virtuális hálózaton belül működik, biztosítva az alkalmazás és a külső rendszerek közötti biztonságos és elszigetelt kommunikációt.

Az alábbi táblázat az alkalmazásban kiemelt főbb összetevőket és szolgáltatásokat ismerteti:

Szolgáltatás vagy funkció Leírás
Azure Konténer Alkalmazások Teljes mértékben felügyelt, kiszolgáló nélküli tárolóplatform modern alkalmazások létrehozásához és üzembe helyezéséhez. Kezeli a tárolóalapú alkalmazások automatikus skálázását, a forgalom felosztását és a változatkezelést.
Azure Container Apps-környezet Biztonságos határ a hálózatkezelési, skálázási és felügyeleti konfigurációkat megosztó tárolóalkalmazások csoportja körül. A tárolóalkalmazások központi telepítésének alapvető futtatókörnyezetét biztosítja.
Azure OpenAI szolgáltatás REST API-hozzáférést biztosít az OpenAI ChatGPT-hez, beágyazásokhoz és olyan hatékony nyelvi modellekhez, mint a GPT-4. Nagyvállalati szintű biztonsági és megfelelőségi funkciókkal teszi lehetővé az AI-képességeket.
Azure Container Registry Privát Docker-beállításjegyzék-szolgáltatás tárolólemezképek tárolására és kezelésére. Támogatja az automatizált tárolók összeállítását, a biztonsági rések vizsgálatát és a georeplikálást.
Felügyelt identitások Azure-szolgáltatásokat biztosít automatikusan felügyelt identitásokkal az Azure AD-ben. Szükségtelenné teszi a hitelesítő adatok kezelését azáltal, hogy lehetővé teszi a biztonságos szolgáltatásközi hitelesítést anélkül, hogy hitelesítő adatokat tárol a kódban.
Tavaszi AI Spring-keretrendszer az AI-tervezéshez, amely az AI tervezési alapelveit alkalmazza a Spring-ökoszisztémára. Másik lehetőségként a Langchain4j egy másik AI-keretrendszer, amelynek saját PetClinic-mintája van a spring-petclinic-langchain4j-ben. További információ: Csevegőügyfél API.

Az alkalmazás infrastruktúra mint kód elemeivel kapcsolatos további információkért tekintse meg a Bring your first AI app in Azure Container Apps adattár bicep szkriptjeit.

Kód implementálása

Az alábbi szakaszok bemutatja a kódot, amely segít megérteni az első AI-alkalmazás folyamatát.

REST-hívások indítása

A ChatClient vezérlő felelős a csevegőügyfél végpontjával való kommunikációért. A kérések PetclinicChatClient.java való elküldésének szintaxisa tartalmazza a felhasználói bemenet elküldéséhez szükséges objektumot chatClient .

return this.chatClient.prompt().user(u -> u.text(query)).call().content();

Chat funkciók testreszabása

Az ChatConfiguration osztály testre szabja a címzettnek chatClientküldött kéréseket. Az alábbi lista a következő kulcskonfigurációs chatClientbeállításokat ismerteti:

  • Kapcsolatok hitelesítése: Az ügyfél csatlakozik az Azure OpenAI-hoz. Az API-kulcsok hitelesítése és a felügyelt identitáshitelesítés egyaránt támogatott.
  • Konfigurációs beállítások helye: A ChatModelkonfigurációs fájlban az üzembe helyezés gpt-4o és a hőmérséklet 0.7 van beállítva.
  • Vektoradatbázis: A vektoradatbázis a forrásdokumentumok matematikai reprezentációit, más néven beágyazásokat tárolja. A vektoradatokat a csevegő API használja a felhasználó kérdéséhez kapcsolódó dokumentumok megkeresésére.
  • Rendszerkérés: Az AI viselkedésének testreszabása és a teljesítmény növelése.
  • API-végpontok: Az alkalmazás testreszabott Azure Functions-végpontokat kínál, hogy az OpenAI képes legyen az alkalmazással való interakcióra.
  • Tanácsadók: Az Advisorok rugalmas és hatékony módot biztosítanak az AI-alapú interakciók elfogására, módosítására és továbbfejlesztésére a Spring-alkalmazásokban.

Példa

Az alábbi példakód bemutatja, hogyan tölti be az osztály a ChatClientCustomizer konfigurációs adatokat:

@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));
}

API-végpontok

A java.util.Function kategóriában megadott elemek (beanek) az alkalmazáskörnyezetben definiált függvények. Ezek a függvények az AI-modellek és a PetClinic-alkalmazás közötti interfészek.

A AIFunctionConfiguration.java mintafüggvények kommunikálnak a PetClinic alkalmazással. A következő részleteket tartsa szem előtt ezekkel a függvényekkel kapcsolatban:

  • A @Description függvények széljegyzetei segítenek az AI-modelleknek megérteni a függvényeket egy természetes nyelven.
  • A függvény törzse az üzleti követelményektől függően változik.

Tanácsadók

Az advisorok olyan összetevők, amelyek módosítják vagy továbbfejlesztik az AI-kéréseket, és közbenső szoftverként működnek a gyors feldolgozáshoz.

Ez az alkalmazás két különböző tanácsadót használ:

  • QuestionAnswerAdvisor meghívja az AI-modelleket, hogy hozzon létre egy új felhasználói lekérdezést, amely tartalmazza a keresési vektor eredményeit, mielőtt véglegesítené a kérést.
  • PromptChatMemoryAdvisor hozzáadja a csevegőmemóriát a parancssorhoz, és a csevegési modellhez biztosít egy beszélgetési előzményt. Ezzel a kontextussal az AI-modell megjegyzi a csevegés kontextusát, és javíthatja a csevegés minőségét.

További információ: Advisors API.

Következő lépések