Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przykład Spring PetClinic to klasyczna aplikacja referencyjna, która demonstruje użycie platformy Spring Boot z językiem Java. Ten samouczek zawiera ulepszoną wersję sztucznej inteligencji utworzoną w usłudze Azure Container Apps, która rozszerza tradycyjny system zarządzania PetClinic przy użyciu nowoczesnych funkcji sztucznej inteligencji.
Aplikacja, którą stworzysz w tym samouczku, to asystent czatu AI, który wykorzystuje RAG (Generacja wspomagana wyszukiwaniem). Aby nawiązać połączenie z usługą Azure OpenAI Service, aplikacja używa zestawów SDK spring AI do obsługi aplikacji internetowej. pl-PL: Aby uzyskać więcej informacji na temat RAG, zobacz Implement Retrieval Augmented Generation (RAG) with Azure OpenAI Service.
Aplikacja oferuje wiele różnych usług, które współpracują ze sobą, aby wprowadzić funkcje związane ze sztuczną inteligencją do przykładu Spring PetClinic.
Architektura aplikacji sztucznej inteligencji w usłudze Azure Container Apps
Na poniższym diagramie przedstawiono architekturę aplikacji sztucznej inteligencji w usłudze Azure Container Apps:
Brama interfejsu API aplikacji hostowana w środowisku usługi Azure Container Apps służy jako centralny punkt wejścia dla wszystkich żądań zewnętrznych.
Ta brama wykonuje następujące funkcje:
- Kieruje komunikacją między składnikami aplikacji i zarządza nią.
- Uwierzytelnia użytkowników za pomocą identyfikatora Entra firmy Microsoft.
- Zabezpiecza dostęp do usługi Azure Container Registry i usług Cognitive Services przy użyciu tożsamości zarządzanych.
- Obsługuje wszystkie przychodzące żądania użytkowników zewnętrznych.
Brama działa w dedykowanej sieci wirtualnej, zapewniając bezpieczną i izolowana komunikację między aplikacją a systemami zewnętrznymi.
W poniższej tabeli opisano kluczowe składniki i usługi występujące w aplikacji:
| Usługa lub funkcja | opis |
|---|---|
| Azure Container Apps | W pełni zarządzana, bezserwerowa platforma kontenerów do tworzenia i wdrażania nowoczesnych aplikacji. Obsługuje skalowanie automatyczne, dzielenie ruchu i zarządzanie poprawkami aplikacji konteneryzowanych. |
| Środowisko usługi Azure Container Apps | Bezpieczna granica wokół grupy aplikacji kontenerowych, które dzielą się konfiguracjami sieciowymi, skalowaniem i zarządzaniem. Udostępnia podstawowe środowisko uruchomieniowe wdrożenia aplikacji kontenera. |
| Azure OpenAI Service | Zapewnia dostęp do interfejsu API REST do interfejsu Api OpenAI ChatGPT, osadzania i zaawansowanych modeli językowych, takich jak GPT-4. Umożliwia korzystanie ze sztucznej inteligencji z funkcjami zabezpieczeń i zgodności na poziomie korporacyjnym. |
| Azure Container Registry | Prywatna usługa rejestru platformy Docker do przechowywania obrazów kontenerów i zarządzania nimi. Obsługuje automatyczne kompilacje kontenerów, skanowanie luk w zabezpieczeniach i replikację geograficzną. |
| Tożsamości zarządzane | Udostępnia usługi platformy Azure z automatycznie zarządzanymi tożsamościami w usłudze Azure AD. Eliminuje potrzebę zarządzania poświadczeniami, umożliwiając bezpieczne uwierzytelnianie typu usługa-usługa bez przechowywania poświadczeń w kodzie. |
| Wiosenna sztuczna inteligencja | Platforma Spring dla inżynierii sztucznej inteligencji, która stosuje zasady projektowania sztucznej inteligencji do ekosystemu Spring. Alternatywnie, Langchain4j jest inną strukturą sztucznej inteligencji z własną próbką PetClinic w spring-petclinic-langchain4j. Aby uzyskać więcej informacji, zobacz Interfejs API klienta czatu. |
Aby uzyskać więcej informacji na temat elementów infrastruktury jako kodu aplikacji, zobacz skrypty bicep w repozytorium Bring your first AI app in Azure Container Apps.
Implementacja kodu
W poniższych sekcjach przedstawiono wprowadzenie do kodu ułatwiające zrozumienie przepływu tej pierwszej aplikacji sztucznej inteligencji.
Wykonywanie wywołań REST
Kontroler ChatClient jest odpowiedzialny za komunikację z punktem końcowym klienta czatu. Składnia przesyłania monitu w PetclinicChatClient.java zawiera obiekt chatClient do przesyłania danych wejściowych użytkownika.
return this.chatClient.prompt().user(u -> u.text(query)).call().content();
Dostosowania czatu
Klasa ChatConfiguration dostosowuje żądania wysyłane do chatClient elementu. Poniższa lista zawiera opis niektórych kluczowych ustawień konfiguracji programu chatClient:
- Uwierzytelnianie połączeń: klient łączy się z usługą Azure OpenAI. Obsługiwane są zarówno uwierzytelnianie klucza interfejsu API, jak i uwierzytelnianie tożsamości zarządzanej.
- Lokalizacja ustawień konfiguracji: w
ChatModelpliku konfiguracji ustawiono lokalizację wdrożeniagpt-4oi temperatury0.7. - Baza danych wektorów: baza danych wektorów przechowuje matematyczne reprezentacje dokumentów źródłowych, znanych jako osadzanie. Dane wektorowe są używane przez interfejs API czatu do znajdowania dokumentów istotnych dla pytania użytkownika.
- Monit systemowy: dostosowywanie zachowania sztucznej inteligencji i zwiększanie wydajności.
- Punkty końcowe interfejsu API: Aplikacja zawiera dostosowane punkty końcowe usługi Azure Functions, które umożliwiają OpenAI interakcję z aplikacją.
- Doradcy: Doradcy zapewniają elastyczny i zaawansowany sposób przechwytywania, modyfikowania i ulepszania interakcji opartych na sztucznej inteligencji w aplikacjach Spring.
Przykład
W poniższym przykładzie kodu pokazano, jak ChatClientCustomizer klasa ładuje informacje o konfiguracji:
@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));
}
Punkty końcowe interfejsu API
Beany zdefiniowane w obszarze java.util.Function to funkcje zdefiniowane w kontekście aplikacji. Te funkcje są interfejsem między modelami sztucznej inteligencji a aplikacją PetClinic.
W AIFunctionConfiguration.java istnieją przykładowe funkcje komunikujące się z aplikacją PetClinic. Pamiętaj o następujących szczegółach dotyczących tych funkcji:
-
@DescriptionAdnotacje do funkcji pomagają modelom sztucznej inteligencji zrozumieć funkcje w języku naturalnym. - Treść funkcji różni się w zależności od wymagań biznesowych.
Doradcy
Doradcy to składniki, które modyfikują lub ulepszają monity dotyczące sztucznej inteligencji i działają jako warstwa pośrednia w przetwarzaniu monitów.
Ta aplikacja używa dwóch różnych doradców:
-
QuestionAnswerAdvisorWywołuje modele sztucznej inteligencji, aby wygenerować nowe zapytanie użytkownika, które zawiera wyniki z wektora wyszukiwania, przed sfinalizowaniem monitu. -
PromptChatMemoryAdvisordodaje pamięć czatu do monitu i udostępnia historię konwersacji dla modelu czatu. W tym kontekście model sztucznej inteligencji może zapamiętać kontekst czatu i poprawić jakość czatu.
Aby uzyskać więcej informacji, zobacz Interfejs API usługi Advisors.