Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
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 distributiongpt-4ooch temperatur0.7i 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
@Descriptiontill 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:
-
QuestionAnswerAdvisoranropar AI-modellerna för att generera en ny användarfråga som innehåller resultaten från sökvektorn innan du slutför prompten. -
PromptChatMemoryAdvisorlä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.