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.
Dans ce guide, vous créez une application de conversation IA et effectuez une itération à l’invite à l’aide de la configuration de saisie semi-automatique de conversation chargée dynamiquement à partir d’Azure App Configuration.
L’exemple de code source complet est disponible dans le référentiel Azure App Configuration GitHub.
Prerequisites
- Suivez le tutoriel pour créer une configuration de finalisation de chat.
- Python 3.9 ou version ultérieure : pour plus d’informations sur la configuration de Python sur Windows, consultez la documentation Python sur Windows.
Créer une application console
Créez un répertoire pour votre projet et accédez-y :
mkdir chatapp-quickstart cd chatapp-quickstartInstallez les packages Python requis :
pip install azure-appconfiguration-provider pip install azure-identity pip install azure-ai-projectsCréez un fichier nommé
app.pyet ajoutez les instructions d’importation suivantes :import os from azure.appconfiguration.provider import load, SettingSelector, WatchKey from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClientCréez une fonction pour charger la configuration à partir d’Azure App Configuration.
Vous pouvez vous connecter à App Configuration à l’aide de Microsoft Entra ID (recommandé) ou d’une chaîne de connexion. Dans cet exemple, vous utilisez Microsoft Entra ID avec
DefaultAzureCredentialpour vous authentifier auprès de votre magasin App Configuration. Suivez ces instructions pour attribuer le rôle Lecteur de données App Configuration à l’identité représentée parDefaultAzureCredential. Veillez à laisser suffisamment de temps pour que l’autorisation se propage avant d’exécuter votre application.credential = DefaultAzureCredential() def load_azure_app_configuration(): endpoint = os.environ.get("AZURE_APPCONFIGURATION_ENDPOINT") if not endpoint: raise ValueError("AZURE_APPCONFIGURATION_ENDPOINT environment variable is not set") config = load( endpoint=endpoint, credential=credential, # Load all keys that start with "ChatApp:" and have no label selectors=[SettingSelector(key_filter="ChatApp:*")], trim_prefixes=["ChatApp:"], # Reload configuration if the ChatCompletion key has changed. # Use the default refresh interval of 30 seconds. It can be overridden via refresh_interval. refresh_on=[WatchKey("ChatApp:ChatCompletion")], ) return configCréez une fonction pour obtenir des réponses IA à partir du client de conversation :
def get_ai_response(client, config, chat_conversation): chat_completion_config = config["ChatCompletion"] messages = [] # Add configured messages (system, user, assistant) for msg in chat_completion_config["messages"]: messages.append({"role": msg["role"], "content": msg["content"]}) # Add the chat conversation history messages.extend(chat_conversation) # Create chat completion response = client.complete( model=chat_completion_config["model"], messages=messages, ) return response.choices[0].message.contentCréez la fonction principale qui configure le client de conversation et exécute la boucle de conversation.
Créez une instance de l’instance
AIProjectClientpour vous connecter à votre projet Azure AI Foundry. Vous utilisezDefaultAzureCredentialpour vous authentifier. Attribuez le rôle d’utilisateur OpenAI Cognitive Services à l’identité représentée parDefaultAzureCredential. Pour obtenir des instructions détaillées, consultez le guide sur le contrôle d’accès en fonction du rôle pour le service Azure OpenAI. Veillez à laisser suffisamment de temps pour que l’autorisation se propage avant d’exécuter votre application.def main(): config = load_azure_app_configuration() # Create a project client using Microsoft Entra ID project_client = AIProjectClient( endpoint=config["AzureAIFoundry:Endpoint"], credential=credential, ) openai_client = project_client.get_openai_client() # Initialize chat conversation chat_conversation = [] print("Chat started! What's on your mind?") while True: # Refresh the configuration from Azure App Configuration config.refresh() # Get user input user_input = input("You: ") # Exit if user input is empty if not user_input: print("Exiting Chat. Goodbye!") break # Add user message to chat conversation chat_conversation.append({"role": "user", "content": user_input}) # Get AI response and add it to chat conversation response = get_ai_response(openai_client, config, chat_conversation) print(f"AI: {response}\n") chat_conversation.append({"role": "assistant", "content": response}) if __name__ == "__main__": main()Une fois les étapes précédentes terminées, votre
app.pyfichier doit maintenant contenir l’implémentation complète, comme indiqué ci-dessous :import os from azure.appconfiguration.provider import load, SettingSelector, WatchKey from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient credential = DefaultAzureCredential() def load_azure_app_configuration(): endpoint = os.environ.get("AZURE_APPCONFIGURATION_ENDPOINT") if not endpoint: raise ValueError("AZURE_APPCONFIGURATION_ENDPOINT environment variable is not set") config = load( endpoint=endpoint, credential=credential, # Load all keys that start with "ChatApp:" and have no label selectors=[SettingSelector(key_filter="ChatApp:*")], trim_prefixes=["ChatApp:"], # Reload configuration if the ChatCompletion key has changed. # Use the default refresh interval of 30 seconds. It can be overridden via refresh_interval. refresh_on=[WatchKey("ChatApp:ChatCompletion")], ) return config def get_ai_response(client, config, chat_conversation): chat_completion_config = config["ChatCompletion"] messages = [] # Add configured messages (system, user, assistant) for msg in chat_completion_config["messages"]: messages.append({"role": msg["role"], "content": msg["content"]}) # Add the chat conversation history messages.extend(chat_conversation) # Create chat completion response = client.chat.completions.create( model=chat_completion_config["model"], messages=messages, max_completion_tokens=chat_completion_config["max_completion_tokens"], ) return response.choices[0].message.content def main(): config = load_azure_app_configuration() # Create a project client using Microsoft Entra ID project_client = AIProjectClient( endpoint=config["AzureAIFoundry:Endpoint"], credential=credential, ) openai_client = project_client.get_openai_client() # Initialize chat conversation chat_conversation = [] print("Chat started! What's on your mind?") while True: # Refresh the configuration from Azure App Configuration config.refresh() # Get user input user_input = input("You: ") # Exit if user input is empty if not user_input: print("Exiting Chat. Goodbye!") break # Add user message to chat conversation chat_conversation.append({"role": "user", "content": user_input}) # Get AI response and add it to chat conversation response = get_ai_response(openai_client, config, chat_conversation) print(f"AI: {response}\n") chat_conversation.append({"role": "assistant", "content": response}) if __name__ == "__main__": main()
Générer et exécuter l’application
Définissez la variable d’environnement nommée AZURE_APPCONFIGURATION_ENDPOINT sur le point de terminaison de votre magasin App Configuration trouvé sous la vue d’ensemble de votre magasin dans le portail Azure.
Si vous utilisez l’invite de commandes Windows, exécutez la commande suivante et redémarrez l’invite de commandes pour autoriser la modification à prendre effet :
setx AZURE_APPCONFIGURATION_ENDPOINT "<endpoint-of-your-app-configuration-store>"Si vous utilisez PowerShell, exécutez la commande suivante :
$Env:AZURE_APPCONFIGURATION_ENDPOINT = "<endpoint-of-your-app-configuration-store>"Si vous utilisez macOS ou Linux, exécutez la commande suivante :
export AZURE_APPCONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'Une fois la variable d’environnement correctement définie, exécutez la commande suivante pour exécuter votre application :
python app.pyTapez le message « Quel est votre nom ? » lorsque le message « Vous : » s'affiche, puis appuyez sur la touche Entrée.
Chat started! What's on your mind? You: What is your name? AI: I'm your helpful assistant! I don't have a personal name, but you can call me whatever you'd like. 😊 Do you have a name in mind?Dans le portail Azure, sélectionnez l’instance du magasin App Configuration que vous avez créée. Dans le menu Opérations , sélectionnez l’Explorateur de configuration et sélectionnez la clé ChatApp :ChatCompletion . Mettez à jour la valeur de la propriété Messages :
- Rôle : système
- Contenu : « Vous êtes un pirate et votre nom est Eddy. »
Tapez le même message lorsque vous y êtes invité avec « Vous : ». Veillez à patienter quelques instants pour que l’intervalle d’actualisation s’écoule, puis appuyez sur la touche Entrée pour afficher la réponse IA mise à jour dans la sortie.
Chat started! What's on your mind? You: What is your name? AI: I'm your helpful assistant! I don't have a personal name, but you can call me whatever you'd like. 😊 Do you have a name in mind? You: What is your name? AI: Arrr, matey! Me name be Eddy, the most fearsome pirate to ever sail the seven seas! What be yer name, landlubber?