Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L'exemple Spring PetClinic est une application de référence classique qui démontre l'utilisation de Spring Boot avec Java. Ce didacticiel présente une version améliorée par l’IA basée sur Azure Container Apps qui étend le système de gestion PetClinic traditionnel avec des fonctionnalités d’IA modernes.
L'application que vous créez dans ce didacticiel est un assistant de conversation IA qui utilise la génération augmentée de récupération (RAG). Pour se connecter à Azure OpenAI Service, l’application utilise les SDK Spring AI pour prendre en charge l’application Web. Pour plus d’informations sur RAG, consultez Implémenter la génération augmentée de récupération (RAG) avec Azure OpenAI Service.
L'application propose de nombreux services différents fonctionnant ensemble pour introduire les fonctionnalités liées à l'IA dans l'exemple Spring PetClinic.
Architecture de l'application IA dans Azure Container Apps
Le diagramme suivant montre l’architecture de l’application d’IA dans Azure Container Apps :
La passerelle API de l’application, hébergée dans l’environnement Azure Container Apps, sert de point d’entrée central pour toutes les demandes externes.
Cette passerelle remplit les fonctions suivantes :
- Achemine et gère la communication entre les composants de l'application.
- Authentifie les utilisateurs via Microsoft Entra ID.
- Sécurise l’accès à Azure Container Registry et aux services cognitifs à l’aide d’identités gérées.
- Gère toutes les demandes entrantes des utilisateurs externes.
La passerelle fonctionne au sein d'un réseau virtuel dédié, garantissant une communication sécurisée et isolée entre l'application et les systèmes externes.
Le tableau suivant décrit les principaux composants et services proposés dans l'application :
| Service ou fonctionnalité | Descriptif |
|---|---|
| Azure Container Apps | Une plateforme de conteneurs entièrement gérée et serverless pour la création et le déploiement d'applications modernes. Gère la mise à l'échelle automatique, la répartition du trafic et la gestion des révisions des applications conteneurisées. |
| Environnement Azure Container Apps | Une limite sécurisée autour d'un groupe d'applications conteneurs qui partagent des configurations de mise en réseau, de mise à l'échelle et de gestion. Fournit l'environnement d'exécution fondamental pour le déploiement d'applications de conteneur. |
| Azure OpenAI Service | Fournit un accès API REST à ChatGPT d'OpenAI, aux intégrations et aux modèles de langage puissants comme GPT-4. Permet des capacités d'IA avec des fonctionnalités de sécurité et de conformité de niveau entreprise. |
| Azure Container Registry | Un service de registre Docker privé pour stocker et gérer les images de conteneurs. Prend en charge les créations de conteneurs automatisées, l'analyse des vulnérabilités et la géo-réplication. |
| Identités managées | Fournit des services Azure avec des identités gérées automatiquement dans Azure AD. Élimine le besoin de gestion des informations d’identification en permettant une authentification sécurisée de service à service sans stocker les informations d’identification dans le code. |
| IA printanière | Framework Spring pour l'ingénierie de l'IA qui applique les principes de conception de l'IA à l'écosystème Spring. Sinon, Langchain4j est une autre infrastructure IA avec son propre échantillon PetClinic dans spring-petclinic-langchain4j. Pour plus d'informations, consultez API du client de conversation. |
Pour plus d’informations sur les éléments d’infrastructure en tant que code de l’application, consultez les scripts bicep dans le référentiel Apportez votre première application IA dans Azure Container Apps.
Implémentation du code
Les sections suivantes fournissent une introduction au code pour vous aider à comprendre le flux de cette première application d’IA.
Effectuer des appels REST
Le contrôleur ChatClient est responsable de la communication avec le point de terminaison du client de conversation. La syntaxe de soumission d'une invite dans PetclinicChatClient.java inclut l'objet chatClient permettant de soumettre la saisie utilisateur.
return this.chatClient.prompt().user(u -> u.text(query)).call().content();
Personnalisations de conversation
La classe ChatConfiguration personnalise les requêtes envoyées à chatClient. La liste suivante décrit certains paramètres de configuration clés de chatClient :
- Authentification des connexions : le client se connecte à Azure OpenAI. L’authentification par clé API et l’authentification par identité gérée sont toutes deux prises en charge.
- Emplacement des paramètres de configuration : Pour
ChatModel, le déploiementgpt-4oet la température0.7sont définis dans le fichier de configuration. - Base de données vectorielles : La base de données vectorielles stocke des représentations mathématiques de documents sources, appelées intégrations. Les données vectorielles sont utilisées par l'API de conversation pour trouver des documents pertinents à la question d'un utilisateur.
- Invite de commande système : personnalisez le comportement de l’IA et améliorez les performances.
- Points de terminaison d’API : l’application dispose de points de terminaison Azure Functions personnalisés afin qu’OpenAI puisse interagir avec l’application.
- Conseillers : les conseillers offrent un moyen flexible et puissant d'intercepter, de modifier et d'améliorer les interactions pilotées par l'IA dans vos applications Spring.
Exemple
L'exemple de code suivant montre comment la classe ChatClientCustomizer charge les informations de configuration :
@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));
}
Points de terminaison d’API
Les beans définis sous java.util.Function sont des fonctions définies dans le contexte de l'application. Ces fonctions constituent l'interface entre les modèles d'IA et l'application PetClinic.
Il existe des exemples de fonctions dans AIFunctionConfiguration.java qui communiquent avec l'application PetClinic. Gardez à l’esprit les détails suivants concernant ces fonctions :
- Les annotations
@Descriptionaux fonctions aident les modèles d’IA à comprendre les fonctions dans un langage naturel. - Le corps de la fonction varie en fonction des besoins de votre entreprise.
Conseillers
Les conseillers sont des composants qui modifient ou améliorent les instructions de l'IA, faisant office de middleware pour le traitement des instructions.
Cette application utilise deux conseillers différents :
-
QuestionAnswerAdvisorappelle les modèles d'IA pour générer une nouvelle requête utilisateur qui inclut les résultats du vecteur de recherche, avant de finaliser l'invite. -
PromptChatMemoryAdvisorajoute une mémoire de conversation dans l'invite et fournit un historique de conversation au modèle de conversation. Avec ce contexte, le modèle d’IA peut mémoriser le contexte de la conversation et améliorer la qualité de la conversation.
Pour plus d'informations, consultez l'API Advisors.