Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Spring PetClinic-Beispiel ist eine klassische Referenzanwendung, die die Verwendung von Spring Boot mit Java veranschaulicht. Dieses Tutorial enthält eine mit KI erweiterte Version, die auf Azure Container Apps basiert, die das traditionelle PetClinic-Verwaltungssystem mit modernen KI-Funktionen erweitert.
Die Anwendung, die Sie in diesem Tutorial erstellen, ist ein KI-Chat-Assistent, der Retrieval Augmented Generation (RAG) verwendet. Um eine Verbindung mit Azure OpenAI Service herzustellen, verwendet die Anwendung Spring-KI-SDKs, um die Webanwendung zu unterstützen. Weitere Informationen zu RAG finden Sie unter Implementieren von Retrieval Augmented Generation (RAG) mit Azure OpenAI Service.
Die Anwendung verfügt über viele verschiedene Dienste, die zusammenarbeiten, um die KI-bezogenen Features in das Spring PetClinic-Beispiel einzuführen.
Architektur der KI-App in Azure Container Apps
Das folgende Diagramm zeigt die Architektur der KI-Anwendung in Azure Container Apps:
Das API-Gateway der Anwendung, das in der Azure Container Apps-Umgebung gehostet wird, dient als zentraler Einstiegspunkt für alle externen Anforderungen.
Dieses Gateway führt die folgenden Funktionen aus:
- Leitet die Kommunikation zwischen Anwendungskomponenten weiter und verwaltet sie.
- Authentifiziert Benutzende über Microsoft Entra ID.
- Sichert den Zugriff auf Azure Container Registry und Cognitive Services mithilfe von verwalteten Identitäten.
- Verarbeitet alle eingehenden Anforderungen von externen Benutzenden.
Das Gateway arbeitet innerhalb eines dedizierten virtuellen Netzwerks und stellt eine sichere und isolierte Kommunikation zwischen der Anwendung und externen Systemen sicher.
In der folgenden Tabelle werden die wichtigsten Komponenten und Dienste der Anwendung beschrieben:
| Dienst oder Feature | Beschreibung |
|---|---|
| Azure Container Apps | Eine vollständig verwaltete, serverlose Containerplattform zum Erstellen und Bereitstellen moderner Apps. Verarbeitet die automatische Skalierung, die Datenverkehrsaufteilung und die Revisionsverwaltung von containerisierten Anwendungen. |
| Azure Container Apps-Umgebung | Eine sichere Grenze um eine Gruppe von Container-Apps, die gleiche Netzwerk-, Skalierungs- und Verwaltungskonfigurationen aufweisen. Stellt die grundlegende Laufzeit für eine Container Apps-Bereitstellung bereit. |
| Azure OpenAI-Dienst | Bietet REST-API-Zugriff auf ChatGPT von OpenAI, Einbettungen und leistungsstarke Sprachmodelle wie GPT-4. Ermöglicht KI-Funktionen mit Sicherheits- und Compliancefeatures auf Unternehmensniveau. |
| Azure Container Registry | Ein privater Docker-Registrierungsdienst zum Speichern und Verwalten von Containerimages. Unterstützt automatisierte Containerbuilds, Überprüfung auf Sicherheitsrisiken und Georeplikation. |
| Verwaltete Identitäten | Stellt Azure-Dienste mit automatisch verwalteten Identitäten in Azure AD bereit. Beseitigt die Notwendigkeit der Verwaltung von Anmeldeinformationen, indem die sichere Dienst-zu-Dienst-Authentifizierung zugelassen wird, ohne Anmeldeinformationen im Code zu speichern. |
| Feder KI | Spring-Framework für KI-Entwicklung, das KI-Designprinzipien auf das Spring-Ökosystem anwendet. Alternativ ist Langchain4j ein weiteres KI-Framework mit eigenem PetClinic-Beispiel in spring-petclinic-langchain4j. Weitere Informationen finden Sie unter Chatclient-API. |
Weitere Informationen zu den Infrastructure-as-Code-Elementen der Anwendung finden Sie in den Bicep-Skripten im Repository Bringen Sie Ihre erste KI-App in Azure Container Apps.
Codeimplementierung
Die folgenden Abschnitte enthalten eine Einführung in den Code, damit Sie den Fluss dieser ersten KI-Anwendung verstehen.
Durchführen von REST-Aufrufen
Der Controller ChatClient ist für die Kommunikation mit dem Chatclient-Endpunkt verantwortlich. Die Syntax zum Übermitteln eines Prompts in PetclinicChatClient.java enthält das Objekt chatClient zum Übermitteln von Benutzereingaben.
return this.chatClient.prompt().user(u -> u.text(query)).call().content();
Chatanpassungen
Die Klasse ChatConfiguration passt Anforderungen an, die an chatClient gesendet werden. In der folgenden Liste werden einige wichtige Konfigurationseinstellungen von chatClient beschrieben:
- Verbindungsauthentifizierung: Der Client stellt eine Verbindung mit Azure OpenAI her. Sowohl die API-Schlüsselauthentifizierung als auch die Authentifizierung über verwaltete Identitäten werden unterstützt.
- Speicherort der Konfigurationseinstellungen: Für
ChatModelwerden die Bereitstellunggpt-4ound die Temperatur0.7in der Konfigurationsdatei festgelegt. - Vektordatenbank: In der Vektordatenbank werden mathematische Darstellungen von Quelldokumenten gespeichert, die als Einbettungen bezeichnet werden. Die Vektordaten werden von der Chat-API verwendet, um Dokumente zu finden, die für die Fragen von Benutzenden relevant sind.
- Systemprompt: Passen Sie das KI-Verhalten an, und verbessern Sie die Leistung.
- API-Endpunkte: Die Anwendung weist angepasste Azure Functions-Endpunkte auf, sodass OpenAI mit der Anwendung interagieren kann.
- Advisors: Advisors bieten eine flexible und leistungsstarke Möglichkeit, KI-gesteuerte Interaktionen in Ihren Spring-Anwendungen abzufangen, zu ändern und zu verbessern.
Beispiel
Das folgende Codebeispiel zeigt, wie die Klasse ChatClientCustomizer Konfigurationsinformationen lädt:
@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-Endpunkte
Die unter java.util.Function definierten Beans sind Funktionen, die im Anwendungskontext definiert sind. Diese Funktionen sind die Schnittstelle zwischen den KI-Modellen und der PetClinic-Anwendung.
Es gibt Beispielfunktionen in AIFunctionConfiguration.java, die mit der PetClinic-Anwendung kommunizieren. Beachten Sie die folgenden Details zu diesen Funktionen:
- Die
@Description-Anmerkungen für Funktionen helfen den KI-Modellen, die Funktionen in einer natürlichen Sprache zu verstehen. - Der Funktionsinhalt variiert je nach Ihren geschäftlichen Anforderungen.
Berater
Advisors sind Komponenten, die KI-Prompts ändern oder verbessern, die als Middleware für die Promptverarbeitung fungieren.
Diese Anwendung verwendet zwei verschiedene Advisors:
-
QuestionAnswerAdvisorruft die KI-Modelle auf, um eine neue Benutzerabfrage zu generieren, die die Ergebnisse des Suchvektors enthält, bevor der Prompt abgeschlossen wird. -
PromptChatMemoryAdvisorfügt dem Prompt Chatspeicher hinzu und stellt dem Chatmodell einen Unterhaltungsverlauf bereit. Mit diesem Kontext kann sich das KI-Modell an den Kontext des Chats erinnern und die Chatqualität verbessern.
Weitere Informationen finden Sie unter Advisors-API.