Dela via


Java PetClinic AI-exempel i Container Apps-översikt

Spring PetClinic-exemplet är ett klassiskt referensprogram som visar användningen av Spring Boot med Java. Den här handledningen presenterar en version förbättrad med AI byggd på Azure Container Apps, som utökar det traditionella PetClinic-hanteringssystemet med moderna AI-funktioner.

Programmet du skapar i den här självstudien är en AI-chattassistent som använder RAG (Retrieval Augmented Generation). För att ansluta till Azure OpenAI Service använder programmet Spring AI SDK:er för att stödja webbappen. Mer information om RAG finns i Implementera hämtningsförhöjd generation (RAG) med Azure OpenAI-tjänsten.

Programmet har många olika tjänster som arbetar tillsammans för att introducera AI-relaterade funktioner i Spring PetClinic-exemplet.

Arkitektur för AI-appen i Azure Container Apps

Följande diagram visar arkitekturen för AI-programmet i Azure Container Apps:

Diagram över AI-programmets arkitektur, som innehåller en Container Apps-miljö, en API-gateway, Etttra-ID för autentisering och andra komponenter.

Programmets API-gateway, som finns i Azure Container Apps-miljön, fungerar som den centrala startpunkten för alla externa begäranden.

Den här gatewayen utför följande funktioner:

  • Dirigerar och hanterar kommunikationen mellan programkomponenter.
  • Autentiserar användare via Microsoft Entra-ID.
  • Skyddar åtkomsten till Azure Container Registry och kognitiva tjänster med hanterade identiteter.
  • Hanterar alla inkommande externa användarbegäranden.

Gatewayen fungerar i ett dedikerat virtuellt nätverk, vilket säkerställer säker och isolerad kommunikation mellan programmet och externa system.

I följande tabell beskrivs de viktigaste komponenterna och tjänsterna i programmet:

Tjänst eller funktion beskrivning
Azure Container Apps En fullständigt hanterad, serverlös containerplattform för att skapa och distribuera moderna appar. Hanterar automatisk skalning, trafikdelning och revisionshantering av containerbaserade program.
Azure Container Apps-miljö En säker gräns runt en grupp med containerappar som delar nätverks-, skalnings- och hanteringskonfigurationer. Tillhandahåller den grundläggande körtiden för en containerappars distribution.
Azure OpenAI-tjänsten Ger REST API-åtkomst till OpenAI:s ChatGPT, inbäddningar och kraftfulla språkmodeller som GPT-4. Aktiverar AI-funktioner med säkerhets- och efterlevnadsfunktioner i företagsklass.
Azure Container Registry En privat Docker-registertjänst för lagring och hantering av containeravbildningar. Stöder automatiserade containerbyggen, sårbarhetsgenomsökning och geo-replikering.
Hanterade identiteter Tillhandahåller Azure-tjänster med automatiskt hanterade identiteter i Azure AD. Eliminerar behovet av hantering av autentiseringsuppgifter genom att tillåta säker tjänst-till-tjänst-autentisering utan att lagra autentiseringsuppgifter i kod.
Vårens AI Spring-ramverket för AI-teknik som tillämpar AI-designprinciper på Spring-ekosystemet. Alternativt är Langchain4j ett annat AI-ramverk med ett eget PetClinic-prov i spring-petclinic-langchain4j. Mer information finns i Api för chattklient.

Mer information om de infrastrukturella element som kod i applikationen finns i bicep-skripten i förvaret Kom igång med din första AI-app i Azure Container Apps.

Kodimplementering

Följande avsnitt innehåller en introduktion till koden som hjälper dig att förstå flödet i det första AI-programmet.

Göra REST-anrop

Kontrollanten ChatClient ansvarar för att kommunicera med chattklientslutpunkten. Syntaxen för att skicka en uppmaning i PetclinicChatClient.java innehåller objektet chatClient för att skicka indata från användaren.

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

Chattanpassningar

Klassen ChatConfiguration anpassar begäranden som skickas till chatClient. I följande lista beskrivs några viktiga konfigurationsinställningar för chatClient:

  • Anslutningsautentisering: Klienten ansluter till Azure OpenAI. Både API-nyckelautentisering och hanterad identitetsautentisering stöds.
  • Plats för konfigurationsinställningar: För ChatModelanges distribution gpt-4o och temperatur 0.7 i konfigurationsfilen.
  • Vektordatabas: Vektordatabasen lagrar matematiska representationer av källdokument, så kallade inbäddningar. Vektordata används av chatt-API:et för att hitta dokument som är relevanta för en användares fråga.
  • Systemprompt: Anpassa AI-beteende och förbättra prestanda.
  • API-slutpunkter: Applikationen har anpassade slutpunkter för Azure Functions så att OpenAI kan interagera med applikationen.
  • Rådgivare: Rådgivare ger ett flexibelt och kraftfullt sätt att fånga upp, ändra och förbättra AI-drivna interaktioner i dina Spring-program.

Exempel

Följande kodexempel visar hur ChatClientCustomizer klassen läser in konfigurationsinformation:

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

Bönorna som definieras under java.util.Function är funktioner som definieras i programkontexten. Dessa funktioner är gränssnittet mellan AI-modellerna och det petcliniska programmet.

Det finns exempelfunktioner i AIFunctionConfiguration.java som kommunicerar med PetClinic-programmet. Tänk på följande information om dessa funktioner:

  • Anteckningarna @Description till funktioner hjälper AI-modellerna att förstå funktionerna på ett naturligt språk.
  • Funktionskroppen varierar beroende på dina affärsbehov.

Rådgivare

Advisors är komponenter som ändrar eller förbättrar AI-frågor, som fungerar som mellanprogram för snabb bearbetning.

Det här programmet använder två olika rådgivare:

  • QuestionAnswerAdvisor anropar AI-modellerna för att generera en ny användarfråga som innehåller resultaten från sökvektorn innan du slutför prompten.
  • PromptChatMemoryAdvisor lägger till chattminne i prompten och tillhandahåller en konversationshistorik till chattmodellen. I det här sammanhanget kan AI-modellen komma ihåg kontexten för chatten och förbättra chattkvaliteten.

Mer information finns i Advisors API.

Nästa steg