Partager via


Utiliser l’application web Azure OpenAI

Avec Azure AI Studio, Azure OpenAI Studio, les API et les SDK, vous pouvez utiliser l’application web autonome personnalisable pour interagir avec les modèles Azure OpenAI Service à l’aide d’une interface utilisateur graphique. Les principales fonctionnalités incluent :

  • Connectivité avec plusieurs sources de données pour prendre en charge une génération enrichie d’interrogation et de récupération augmentée, notamment Recherche Azure AI, Prompt Flow, etc.
  • Historique des conversations et collecte des commentaires des utilisateurs via Cosmos DB.
  • Authentification avec contrôle d’accès en fonction du rôle via Microsoft Entra ID.
  • Personnalisation de l’interface utilisateur, des sources de données et des fonctionnalités à l’aide de variables d’environnement (sans code via le portail Azure).
  • Prise en charge de la modification du code source de l’application web sous-jacente en tant que référentiel open source.

Vous pouvez déployer l’application avec Azure AI Studio ou d’Azure OpenAI Studio, ou par le biais d’un déploiement manuel via le portail Azure ou Azure Developer CLI via votre ordinateur local (voici les instructions disponibles dans le référentiel). Selon votre canal de déploiement, vous pouvez précharger une source de données pour discuter via l’application web, mais cela peut être modifié après le déploiement.

Pour les débutants Azure OpenAI qui aspirent à discuter avec leurs données via l’application web, Azure AI Studio est le moyen recommandé pour le déploiement initial et la configuration de la source de données.

Capture d’écran montrant l’interface de l’application web.

Considérations importantes

  • Cette application web et la plupart de ses fonctionnalités sont en préversion, ce qui signifie que les bogues peuvent se produire et que toutes les fonctionnalités peuvent ne pas être terminées. Si vous trouvez un bogue ou si vous avez besoin d’aide, déclenchez un problème dans le dépôt GitHub associé.
  • La publication d’une application web crée une instance d’Azure App Service dans votre abonnement. Cela peut entraîner des coûts en fonction du plan de tarification que vous sélectionnez. Lorsque vous avez terminé avec votre application, vous pouvez la supprimer et toutes les ressources associées à partir du portail Azure.
  • Les modèles GPT-4 Turbo avec Vision ne sont pas actuellement pris en charge.
  • Par défaut, l’application est déployée avec le fournisseur d’identité Microsoft déjà configuré. Le fournisseur d’identité limite l’accès à l’application aux membres de votre locataire Azure. Pour ajouter ou modifier l’authentification :
    1. Accédez au Portail Azure et recherchez le nom de l’application que vous avez spécifié lors de la publication. Sélectionnez l’application web, puis sélectionnez Authentification dans le menu de gauche. Sélectionnez Ajouter un fournisseur d'identité.

      Capture d’écran du volet d’authentification sur le Portail Azure.

    2. Sélectionnez Microsoft en tant que fournisseur d'identité. Les paramètres par défaut de cette page limitent l’application à votre locataire. Vous n’avez donc pas besoin de modifier autre chose ici. Sélectionnez Ajouter.

Les utilisateurs sont maintenant invités à se connecter avec leur compte Microsoft Entra pour accéder à votre application. Vous pouvez suivre un processus similaire pour ajouter un autre fournisseur d’identité si vous préférez. L’application n’utilise les informations de connexion de l’utilisateur d’aucune autre manière que pour vérifier que l’utilisateur est membre de votre locataire. Pour plus d’informations sur la gestion de l’authentification, consultez ce guide de démarrage rapide sur l’authentification pour les applications web sur Azure App Service.

Personnalisation de l’application à l’aide de variables d’environnement

Vous pouvez personnaliser la logique front-end et back-end de l’application. L’application fournit plusieurs variables d’environnement pour des scénarios de personnalisation courants tels que la modification de l’icône dans l’application.

Ces variables d’environnement peuvent être modifiées via le portail Azure après le déploiement de l’application web.

  1. Dans le portail Azure, recherchez et sélectionnez la page App Services.
  2. Sélectionnez l’application web que vous venez de déployer.
  3. Dans le menu de gauche de l’application, sélectionnez Paramètres > variables d’environnement.
  4. Pour modifier une variable d’environnement existante, cliquez sur son nom.
  5. Pour ajouter une seule nouvelle variable d’environnement, cliquez sur Ajouter dans la barre de menus supérieure du panneau.
  6. Pour utiliser l’éditeur JSON pour gérer les variables d’environnement, cliquez sur Modification avancée.

Lorsque vous personnalisez l’application, nous vous recommandons de :

  • Communiquer clairement comment chaque paramètre que vous implémentez affecte l'expérience utilisateur.

  • Mettre à jour les paramètres de l’application pour chacune de vos applications déployées afin d’utiliser de nouvelles clés API après la rotation des clés pour votre ressource Azure OpenAI ou Recherche Azure AI.

L’exemple de code source de l’application web est disponible sur GitHub. Le code source est fourni « tel quel » et en tant qu’exemple uniquement. Les clients sont responsables de toutes les personnalisations et implémentations de leurs applications web.

Modification de l’interface utilisateur de l’application

Les variables d’environnement pertinentes pour la personnalisation de l’interface utilisateur sont les suivantes :

  • UI_CHAT_DESCRIPTION : il s’agit du texte de paragraphe plus petit indiqué sous UI_CHAT_TITLE dans le centre de la page lors du chargement.
    • Type de données : texte
  • UI_CHAT_LOGO : il s’agit de la grande image affichée au centre de la page lors du chargement.
    • Type de données : URL d’image
  • UI_CHAT_TITLE : il s’agit du texte volumineux affiché au centre de la page lors du chargement.
    • Type de données : texte
  • UI_FAVICON : il s’agit du favicon affiché dans la fenêtre/l’onglet du navigateur.
    • Type de données : URL d’image
  • UI_LOGO : ce logo apparaît en haut à gauche de la page et à gauche du titre.
    • Type de données : URL d’image
  • UI_TITLE : titre affiché dans la fenêtre/l’onglet du navigateur. Il apparaît également en haut à gauche de la page par le logo.
    • Type de données : texte
  • UI_SHOW_SHARE_BUTTON : ce bouton apparaît en haut à droite de la page et permet aux utilisateurs de partager une URL de liaison à l’application web.
    • Type de données : booléen, doit entrer True ou False, par défaut la valeur True si elle est vide ou non spécifiée.
  • UI_SHOW_CHAT_HISTORY_BUTTON : ceci s’affiche en haut à droite de la page et à gauche du UI_SHOW_SHARE_BUTTON.
    • Type de données : booléen, doit entrer True ou False, par défaut la valeur True si elle est vide ou non spécifiée.

Pour modifier l’interface utilisateur de l’application, suivez les instructions de l’étape précédente pour ouvrir la page des variables d’environnement de votre application web. Ensuite, utilisez la modification avancée pour ouvrir l’éditeur JSON. En haut du JSON (après le caractère [), collez le bloc de code ci-dessous et personnalisez les valeurs en conséquence :

  {
    "name": "UI_CHAT_DESCRIPTION",
    "value": "This is an example of a UI Chat Description. Chatbots can make mistakes. Check important info and sensitive info.",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_TITLE",
    "value": "This is an example of a UI Chat Title. Start chatting",
    "slotSetting": false
  },
  {
    "name": "UI_FAVICON",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_TITLE",
    "value": "This is an example of a UI Title",
    "slotSetting": false
  },

Activation de l’historique des conversations à l’aide de Cosmos DB

Vous pouvez activer l’historique des conversations pour vos utilisateurs de l’application web. Lorsque vous activez la fonctionnalité, les utilisateurs ont accès à leurs requêtes et réponses précédentes individuelles.

Pour activer l’historique des conversations, déployez ou redéployez votre modèle en tant qu’application web avec Azure OpenAI Studio ou Azure AI Studio et sélectionnez Activer l’historique des conversations dans l’application web.

Capture d’écran de la case à cocher pour activer l’historique des conversations dans Azure OpenAI ou Azure AI Studio.

Important

L’activation de l’historique des conversations crée une instance Azure Cosmos DB dans votre groupe de ressources et entraîne des frais supplémentaires pour le stockage que vous utilisez au-delà des niveaux gratuits.

Après avoir activé l’historique des conversations, vos utilisateurs peuvent l’afficher et le masquer dans le coin supérieur droit de l’application. Lorsque les utilisateurs affichent l’historique des conversations, ils peuvent renommer ou supprimer des conversations. Vous pouvez modifier si les utilisateurs peuvent accéder à cette fonction avec la variable d’environnement UI_SHOW_CHAT_HISTORY_BUTTON spécifiée dans la section précédente. Étant donné que les utilisateurs sont connectés à l’application, les conversations sont automatiquement ordonnées de la plus récente à la plus ancienne. Les conversations sont nommées en fonction de la première requête de la conversation.

Remarque

Les régions Azure populaires telles que la région USA Est peuvent rencontrer des périodes de forte demande, où il se peut qu’il ne soit pas possible de déployer une nouvelle instance de Cosmos DB. Dans ce cas, choisissez de déployer dans une autre région telle que USA Est 2 ou réessayez votre déploiement jusqu’à ce qu’il réussisse. Si le déploiement de Cosmos DB échoue, votre application sera disponible à son URL spécifiée, mais l’historique des conversations ne sera pas disponible. L’activation de l’historique des conversations active également le bouton Afficher l’historique des conversations en haut à droite.

Le déploiement avec l’option d’historique des conversations sélectionnée remplit automatiquement les variables d’environnement suivantes. Il n’est donc pas nécessaire de les modifier, sauf si vous souhaitez changer d’instance Cosmos DB. Il s'agit de :

  • AZURE_COSMOSDB_ACCOUNT : il s’agit du nom du compte Cosmos DB déployé avec votre application web.
    • Type de données : texte
  • AZURE_COSMOSDB_ACCOUNT_KEY : il s’agit d’une variable d’environnement alternative qui est utilisée uniquement lorsque les autorisations ne sont pas accordées via Microsoft Entra ID et que l’authentification basée sur la clé est utilisée à la place.
    • Type de données : texte. Cela n’est normalement pas présent ou rempli.
  • AZURE_COSMOSDB_DATABASE : il s’agit du nom de l’objet de base de données dans Cosmos DB déployé avec votre application web.
    • Type de données : texte, doit être db_conversation_history
  • AZURE_COSMOSDB_CONTAINER : il s’agit du nom de l’objet conteneur de base de données dans Cosmos DB déployé avec votre application web.
    • Type de données : texte, doit être conversations
  • AZURE_COSMOSDB_ACCOUNT : il s’agit du nom du compte Cosmos DB déployé avec votre application web.
    • Type de données : texte

Capture d’écran de l’historique des conversations dans l’application web.

Collecte des commentaires des utilisateurs

Pour collecter les commentaires des utilisateurs, vous pouvez activer un ensemble d’icônes « pouce vers le haut » et « pouces vers le bas » qui s’affichent sur chacune des réponses du chatbot. Cela permet aux utilisateurs d’évaluer la qualité d’une réponse et d’indiquer où des erreurs se produisent à l’aide d’une fenêtre modale « fournir des commentaires négatifs ».

Pour activer cette fonctionnalité, définissez la variable d’environnement suivante sur True :

  • AZURE_COSMOSDB_ENABLE_FEEDBACK : il s’agit du nom du compte Cosmos DB déployé avec votre application web.
    • Type de données : type de données : booléen, doit entrer True ou False

Cela peut être effectué à l’aide des options d’édition avancée ou de modification simples, comme expliqué précédemment. Le code JSON à coller dans l’éditeur JSON d’édition avancée est le suivant :

  {
    "name": "AZURE_COSMOSDB_ENABLE_FEEDBACK",
    "value": "True",
    "slotSetting": false
  },

Connexion à Recherche Azure AI et téléchargement de fichiers en tant que source de données

Utiliser Azure AI Studio

Suivez ce tutoriel sur l’intégration de Recherche Azure AI à AI Studio et le redéploiement de votre application.

Utilisation d’Azure OpenAI Studio

Suivez ce tutoriel sur l’intégration de Recherche Azure AI à OpenAI Studio et redéployez votre application.

Utilisation de variables d’environnement

Pour vous connecter à Recherche Azure AI sans redéployer votre application, vous pouvez modifier les variables d’environnement obligatoires suivantes à l’aide de l’une des options de modification décrites précédemment.

  • DATASOURCE_TYPE : détermine la source de données à utiliser lors de la réponse aux requêtes d’un utilisateur.
    • Type de données : texte. Doit être défini sur AzureCognitiveSearch (ancien nom pour Recherche Azure AI)
  • AZURE_SEARCH_SERVICE: il s’agit du nom de votre instance Recherche Azure AI.
    • Type de données : texte
  • AZURE_SEARCH_INDEX: il s’agit du nom de l’index de votre instance Recherche Azure AI.
    • Type de données : texte
  • AZURE_SEARCH_KEY: il s’agit de la clé d’authentification de votre instance Recherche Azure AI. Facultatif si vous utilisez Microsoft Entra ID pour l’authentification.
    • Type de données : texte

Autres scénarios de personnalisation utilisant des variables d’environnement

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH : indique s’il faut utiliser la recherche sémantique dans Recherche Azure AI.
    • Type de données : booléen, doit être défini sur False si la recherche sémantique n’est pas utilisée.
  • AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG : spécifie le nom de la configuration de recherche sémantique à utiliser si la recherche sémantique est activée.
    • Type de données : texte, valeur par défaut azureml-default.
  • AZURE_SEARCH_INDEX_TOP_K : définit le nombre de documents principaux à récupérer à partir de Recherche Azure AI.
    • Type de données : entier, doit être défini sur 5.
  • AZURE_SEARCH_ENABLE_IN_DOMAIN : limite les réponses aux requêtes liées uniquement à vos données.
    • Type de données : booléen, doit être défini sur True.
  • AZURE_SEARCH_CONTENT_COLUMNS: spécifie la liste des champs de votre index Recherche Azure AI qui contiennent le contenu texte de vos documents, utilisé lors de la formulation d’une réponse de bot.
    • Type de données : texte, la valeur par défaut est content si le déploiement est effectué à partir d’Azure AI Studio ou d’Azure OpenAI Studio,
  • AZURE_SEARCH_FILENAME_COLUMN : spécifie le champ de votre index Recherche AZURE AI qui fournit un identificateur unique des données sources à afficher dans l’interface utilisateur.
    • Type de données : texte, la valeur par défaut est filepath si le déploiement est effectué à partir d’Azure AI Studio ou d’Azure OpenAI Studio,
  • AZURE_SEARCH_TITLE_COLUMN : spécifie le champ de votre index Recherche Azure AI qui fournit un titre ou un en-tête approprié pour votre contenu de données à afficher dans l’interface utilisateur.
    • Type de données : texte, la valeur par défaut est title si le déploiement est effectué à partir d’Azure AI Studio ou d’Azure OpenAI Studio,
  • AZURE_SEARCH_URL_COLUMN : spécifie le champ de votre index Recherche Azure AI qui contient une URL pour le document.
    • Type de données : texte, la valeur par défaut est url si le déploiement est effectué à partir d’Azure AI Studio ou d’Azure OpenAI Studio,
  • AZURE_SEARCH_VECTOR_COLUMNS : spécifie la liste des champs de votre index Recherche Azure AI qui contiennent des incorporations vectorielles de vos documents, utilisées lors de la simulation d’une réponse de bot.
    • Type de données : texte, la valeur par défaut est contentVector si le déploiement est effectué à partir d’Azure AI Studio ou d’Azure OpenAI Studio,
  • AZURE_SEARCH_QUERY_TYPE : spécifie le type de requête à utiliser : simple, semantic, vector, vectorSimpleHybrid ou vectorSemanticHybrid. Ce paramètre est prioritaire sur AZURE_SEARCH_USE_SEMANTIC_SEARCH.
    • Type de données : texte, nous vous recommandons de tester avec vectorSemanticHybrid.
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN : spécifie le champ de votre index Recherche Azure AI qui contient les ID de groupe Microsoft Entra, déterminant le contrôle d’accès au niveau du document.
    • Type de données : texte
  • AZURE_SEARCH_STRICTNESS : spécifie le niveau de rigueur pour le modèle limitant les réponses à vos données.
    • Type de données : entier, doit être défini entre 1 et 5, avec 3 recommandé.
  • AZURE_OPENAI_EMBEDDING_NAME : spécifie le nom du déploiement de votre modèle de déploiement si vous utilisez la recherche vectorielle.
    • Type de données : texte

Le code JSON à coller dans l’éditeur JSON d’édition avancée est le suivant :

{
    "name": "AZURE_SEARCH_CONTENT_COLUMNS",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_ENABLE_IN_DOMAIN",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_FILENAME_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_INDEX",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_KEY",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_QUERY_TYPE",
    "value": "vectorSemanticHybrid",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG",
    "value": "azureml-default",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SERVICE",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_STRICTNESS",
    "value": "3",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TITLE_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TOP_K",
    "value": "5",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_URL_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_USE_SEMANTIC_SEARCH",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_VECTOR_COLUMNS",
    "value": "contentVector",
    "slotSetting": false
  },

Connexion au flux d’invite en tant que source de données

Les flux d’invite vous permettent de définir une logique de traitement et de RAG hautement personnalisable sur les requêtes d’un utilisateur.

Création et déploiement de votre flux d’invite dans Azure AI Studio

Suivez ce tutoriel pour créer, tester et déployer un point de terminaison d’inférence pour votre flux d’invite dans Azure AI Studio.

Activer les citations sous-jacentes à partir de votre flux d’invite

Lors de la configuration de votre flux d’invite pour afficher des citations lors de l’intégration de cette application web, il doit retourner deux sorties clés : une appelée documents (vos citations) et une appelée reply (votre réponse en langage naturel).

  1. documents est un objet JSON, qui doit contenir les éléments suivants. citations est une liste qui peut contenir plusieurs éléments suivant le même schéma. l’objet documents doit être généré et rempli en fonction de votre modèle RAG sélectionné.
{
    "citations": [
        {
                "content": "string",
                "id": 12345,
                "title": "string",
                "filepath": "string",
                "url": "string",
                "metadata": "string",
                "chunk_id": None,
                "reindex_id": None,
                "part_index": None
        }
    ],
    "intent": "Your_string_here"
}
  1. reply se compose d’une chaîne retournée qui représente le langage naturel final à une requête utilisateur donnée. Votre reply doit contenir des références à chacun des documents (sources) au format suivant : [doc1], [doc2], etc. L’application web analyse reply et traite les références, en remplaçant toutes les instances de [doc1] avec de petits indicateurs numériques exposants qui renvoient directement au documents ordonnés qui sont renvoyés. Par conséquent, vous devez inviter votre LLM qui génère le langage naturel final pour inclure ces références, qui doivent également être passées dans votre appel LLM pour vous assurer qu’elles s’alignent correctement. Par exemple :
system:
You are a helpful chat assistant that answers a user's question based on the information retrieved from a data source. 

YOU MUST ALWAYS USE CITATIONS FOR ALL FACTUAL RESPONSES. YOU MUST INCLUDE CITATIONS IN YOUR ANSWER IN THE FORMAT [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.

Provide sort and concise answers with details directly related to the query. 

## Conversation history for context
{% for item in chat_history %}
user:
{{item.inputs.query}}

assistant:
{{item.outputs.reply}}
{% endfor %}

## Current question
user:
### HERE ARE SOME CITED SOURCE INFORMATION FROM A MOCKED API TO ASSIST WITH ANSWERING THE QUESTION BELOW. ANSWER ONLY BASED ON THE TRUTHS PRESENTED HERE.
{{your_input_name_for_documents}}
FOR EACH OF THE CITATIONS ABOVE, YOU MUST INCLUDE IN YOUR ANSWER [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
### HERE IS THE QUESTION TO ANSWER.
{{question}}
  

Configuration des variables d’environnement pour intégrer le flux d’invite

Les variables d’environnement à modifier sont les suivantes :

  • AZURE_OPENAI_STREAM : détermine si la réponse est chargée dans un format de streaming (chargement incrémentiel). Cela n’est pas pris en charge pour le flux d’invite et doit donc être défini sur False pour utiliser cette fonctionnalité.
    • Type de données : booléen, défini sur True si le flux d’invite n’est pas utilisé, False si vous utilisez le flux d’invite
  • USE_PROMPTFLOW : indique s’il faut utiliser un point de terminaison déployé de flux d’invite existant. Si la valeur est définie sur True, les deux PROMPTFLOW_ENDPOINT et PROMPTFLOW_API_KEY doivent être définies.
    • Type de données : booléen, doit être défini sur False si le flux d’invite n’est pas utilisé.
  • PROMPTFLOW_ENDPOINT : spécifie l’URL du point de terminaison de flux d’invite déployé.
    • Type de données : texte, par exemple https://pf-deployment-name.region.inference.ml.azure.com/score
  • PROMPTFLOW_API_KEY : clé d’authentification pour le point de terminaison de flux d’invite déployé. Remarque : seule l’authentification basée sur des clés est prise en charge.
    • Type de données : texte
  • PROMPTFLOW_RESPONSE_TIMEOUT : définit la valeur de délai d’expiration en secondes pour que le point de terminaison de flux d’invite réponde.
    • Type de données : entier, doit être défini sur 120.
  • PROMPTFLOW_REQUEST_FIELD_NAME : nom de champ par défaut pour construire la demande de flux d’invite. Remarque : chat_history est automatiquement construite en fonction de l’interaction. Si votre API attend d’autres champs obligatoires, vous devez modifier les paramètres de la requête sous la fonction promptflow_request.
    • Type de données : texte, doit être défini sur query.
  • PROMPTFLOW_RESPONSE_FIELD_NAME : nom de champ par défaut pour traiter la réponse de la demande de flux d’invite.
    • Type de données : texte, doit être défini sur reply.
  • PROMPTFLOW_CITATIONS_FIELD_NAME : nom de champ par défaut pour traiter la sortie des citations de la demande de flux d’invite.
    • Type de données : texte, doit être défini sur documents.

Connexion à d’autres sources de données

D’autres sources de données sont prises en charge, notamment :

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Pinecone
  • Index Azure Machine Learning

Pour obtenir des instructions supplémentaires sur l’activation de ces sources de données, consultez le référentiel GitHub.

Mise à jour de l’application web pour inclure les dernières modifications

Remarque

Depuis le 1er février 2024, l’application web nécessite que la commande de démarrage de l’application soit définie sur python3 -m gunicorn app:app. Lors de la mise à jour d’une application publiée avant le 1er février 2024, vous devez ajouter manuellement la commande de démarrage à partir de la page Configuration App Service.

Nous recommandons d’extraire fréquemment les modifications de code source de l’application web de la branche main pour garantir que vous disposez des correctifs de bogues, des versions d’API et des améliorations les plus récents. En outre, l’application web doit être synchronisée chaque fois que la version d’API utilisée est mise hors service. Pensez à cliquer sur les boutons Horloge ou Étoile du référentiel GitHub de l’application web pour être informé des modifications et des mises à jour apportées au code source.

Si vous n’avez pas personnalisé l’application web, vous pouvez utiliser ces étapes pour la synchroniser :

  1. Accédez à votre application web sur le Portail Azure.

  2. Dans le menu de gauche, sous Déploiement, sélectionnez Centre de déploiement.

  3. Sélectionnez Synchroniser en haut du volet, puis confirmez que l’application sera redéployée.

    Capture d’écran du bouton de synchronisation de l’application web sur le Portail Azure.

Si vous avez personnalisé ou modifié le code source de l’application, vous devez mettre à jour le code source de votre application manuellement et le redéployer :

  • Si votre application est hébergée sur GitHub, envoyez (push) vos modifications de code sur votre référentiel, puis utilisez les étapes de synchronisation ci-dessous.
  • Si vous redéployez l’application manuellement (par exemple, avec Azure CLI), suivez les étapes de votre stratégie de déploiement.

Supprimer votre instance Cosmos DB

La suppression de votre application Web ne supprime pas automatiquement votre instance Cosmos DB. Pour supprimer votre instance Cosmos DB, ainsi que toutes les conversations stockées, vous devez accéder à la ressource associée sur le Portail Azure et la supprimer. Si vous supprimez la ressource Cosmos DB mais que vous conservez l’option d’historique des discussions sélectionnée lors des mises à jour ultérieures d’Azure OpenAI Studio, l’application avertit l’utilisateur d’une erreur de connexion. Cependant, l'utilisateur peut continuer à utiliser l'application Web sans accès à l'historique des discussions.

Activation de l'authentification Microsoft Entra ID entre les services

Pour activer Microsoft Entra ID pour l’authentification intra-service pour votre application Web, procédez comme suit.

Activer l'identité gérée sur votre ressource Azure OpenAI et Azure App Service

Vous pouvez activer l’identité managée pour la ressource Azure OpenAI et Azure App Service en accédant à « Identité » et en activant l’identité managée attribuée par le système dans le Portail Microsoft Azure pour chaque ressource.

Capture d’écran qui montre la configuration de l’identité de l’application dans le Portail Microsoft Azure.

Remarque

Si vous utilisez un modèle d’intégration déployé sur la même ressource utilisée pour l’inférence, vous n’avez besoin d’activer l’identité managée que sur une seule ressource Azure OpenAI. Si vous utilisez un modèle d’intégration déployé sur une ressource différente de celle utilisée pour l’inférence, vous devez également activer l’identité managée sur la ressource Azure OpenAI utilisée pour déployer votre modèle d’intégration.

Activer le contrôle d'accès basé sur les rôles (RBAC) sur votre ressource Azure Search (facultatif)

Si vous utilisez On Your Data avec Azure Search, vous devez suivre cette étape.

Pour permettre à votre ressource Azure OpenAI d’accéder à votre ressource Azure Search, vous devez activer le contrôle d’accès basé sur les rôles sur votre ressource Azure Search. En savoir plus sur l’activation des rôles RBAC pour vos ressources.

Attribuer des rôles RBAC pour permettre la communication intra-service

Le tableau suivant résume les attributions de rôles RBAC nécessaires pour toutes les ressources Azure associées à votre application.

Rôle Destinataire Ressource
Search Index Data Reader Azure OpenAI (inférence) Recherche Azure AI
Search Service Contributor Azure OpenAI (inférence) Recherche Azure AI
Cognitive Services OpenAI User Application web Azure OpenAI (inférence)
Cognitive Services OpenAI User Azure OpenAI (inférence) Azure OpenAI (Incorporations)

Pour attribuer ces rôles, suivez ces instructions pour créer les attributions de rôles nécessaires.

Modifications des paramètres de l'application

Dans les paramètres de l'application Web, accédez à « Variables d'environnement » et apportez les modifications suivantes :

  • Supprimez la variable d’environnement AZURE_OPENAI_KEY, car elle n’est plus nécessaire.
  • Si vous utilisez On Your Data avec Azure Search et que vous utilisez l’authentification Microsoft Entra ID entre Azure OpenAI et Azure Search, vous devez également supprimer les variables d’environnement AZURE_SEARCH_KEY pour les clés d’accès à la source de données.

Si vous utilisez un modèle d'intégration déployé sur la même ressource que votre modèle utilisé pour l'inférence, aucune autre modification de paramètres n'est requise.

Toutefois, si vous utilisez un modèle d'intégration déployé sur une ressource différente, apportez les modifications supplémentaires suivantes aux variables d'environnement de votre application :

  • Définissez la variable AZURE_OPENAI_EMBEDDING_ENDPOINT sur le chemin d'accès complet de l'API d'intégration pour la ressource que vous utilisez pour les intégrations, par exemple, https://<your embedding AOAI resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
  • Supprimez la variable AZURE_OPENAI_EMBEDDING_KEY pour utiliser l’authentification Microsoft Entra ID.

Une fois toutes les modifications des variables d’environnement terminées, redémarrez l’application Web pour commencer à utiliser l’authentification Microsoft Entra ID entre les services de l’application Web. Il faudra quelques minutes après le redémarrage pour que les modifications des paramètres prennent effet.