Delen via


Overzicht van Java PetClinic AI in Container Apps

Het Spring PetClinic-voorbeeld is een klassieke referentietoepassing die het gebruik van Spring Boot met Java demonstreert. Deze zelfstudie bevat een door AI verbeterde versie die is gebouwd op Azure Container Apps waarmee het traditionele PetClinic-beheersysteem wordt uitgebreid met moderne AI-mogelijkheden.

De toepassing die u in deze zelfstudie bouwt, is een AI-chatassistent die gebruikmaakt van Rag (Retrieval Augmented Generation). Om verbinding te maken met de Azure OpenAI-service, gebruikt de toepassing Spring AI SDK's ter ondersteuning van de webtoepassing. Zie RAG (Retrieval Augmented Generation) implementeren met De Azure OpenAI-service voor meer informatie over RAG.

De toepassing bevat veel verschillende services die samenwerken om de AI-gerelateerde functies te introduceren in het Spring PetClinic-voorbeeld.

Architectuur van de AI-app in Azure Container Apps

In het volgende diagram ziet u de architectuur van de AI-toepassing in Azure Container Apps:

Diagram van de architectuur van de AI-toepassing, waaronder een Container Apps-omgeving, een API-gateway, Entra-id voor verificatie en andere onderdelen.

De API-gateway van de toepassing, die wordt gehost in de Azure Container Apps-omgeving, fungeert als het centrale toegangspunt voor alle externe aanvragen.

Deze gateway voert de volgende functies uit:

  • Hiermee wordt de communicatie tussen toepassingsonderdelen gerouteerd en beheerd.
  • Verifieert gebruikers via Microsoft Entra-id.
  • Beveiligt de toegang tot Azure Container Registry en cognitieve services met behulp van beheerde identiteiten.
  • Verwerkt alle binnenkomende aanvragen van externe gebruikers.

De gateway werkt binnen een toegewezen virtueel netwerk en zorgt voor beveiligde en geïsoleerde communicatie tussen de toepassing en externe systemen.

In de volgende tabel worden de belangrijkste componenten en diensten beschreven die in de toepassing voorkomen.

Service of functie Beschrijving
Azure Container Apps Een volledig beheerd, serverloos containerplatform voor het bouwen en implementeren van moderne apps. Beheert autoscaling, het splitsen van verkeer, en revisiebeheer van gecontaineriseerde toepassingen.
Azure Container Apps-omgeving Een veilige grens rond een groep container-apps die netwerk-, schaal- en beheerconfiguraties delen. Biedt de basisruntime voor een implementatie van container-apps.
Azure OpenAI-service Biedt REST API-toegang tot ChatGPT van OpenAI, insluitingen en krachtige taalmodellen zoals GPT-4. Maakt AI-mogelijkheden mogelijk met beveiligings- en nalevingsfuncties op bedrijfsniveau.
Azure Container Registry Een persoonlijke Docker-registerservice voor het opslaan en beheren van containerinstallatiekopieën. Ondersteunt geautomatiseerde container-builds, scannen van beveiligingsproblemen en geo-replicatie.
Beheerde identiteiten Biedt Azure-services met automatisch beheerde identiteiten in Azure AD. Elimineert de noodzaak voor referentiebeheer door veilige service-naar-service-verificatie toe te staan zonder referenties in code op te slaan.
Lente AI Spring-framework voor AI-engineering die AI-ontwerpprincipes toepast op het Spring-ecosysteem. Langchain4j is ook een ander AI-framework met een eigen PetClinic-voorbeeld in spring-petclinic-langchain4j. Zie chatclient-API voor meer informatie.

Zie voor meer informatie over de 'infrastructure as code'-elementen van de toepassing de bicep-scripts in de repository 'Je eerste AI-app in Azure Container Apps'.

Code-implementatie

De volgende secties bevatten een inleiding tot de code om inzicht te krijgen in de stroom van deze eerste AI-toepassing.

REST-oproepen plaatsen

De ChatClient controller is verantwoordelijk voor de communicatie met het chatclienteindpunt. De syntaxis voor het indienen van een prompt in PetclinicChatClient.java bevat het object chatClient voor het verzenden van gebruikersinvoer.

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

Chataanpassingen

De ChatConfiguration klasse past aanvragen aan die worden verzonden naar chatClient. In de volgende lijst worden enkele belangrijkste configuratie-instellingen van chatClient beschreven:

  • Verificatie van verbindingen: de client maakt verbinding met Azure OpenAI. Zowel API-sleutelverificatie als beheerde identiteitsverificatie worden ondersteund.
  • Locatie van configuratie-instellingen: voor ChatModelimplementatie gpt-4o en temperatuur 0.7 worden deze ingesteld in het configuratiebestand.
  • Vectordatabase: De vectordatabase slaat wiskundige representaties op van brondocumenten, ook wel insluitingen genoemd. De vectorgegevens worden door de chat-API gebruikt om documenten te vinden die relevant zijn voor de vraag van een gebruiker.
  • Systeemprompt: AI-gedrag aanpassen en prestaties verbeteren.
  • API-eindpunten: De applicatie bevat aangepaste Azure Functions-eindpunten, zodat OpenAI kan communiceren met de applicatie.
  • Adviseurs: Adviseurs bieden een flexibele en krachtige manier om AI-gestuurde interacties in uw Spring-toepassingen te onderscheppen, te wijzigen en te verbeteren.

Voorbeeld

In het volgende codevoorbeeld ziet u hoe de ChatClientCustomizer klasse configuratiegegevens laadt:

@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-eindpunten

De beans die zijn gedefinieerd onder java.util.Function zijn functies die in de toepassingscontext zijn gedefinieerd. Deze functies zijn de interface tussen de AI-modellen en de PetClinic-toepassing.

Er zijn voorbeeldfuncties in AIFunctionConfiguration.java die communiceren met de PetClinic-toepassing. Houd rekening met de volgende details over deze functies:

  • De @Description aantekeningen voor functies helpen de AI-modellen de functies in een natuurlijke taal te begrijpen.
  • De hoofdtekst van de functie varieert, afhankelijk van uw bedrijfsvereisten.

Adviseurs

Adviseurs zijn onderdelen die AI-prompts wijzigen of verbeteren, die fungeren als middleware voor promptverwerking.

In deze toepassing worden twee verschillende adviseurs gebruikt:

  • QuestionAnswerAdvisor roept de AI-modellen aan om een nieuwe gebruikersquery te genereren die de resultaten van de zoekvector bevat voordat de prompt wordt voltooid.
  • PromptChatMemoryAdvisor voegt chatgeheugen toe aan de prompt en biedt een gespreksgeschiedenis aan het chatmodel. Met deze context kan het AI-model de context van de chat onthouden en de chatkwaliteit verbeteren.

Zie De Adviseurs-API voor meer informatie.

Volgende stappen